प्रौद्योगिकी साझेदारी

कृत्रिम बुद्धि एल्गोरिदम अभियंता (मध्यम) पाठ्यक्रम 8-PyTorch तंत्रिका संजाल तंत्रिका संजाल मूलभूत एवं कोड विस्तृत व्याख्या

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

नमस्कारः सर्वेभ्यः, अहं Wei Xue AI अद्य अहं भवद्भ्यः Artificial Intelligence Algorithm Engineer (Intermediate) Course 8-PyTorch Neural Network इत्यस्य न्यूरल नेटवर्क् फाउण्डेशनस्य विस्तृतव्याख्यानस्य परिचयं करिष्यामि। तंत्रिकाजालं एकं कम्प्यूटिंग्-प्रतिरूपं भवति यत् मानवमस्तिष्के न्यूरॉन्-सम्बद्धस्य अनुकरणं करोति, तस्य उपयोगः चित्रपरिचयः, प्राकृतिकभाषाप्रक्रियाकरणम् इत्यादिषु क्षेत्रेषु च व्यापकरूपेण भवति अस्मिन् लेखे तंत्रिकाजालस्य अवधारणा, संरचना, नमूनानि, प्रशिक्षणं, मूल्याङ्कनं च, सम्पूर्णं चालनीयं कोडं च परिचयः भविष्यति ।

तंत्रिकाजालस्य मूलभूतविषयाणां तथा कोडस्य विस्तृतव्याख्यानम्

1. तंत्रिकाजालस्य अवधारणा

तंत्रिकाजालस्य बहूनां नोड्स् (अथवा न्यूरॉन्) एतेषां ग्रन्थिनां संयोजनं कुर्वन्तः किनारेः च भवन्ति । प्रत्येकं नोडं न्यूरॉन् प्रतिनिधियति, प्रत्येकं धारं न्यूरॉन् मध्ये सम्बन्धं प्रतिनिधियति । तंत्रिकाजालस्य मुख्यं कार्यं निवेशदत्तांशस्य भारितसमीकरणस्य अरैखिकरूपान्तरणस्य च माध्यमेन दत्तांशतः उपयोगीसूचनाः निष्कासयितुं भवति

2. तंत्रिकाजालस्य संरचना

तंत्रिकाजालं प्रायः निवेशस्तरः, गुप्तस्तरः, निर्गमस्तरः च इति विभक्ताः भवन्ति । निवेशस्तरः बाह्यदत्तांशं प्राप्नोति, गुप्तस्तरः दत्तांशं संसाधयति, निर्गमस्तरः च अन्तिमपरिणामं निर्गच्छति । प्रत्येकं स्तरस्य नोड्स् अग्रिमस्तरस्य नोड्स् इत्यनेन सह सम्बद्धाः भवन्ति, प्रत्येकस्य संयोजनस्य तदनुरूपं भारं भवति ।

२.१ तंत्रिकाजालगणनासूत्रम्

तंत्रिकाजालस्य निर्गमस्य गणना निम्नलिखितसूत्रेण कर्तुं शक्यते ।
क ( ल ) = च ( झ ( ल ) ) क^{(ल)} = च(झ^{(ल)}) .एकः()=(z())
z ( l ) = w ( l ) a ( l − 1 ) + b ( l ) z^{(l)} = w^{(l)}a^{(l-1)} + b^{(l )} २.z()=w()एकः(1)+()
इत्यस्मिन्‌, अ ( ल ) अ^{(ल)}एकः() प्रथमं सूचयति ll स्तरस्य निर्गमः, २. z ( ल ) z^{(l)} .z() प्रथमं सूचयति ll स्तरानाम् भारितयोगफलं, . w ( ल ) w^{(l)} .w() तथा ख ( ल ) ख^{(ल)}() क्रमशः प्रतिनिधित्व करें ll स्तरभाराः पूर्वाग्रहाः च, २. च ( ⋅ ) च(cdot) .() सक्रियकरणकार्यं प्रतिनिधियति ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

२.२ चालनीयः कोडः

अत्र सरलस्य तंत्रिकाजालसंरचनायाः उदाहरणम् अस्ति : १.

