Neural Network Training
الانتشار الأمامي والانتشار الخلفي وتحديث الأوزان والوصول إلى التقارب
🎯 Lab Objectives
- Implement a small neural network in MATLAB.
- Calculate forward propagation step by step.
- Calculate the loss function.
- Implement backpropagation using analytical gradients.
- Update weights using gradient descent.
- Stop training when the error becomes smaller than ε.
🎯 أهداف المختبر
- تنفيذ شبكة عصبية صغيرة باستخدام MATLAB.
- حساب الانتشار الأمامي خطوة بخطوة.
- حساب دالة الخطأ.
- تنفيذ الانتشار الخلفي باستخدام المشتقات التحليلية.
- تحديث الأوزان باستخدام الانحدار المتدرج.
- إيقاف التدريب عندما يصبح الخطأ أصغر من ε.
1. Network Structure
We use a simple 1–2–1 neural network:
1. بنية الشبكة
نستخدم شبكة بسيطة من النوع:
أي دخل واحد، عصبونان في الطبقة المخفية، وخرج واحد.
2. Activation Function
We use the Sigmoid activation function:
Its derivative is:
2. دالة التنشيط
نستخدم دالة Sigmoid:
ومشتقتها:
3. MATLAB Sigmoid Function
sigma = @(z) 1 ./ (1 + exp(-z));
This anonymous function calculates the Sigmoid value for any input z.
3. دالة Sigmoid في MATLAB
sigma = @(z) 1 ./ (1 + exp(-z));
يحسب هذا السطر قيمة Sigmoid لأي قيمة z.
4. Initial Parameters
Start with initial weights and biases:
W.w1 = 0.4;
W.w2 = -0.3;
W.v1 = 0.2;
W.v2 = 0.5;
W.b1 = 0.1;
W.b2 = -0.1;
W.b3 = 0.0;
4. القيم الابتدائية
نبدأ بأوزان وانزياحات ابتدائية.
5. Training Sample
x = 1;
t = 0.8;
Here:
5. عينة التدريب
x = 1;
t = 0.8;
حيث x هو الدخل، وt هي القيمة المطلوبة من الشبكة.
6. Forward Propagation
Hidden neuron 1:
Hidden neuron 2:
Output neuron:
6. الانتشار الأمامي
يتم حساب خرج كل عصبون في الطبقة المخفية، ثم استخدام هذه القيم لحساب خرج الشبكة النهائي.
7. MATLAB Forward Propagation
z1 = W.w1*x + W.b1;
h1 = sigma(z1);
z2 = W.w2*x + W.b2;
h2 = sigma(z2);
z3 = W.v1*h1 + W.v2*h2 + W.b3;
y = sigma(z3);
7. الانتشار الأمامي في MATLAB
هذه الأسطر تنفذ المعادلات الرياضية نفسها مباشرة في MATLAB.
8. Loss Function
We use:
MATLAB:
E = 0.5*(y - t)^2;
8. دالة الخطأ
كلما اقترب y من t انخفضت قيمة E.
9. Backpropagation: Output Error
From Lecture 05:
MATLAB:
dO = (y - t) * y * (1 - y);
9. الانتشار الخلفي: خطأ طبقة الخرج
تمثل dO تأثير دخل عصبون الخرج z₃ على الخطأ النهائي.
10. Output-Layer Gradients
dV1 = dO*h1;
dV2 = dO*h2;
dB3 = dO;
10. تدرجات طبقة الخرج
نحسب تأثير كل وزن وانزياح في طبقة الخرج على دالة الخطأ.
11. Hidden-Layer Error
d1 = dO*W.v1*h1*(1-h1);
d2 = dO*W.v2*h2*(1-h2);
11. خطأ الطبقة المخفية
يتم إرجاع تأثير الخطأ من طبقة الخرج إلى العصبونات المخفية عبر الأوزان v₁ وv₂.
12. Input-to-Hidden Gradients
dW1 = d1*x;
dB1 = d1;
dW2 = d2*x;
dB2 = d2;
12. تدرجات الأوزان بين الدخل والطبقة المخفية
نحصل أخيرًا على مشتقات الخطأ بالنسبة للأوزان والانزياحات الأولى.
13. Gradient Descent Update
W.w1 = W.w1 - eta*dW1;
W.w2 = W.w2 - eta*dW2;
W.v1 = W.v1 - eta*dV1;
W.v2 = W.v2 - eta*dV2;
W.b1 = W.b1 - eta*dB1;
W.b2 = W.b2 - eta*dB2;
W.b3 = W.b3 - eta*dB3;
13. تحديث الأوزان
نحدث كل معامل بعكس اتجاه التدرج حتى ينخفض الخطأ.
14. Learning Rate
Choose:
eta = 0.5;
Training becomes slow.
Training may oscillate or diverge.
14. معدل التعلم
إذا كان معدل التعلم صغيرًا جدًا يصبح التدريب بطيئًا، وإذا كان كبيرًا جدًا فقد يصبح التدريب غير مستقر.
15. Stopping Criterion
Define a required accuracy:
epsilon = 1e-6;
Stop when:
and also use a maximum epoch limit:
maxEpochs = 10000;
15. معيار التوقف
يتوقف التدريب عندما يصبح الخطأ أصغر من الدقة المطلوبة ε، مع وضع حد أقصى لعدد دورات التدريب لتجنب حلقة لا نهائية.
16. Complete MATLAB Program
clear; clc; close all;
sigma = @(z) 1 ./ (1 + exp(-z));
x = 1;
t = 0.8;
eta = 0.5;
epsilon = 1e-6;
maxEpochs = 10000;
W.w1 = 0.4;
W.w2 = -0.3;
W.v1 = 0.2;
W.v2 = 0.5;
W.b1 = 0.1;
W.b2 = -0.1;
W.b3 = 0.0;
lossHist = zeros(1,maxEpochs);
epoch = 0;
converged = false;
while ~converged && epoch < maxEpochs
epoch = epoch + 1;
% ----- Forward propagation -----
z1 = W.w1*x + W.b1;
h1 = sigma(z1);
z2 = W.w2*x + W.b2;
h2 = sigma(z2);
z3 = W.v1*h1 + W.v2*h2 + W.b3;
y = sigma(z3);
% ----- Loss -----
E = 0.5*(y - t)^2;
lossHist(epoch) = E;
% ----- Backpropagation -----
dO = (y - t) * y * (1 - y);
dV1 = dO*h1;
dV2 = dO*h2;
dB3 = dO;
d1 = dO*W.v1*h1*(1-h1);
d2 = dO*W.v2*h2*(1-h2);
dW1 = d1*x;
dB1 = d1;
dW2 = d2*x;
dB2 = d2;
% ----- Update parameters -----
W.w1 = W.w1 - eta*dW1;
W.w2 = W.w2 - eta*dW2;
W.v1 = W.v1 - eta*dV1;
W.v2 = W.v2 - eta*dV2;
W.b1 = W.b1 - eta*dB1;
W.b2 = W.b2 - eta*dB2;
W.b3 = W.b3 - eta*dB3;
% ----- Stopping criterion -----
if E < epsilon
converged = true;
end
end
disp('Final weights and biases:')
disp(W)
fprintf('Epochs = %d\n',epoch)
fprintf('Final output y = %.6f\n',y)
fprintf('Target t = %.6f\n',t)
fprintf('Final error E = %.10f\n',E)
figure
semilogy(1:epoch,lossHist(1:epoch),'LineWidth',1.6)
grid on
xlabel('Epoch')
ylabel('Loss E')
title('Neural Network Training Convergence')
16. البرنامج الكامل في MATLAB
يجمع هذا البرنامج جميع الخطوات السابقة في حلقة تدريب واحدة: الانتشار الأمامي، حساب الخطأ، الانتشار الخلفي، تحديث الأوزان، ثم فحص شرط التقارب.
17. Understanding the Training Loop
17. فهم حلقة التدريب
18. Convergence Plot
The command:
semilogy(1:epoch,lossHist(1:epoch),'LineWidth',1.6)
plots the loss on a logarithmic vertical axis.
18. منحني التقارب
يستخدم الأمر semilogy مقياسًا لوغاريتميًا لمحور الخطأ، وهذا يجعل متابعة انخفاض الخطأ عبر عدة مراتب عشرية أكثر وضوحًا.
19. Experiment 1 — Change Learning Rate
Try:
eta = 0.05;
eta = 0.5;
eta = 2.0;
Compare:
- Number of epochs
- Stability
- Final loss
19. التجربة 1 — تغيير معدل التعلم
غيّر قيمة η وقارن سرعة التقارب واستقرار عملية التدريب.
20. Experiment 2 — Change Initial Weights
Modify the initial values of:
W.w1
W.w2
W.v1
W.v2
20. التجربة 2 — تغيير الأوزان الابتدائية
غيّر القيم الابتدائية ولاحظ تأثيرها على مسار التدريب وعدد الدورات المطلوبة للوصول إلى التقارب.
21. Power-System Interpretation
The same training mechanism can be used for a power-system prediction problem.
For example:
With more inputs:
21. التفسير في نظم الطاقة
يمكن استخدام آلية التدريب نفسها للتنبؤ بالحمل أو الطاقة المتجددة أو تقدير حالات التشغيل.
22. Lab Tasks
- Run the original program.
- Record the final output and number of epochs.
- Change the learning rate and compare convergence.
- Change the initial weights.
- Change the target value t.
- Explain every gradient expression mathematically.
- Explain why the loss decreases during training.
22. مهام المختبر
- شغّل البرنامج الأصلي.
- سجل الخرج النهائي وعدد دورات التدريب.
- غيّر معدل التعلم وقارن التقارب.
- غيّر الأوزان الابتدائية.
- غيّر القيمة المطلوبة t.
- اشرح رياضيًا كل معادلة من معادلات التدرج.
- اشرح لماذا ينخفض الخطأ أثناء التدريب.
📝 Questions
- What does dO represent?
- Why does dO contain y(1-y)?
- Why is dV1 equal to dO*h1?
- Why does the hidden error contain W.v1?
- Why do we subtract the gradient?
- What happens if η is too large?
- What is the role of ε?
📝 أسئلة المختبر
- ماذا تمثل dO؟
- لماذا تحتوي dO على y(1-y)؟
- لماذا تساوي dV1 القيمة dO*h1؟
- لماذا يحتوي خطأ الطبقة المخفية على W.v1؟
- لماذا نطرح التدرج؟
- ماذا يحدث إذا كان η كبيرًا جدًا؟
- ما وظيفة ε؟