2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
नमस्कारः सर्वेभ्यः, अहं Wei Xue AI अद्य अहं भवद्भ्यः Artificial Intelligence Algorithm Engineer (Intermediate) Course 8-PyTorch Neural Network इत्यस्य न्यूरल नेटवर्क् फाउण्डेशनस्य विस्तृतव्याख्यानस्य परिचयं करिष्यामि। तंत्रिकाजालं एकं कम्प्यूटिंग्-प्रतिरूपं भवति यत् मानवमस्तिष्के न्यूरॉन्-सम्बद्धस्य अनुकरणं करोति, तस्य उपयोगः चित्रपरिचयः, प्राकृतिकभाषाप्रक्रियाकरणम् इत्यादिषु क्षेत्रेषु च व्यापकरूपेण भवति अस्मिन् लेखे तंत्रिकाजालस्य अवधारणा, संरचना, नमूनानि, प्रशिक्षणं, मूल्याङ्कनं च, सम्पूर्णं चालनीयं कोडं च परिचयः भविष्यति ।
तंत्रिकाजालस्य बहूनां नोड्स् (अथवा न्यूरॉन्) एतेषां ग्रन्थिनां संयोजनं कुर्वन्तः किनारेः च भवन्ति । प्रत्येकं नोडं न्यूरॉन् प्रतिनिधियति, प्रत्येकं धारं न्यूरॉन् मध्ये सम्बन्धं प्रतिनिधियति । तंत्रिकाजालस्य मुख्यं कार्यं निवेशदत्तांशस्य भारितसमीकरणस्य अरैखिकरूपान्तरणस्य च माध्यमेन दत्तांशतः उपयोगीसूचनाः निष्कासयितुं भवति
तंत्रिकाजालं प्रायः निवेशस्तरः, गुप्तस्तरः, निर्गमस्तरः च इति विभक्ताः भवन्ति । निवेशस्तरः बाह्यदत्तांशं प्राप्नोति, गुप्तस्तरः दत्तांशं संसाधयति, निर्गमस्तरः च अन्तिमपरिणामं निर्गच्छति । प्रत्येकं स्तरस्य नोड्स् अग्रिमस्तरस्य नोड्स् इत्यनेन सह सम्बद्धाः भवन्ति, प्रत्येकस्य संयोजनस्य तदनुरूपं भारं भवति ।
तंत्रिकाजालस्य निर्गमस्य गणना निम्नलिखितसूत्रेण कर्तुं शक्यते ।
क ( ल ) = च ( झ ( ल ) ) क^{(ल)} = च(झ^{(ल)}) .एकः(ल)=च(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)
तंत्रिकाजालस्य नमूनायां निवेशदत्तांशः तत्सम्बद्धानि लेबलानि च सन्ति । प्रशिक्षणप्रक्रियायाः कालखण्डे तंत्रिकाजालं निरन्तरं भारं पूर्वाग्रहं च समायोजयति यत् उत्पादनं लेबलस्य यथासम्भवं समीपे भवति ।
तंत्रिकाजालस्य प्रशिक्षणलक्ष्यं हानिकार्यं न्यूनीकर्तुं भवति सामान्यतया प्रयुक्तेषु हानिकार्येषु औसतवर्गदोषः (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)
तंत्रिकाजालस्य प्रशिक्षणप्रक्रियायां अग्रे प्रसारणं पृष्ठप्रसारणं च भवति । अग्रे प्रसारणं तंत्रिकाजालस्य निर्गमस्य गणनां करोति, पृष्ठप्रसारणं च भारस्य पूर्वाग्रहस्य च विषये हानिकार्यस्य ढालस्य गणनां करोति, भारस्य पूर्वाग्रहस्य च अद्यतनीकरणं करोति
बैकप्रोपैगेशन एल्गोरिदम् श्रृङ्खलानियमद्वारा ढालस्य गणनां करोति ।प्रथमस्य हि 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
तंत्रिकाजालस्य मूल्याङ्कनं प्रायः परीक्षणसमूहे सटीकता अथवा हानिकार्यमूल्यं गणयित्वा क्रियते । सटीकता प्रतिरूपेण सम्यक् पूर्वानुमानितस्य नमूनानां संख्यायाः कुलनमूनानां संख्यायाः अनुपातं निर्दिशति ।
सटीकतायाः गणनासूत्रं यथा भवति ।
सटीकता = सम्यक् भविष्यवाणीनां संख्या भविष्यवाणीनां कुलसंख्या 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)
अस्मिन् लेखे वयं सरलं तंत्रिकाजालं कार्यान्वितवन्तः, यत्र अग्रे प्रसारणं, पृष्ठप्रसारणं, ढाल-अवरोहणं, मूल्याङ्कनप्रक्रिया च सन्ति । यद्यपि एतत् जालं सरलं भवति तथापि एतत् तंत्रिकाजालस्य मूलभूतसिद्धान्तान् कार्यान्वयनपद्धतिं च प्रदर्शयति । व्यावहारिक-अनुप्रयोगेषु तंत्रिका-जालस्य संरचना अधिका जटिला भविष्यति, यत्र अधिकानि स्तराः, नोड्स् च सन्ति, तथैव अधिक-उन्नत-अनुकूलन-एल्गोरिदम्, नियमितीकरण-प्रविधयः च सन्ति तदतिरिक्तं आधुनिकगहनशिक्षणरूपरेखा (यथा TensorFlow तथा PyTorch) अधिकं कुशलं कार्यान्वयनम् स्वचालितभेदकार्यं च प्रदाति, येन तंत्रिकाजालस्य निर्माणं प्रशिक्षणं च अधिकं सुविधाजनकं भवति