import numpy as np
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
def feedforward(X, weights, biases):
    a = X
    for w, b in zip(weights, biases):
        z = np.dot(a, w) + b
        a = sigmoid(z)
    return a
# 定义输入数据
X = np.array([[1, 2], [3, 4]])
# 定义权重和偏置
weights = [np.array([[0.1, 0.2], [0.3, 0.4]]), np.array([[0.5], [0.6]])]
biases = [np.array([0.1, 0.2]), np.array([0.3])]
# 计算输出
output = feedforward(X, weights, biases)
print(output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3. तंत्रिकाजालस्य नमूना

तंत्रिकाजालस्य नमूनायां निवेशदत्तांशः तत्सम्बद्धानि लेबलानि च सन्ति । प्रशिक्षणप्रक्रियायाः कालखण्डे तंत्रिकाजालं निरन्तरं भारं पूर्वाग्रहं च समायोजयति यत् उत्पादनं लेबलस्य यथासम्भवं समीपे भवति ।

३.१ हानिकार्यम्

तंत्रिकाजालस्य प्रशिक्षणलक्ष्यं हानिकार्यं न्यूनीकर्तुं भवति सामान्यतया प्रयुक्तेषु हानिकार्येषु औसतवर्गदोषः (MSE) तथा पार-एन्ट्रोपीहानिः च सन्ति । मध्यमवर्गदोषस्य सूत्रं यथा भवति ।
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ( i ) − a ( i ) ) 2 J(w, b) = frac{1}{2m}योग_{i=1}^{m }(य^{(इ)} - क^{(इ)})^2जे(w,)=2पु1अहम्‌=1पु(य्(अहम्‌)एकः(अहम्‌))2
इत्यस्मिन्‌, मि.मीपु नमूनानां संख्यां प्रतिनिधियति, . य ( इ ) य^{(इ)}य्(अहम्‌) तथा क ( इ ) क^{(इ)}एकः(अहम्‌) क्रमशः प्रतिनिधित्व करें iiअहम्‌ लेबल् तथा नमूनानां पूर्वानुमानितमूल्यानि।

३.२ चालनीयः कोडः

अत्र नमूनाजननस्य हानिगणनायाश्च सरलं उदाहरणम् अस्ति ।

import numpy as np
def mse_loss(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)
# 定义标签
y_true = np.array([[1], [0]])
# 计算损失
loss = mse_loss(y_true, output)
print(loss)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4. तंत्रिकाजालस्य प्रशिक्षणम्

तंत्रिकाजालस्य प्रशिक्षणप्रक्रियायां अग्रे प्रसारणं पृष्ठप्रसारणं च भवति । अग्रे प्रसारणं तंत्रिकाजालस्य निर्गमस्य गणनां करोति, पृष्ठप्रसारणं च भारस्य पूर्वाग्रहस्य च विषये हानिकार्यस्य ढालस्य गणनां करोति, भारस्य पूर्वाग्रहस्य च अद्यतनीकरणं करोति

४.१ पृष्ठप्रसारः

बैकप्रोपैगेशन एल्गोरिदम् श्रृङ्खलानियमद्वारा ढालस्य गणनां करोति ।प्रथमस्य हि ll स्तरभारः w ( ल ) w^{(l)} .w(), तस्य ढालः यथा व्यक्तं कर्तुं शक्यते :
∂ J ∂ w ( l ) = a ( l − 1 ) ⋅ ( f ′ ( z ( l ) ) ⋅ δ ( l ) ) frac{partial J}{आंशिक w^{(l)}} = a^{( l-1)} cdot (f'(z^{(l)}) cdot डेल्टा^{(l)})w()जे=एकः(1)((z())δ())
इत्यस्मिन्‌, δ ( ल ) डेल्टा^{(l)} .δ() प्रथमं सूचयति ll स्तरदोषः, २. च ′ ( ⋅ ) च'(cdot) .() सक्रियकरणकार्यस्य व्युत्पन्नं प्रतिनिधियति ।

४.२ तंत्रिकाजालप्रशिक्षणस्य कोडः

अत्र सरलं तंत्रिकाजालप्रशिक्षणस्य उदाहरणम् अस्ति :

import numpy as np
def sigmoid_derivative(x):
    return sigmoid(x) * (1 - sigmoid(x))
def backpropagation(X, y_true, weights, biases):
    gradients_w = [np.zeros(w.shape) for w in weights]
    gradients_b = [np.zeros(b.shape) for b in biases]
    # 前向传播
    a = X
    activations = [a]
    zs = []
    for w, b in zip(weights, biases):
        z = np.dot(a, w) + b
        zs.append(z)
        a = sigmoid(z)
        activations.append(a)
    # 计算输出层误差
    delta = activations[-1] - y_true
    gradients_b[-1] = delta
    gradients_w[-1] = np.dot(activations[-2].T, delta)
    # 反向传播
    for l in range(2, len(weights) + 1):
        z = zs[-l]
        sp = sigmoid_derivative(z)
        delta = np.dot(delta, weights[-l + 1].T) * sp
        gradients_b[-l] = delta
        gradients_w[-l] = np.dot(activations[-l - 1].T, delta)
    return gradients_w, gradients_b
# 定义学习率
learning_rate = 0.1
# 进行一次梯度下降
gradients_w, gradients_b = backpropagation(X, y_true, weights, biases)
# 更新权重和偏置
for w, grad_w in zip(weights, gradients_w):
    w -= learning_rate * grad_w
for b, grad_b in zip(biases, gradients_b):
    b -= learning_rate * grad_b
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

5. तंत्रिकाजालस्य मूल्याङ्कनम्

तंत्रिकाजालस्य मूल्याङ्कनं प्रायः परीक्षणसमूहे सटीकता अथवा हानिकार्यमूल्यं गणयित्वा क्रियते । सटीकता प्रतिरूपेण सम्यक् पूर्वानुमानितस्य नमूनानां संख्यायाः कुलनमूनानां संख्यायाः अनुपातं निर्दिशति ।

५.१ सटीकता

सटीकतायाः गणनासूत्रं यथा भवति ।
सटीकता = सम्यक् भविष्यवाणीनां संख्या भविष्यवाणीनां कुलसंख्या text{Accuracy} = frac{text{समीचीन भविष्यवाणीनां संख्या}}{text{भविष्यवाणीनां कुलसंख्या}}विशुद्धता=भविष्यवाणीनां कुलसंख्यासम्यक् भविष्यवाणीनां संख्या

५.२ संहिता कार्यान्वयनम्

अत्र सरलं तंत्रिकाजालमूल्यांकनस्य उदाहरणम् अस्ति :

def predict(X, weights, biases):
    a = X
    for w, b in zip(weights, biases):
        z = np.dot(a, w) + b
        a = sigmoid(z)
    return np.round(a)
# 定义测试数据
X_test = np.array([[2, 3], [4, 5]])
# 进行预测
predictions = predict(X_test, weights, biases)
print(predictions)
# 计算准确率
y_test = np.array([[1], [0]])
accuracy = np.mean(predictions == y_test)
print("Accuracy:", accuracy)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

सारांशं कुरुत

अस्मिन् लेखे वयं सरलं तंत्रिकाजालं कार्यान्वितवन्तः, यत्र अग्रे प्रसारणं, पृष्ठप्रसारणं, ढाल-अवरोहणं, मूल्याङ्कनप्रक्रिया च सन्ति । यद्यपि एतत् जालं सरलं भवति तथापि एतत् तंत्रिकाजालस्य मूलभूतसिद्धान्तान् कार्यान्वयनपद्धतिं च प्रदर्शयति । व्यावहारिक-अनुप्रयोगेषु तंत्रिका-जालस्य संरचना अधिका जटिला भविष्यति, यत्र अधिकानि स्तराः, नोड्स् च सन्ति, तथैव अधिक-उन्नत-अनुकूलन-एल्गोरिदम्, नियमितीकरण-प्रविधयः च सन्ति तदतिरिक्तं आधुनिकगहनशिक्षणरूपरेखा (यथा TensorFlow तथा PyTorch) अधिकं कुशलं कार्यान्वयनम् स्वचालितभेदकार्यं च प्रदाति, येन तंत्रिकाजालस्य निर्माणं प्रशिक्षणं च अधिकं सुविधाजनकं भवति