What are forward propagation and backward propagation? - Htun Khaing Lynn မှ ရေးသားသည်။
11 Aug 2020 | လေ့လာနေသူများမှ လေ့လာမည့်သူများဆီသို့ - AI
ဒီနေ့ကိုကျော်အိမ်ပြန်ရောက်စဥ် ဇော်ဇော်တစ်ယောက် ပြုံးစိစိဖြင့် မြူးတူးနေသည်။
“ဟာ…ငါ့ညီ မင်းကလဲကွာ ဘာဖြစ်တာတုန်း ဒီနေ့မှ မျက်နှာကြီးကိုဖြီးလို့ ပျော်နေပုံများ’’
“ဟာ…ကိုကျော်ကလဲ ပျော်ရမှာပေါ့ဗျ ကျတော် ကျောင်းတက်တုန်းကလိုက်ခဲ့တဲ့ကောင်မလေးက ကျတော့်ကိုအဖြေပြန်ပေးတာကိုး.. ဟဲဟဲ…အားကျနေပြီလား။ ခနခန အငြင်းခံရပြီးတော့မှ ရတာ။ တော်တော်လဲကြာသွားတယ်။ ခုမှအဖြေရတာ ပျော်လိုက်တာဗျာ…ဟီးဟီးဟီး’’
“ဟာ…ဟုတ်လှချည်လား။ ဒါနဲ့နေပါဦး ကောင်မလေးကဘာလို့မင်းကိုခနခနငြင်းတာလဲ။ ဘယ်လိုပုံမျိုးမို့လဲဟ…ပြောပါဦး’’
“ဟာ…တအားလှတာကိုကျော်ရ မျက်နှာလေးကဝိုင်းနေတာပဲ…အသားလေးကလဲ ဖြူ…အရပ်လေးကလဲကောင်းဗျာ။ အဲ ဘာလို့ငြင်းတာလဲဆိုတော့ သူက အစက ကျတော့ဆံပင်ပုံကိုမကြိုက်ဘူး ဝတ်ပုံစားပုံ စကားပြောပုံ လမ်းလျှောက်ပုံ တော်တော်များများသူမကြိုက်ဘူးဗျ။
အဲ…ဒါကလဲ ကျတော့ဘော်ဒါပြောပြမှသိတာ ကျတော့်ဘော်ဒါကောင်မလေးကသူနဲ့သူငယ်ချင်း သူ့သူငယ်ချင်းကနေကတစ်ဆင့် ကျတော်ဘော်ဒါ ပြီးမှသိရတာဗျ။ ပထမတစ်ခါအငြင်းခံရတော့ ဒုတိယအကြိမ်သွားတောင်းသေးတယ် အဲ့တုန်းကဆံပင်တွေဘာတွေသပ်သပ်ရပ်ရပ်ပါပဲ ပြင်သွားတာ မရဘူးဗျာ အကုန်ပြင်မှစဥ်းစားပေးမယ်ဆိုလို့ မနည်းပြင်ယူရတယ်ဗျို့အကျင့်ဆိုးတွေကို။ ချစ်တာကိုးဗျ…ဟားဟား’’
“ဟာ ဟုတ်လှချည်လားကွာ ကဲ ဒါဆို ကိုကျော်နားပြီး ရေချိုးတော့မယ် ပြီးရင် အရင်နေ့ကပြောခဲ့တဲ့စာတွေပြန်ဆက်ကြမယ် ဟုတ်ပြီလား’’
ကိုကျော်တို့ညီကို ရေချိုး ထမင်းစားအပြီး
“ကဲ ဇော်ဇော် ဟိုနေ့ကပြောထားတာလေးတွေမှတ်မိသေးတယ်မလား မေ့ရင်ပြန်ပြောဦးနော်’’
“ဟုတ်ကိုကျော် မှတ်မိပါတယ်’’
“ကဲ ဒါဆိုဆက်မယ်။ ဒီနေ့ပြောမှာက Forward Propagation(feed forward) နဲ့ backward propagation ဆိုတာပဲ။ စကားလုံးအသစ်ဆိုပြီးတော့မလန့်သွားနဲ့ဦး။ ဒါကမင်းရင်းနှီးပြီးသားတွေပဲကွ။ Technical terms တွေအနေနဲ့ပြန်ပြောတာပေါ့ကွာ။ အရင်နေ့ကစာတွေလဲပြန်နွှေးရင်းပေါ့။’’
“ဟုတ် ကိုကျော် နဲနဲတောင်လန့်သွားတယ်ဟဲဟဲ’’
“Feed forward ကဘာလုပ်လဲဆိုတော့ ကိုကျော်တို့Neuron Network ထဲမှာရှိသမျှ neuron တွေကို data တွေထည့်တယ် အထဲမှာ activation function တွေနဲ့တွက်တယ် ပြီးရင်output ထုတ်ပေးတယ်။ အတိုချုပ်ဆိုရင် ဝင်လာတဲ့ data တွေကို prediction လုပ်တယ်ပေါ့ကွာ။ ပြီးရင် error တွက်တယ် ဘယ်လိုတွက်လဲမှတ်မိသေးလား’’
“ဟုတ်ကိုကျော် desired output - actual output’’
(ရှေ့ post မှာ target output လို့ရေးထားတာနဲ့ အတူတူပါပဲခင်ဗျ)
“Ok ဟုတ်ပြီ အဲ့လို output တွက်ပြီးတာနဲ့ သူက back propagation စလုပ်ပြီ’’
🤔🤔 Back Propagation ဆိုတာဘာလဲ?
“BP ဆိုတာဟိုနေ့က ကိုကျော်တို့တွက်ခဲ့တဲ့ဟာနဲ့ သဘောတရာကအတူတူပဲ။ ဒါပေမယ့်သူက ဟိုနေ့ကလို လိုက်မနှုတ်တော့ဘူး။ အဲ့လိုဆိုတော့ ဒီမှာ Chain Rule ဆိုတာပါလာရော။ ကျောင်း Maths မှာသင်တယ်မလား မှတ်မိသေးလား’’
“အဲ မမှတ်မိတော့ဘူး ရှင်းပါဦး ဟီးဟီး’’
“ကိုကျော်ဥပမာနဲ့ပြောပြမယ်။ အခုမင်းကောင်မလေးကို လိုက်တဲ့အခါ ခနခန အငြင်းခံရတယ်လို့ပြောတယ်နော်။ အဲ့တာဆို မင်းကိုမင်း actual output လို့ မှတ်ထားလိုက်။ အဲ့တာဆိုမင်းကောင်မလေးက desired output ပေါ့ကွာ။ အဲ့တော့ မင်းကတစ်ခါ purpose သွားလုပ်တာကို feed forward တွက်တယ်လို့မှတ်လိုက်။
အဲ့တော့ မင်းပထမဆုံးတစ်ခါ သူ့ကိုအဖြေတောင်းတော့ သူမင်းကိုငြင်းလွှတ်လိုက်တယ် ဘာလို့ငြင်းလဲ? သူလိုချင်တဲ့ output နဲ့ မင်းသွားပေးတဲ့ Output ကညီမှမညီတာ အဲ့တော့ မင်းလှည့်ပြန်လာရရော။ ဒါပေမယ့်မင်းကဇွဲမလျှော့သေးဘူး ထပ်ကြိုးစားဦးမယ် ဒါပေမယ့် ဒီတိုင်းပြန်သွားရင်လဲအငြင်းခံရဦးမယ်။ အဲ့တော့သူ့လိုအပ်ချက်တွေအတိုင်းမင်းပြင်ရမယ်ပေါ့ ဒါပေမယ့်ဘာပြင်ရမလဲလဲမသိပြန်ဘူး။ ဒီတော့ မင်းဘော်ဒါရဲ့ ကောင်မလေးက မင်းကြိုက်နေတဲ့ကောင်မလေးရဲ့သူငယ်ချင်း။
အဲ့တော့ မင်းက မင်းဘော်ဒါရဲ့ ကောင်မလေးကို ဘာပြင်ရမလဲ တစ်ဆင့်ခံမေးလိုက်တယ် ဒီတော့ မင်းဘော်ဒါကောင်မလေးက မင်းကြိုက်နေတဲ့ ကောင်မလေးကိုစကားအစ်ပေးလိုက်တယ်ပေါ့ ပြီးတော့ မင်းဘော်ဒါကိုပြန်ပြောပြတယ် အဲ့ကနေမှတစ်ဆင့် ဘာပြင်ရမလဲဆိုတာ မင်းဆီရောက်လာတယ်။
အိုခေ အဲ့တော့မင်းပြင်တော့မယ် သူက မင်းရဲ့ဆံပင် ဝတ်ပုံစားပုံ စကားအပြောအဆိုမကြိုက်ဘူးပေါ့ ဥပမာ ပြောရရင် အိုင်လက်ဖ်ယူ လောက်နဲ့မတက်လာနဲ့ပေါ့ အဲ့တော့ ဒုတိယတစ်ခေါက် ဆံပင်ကေတွေချိန်းဝတ်ပုံစားပုံတွေချိန်းလိုက်တယ် ကေင်မာလေးကနဲနဲတော့ မင်းဘက် ယိမ်းနေပြီ ဒါပေမယ် မင်းက အိုင်လက်ဖ်ယူ ဆိုပြီးသွားလုပ်တော့ ဟိုကငြင်းလိုက်ပြန်ရော အဲ့တာမကျေနပ်သေးဘူးမင်းထပ်ကြိုးစားမယ်ဆိုပြီး မင်းကငါ့ဘဝပါ မင်းမချစ်ရင်သေမှာ ဘာညာ လျှောက်လျှီးတဲ့အခါ ကောင်မလေးကအဖြေပြန်ပေးလိုက်ရော ဘာဖြစ်လို့လဲ သူလိုချင်တဲ့ output နဲ့ မင်းပေးတဲ့ output တူသလောက်နီးနီးဖြစ်သွားပြီ ပြောရမယ်ဆို E = 0 နီးပါးဖြစ်သွားတာပေါ့ အဲ့အချိန်ဆို မင်းလဲ BP လုပ်စရာမလ်ုတော့ဘူးလေ ကောင်မလေးကိုမင်းပိုင်သွားပြီ အဲ့တာ Forward pass နဲ့ Backward pass ပဲကွ’’
“ဟာ…ကိုကျော် ကျွမ်းလှချည်လားစော်သာမရှိတာ’’
“နေပါကွာ…မင်းကလဲ။ ကဲ ဒါဆို technical term လေးသွားရအောင်’’
“ဟုတ်ဟုတ်’’
“အဲ့တော့ ကိုကျော်တို့က neural network တစ်ခုကိုပုံဖော်လိုက် input နှစ်ခုရှိမယ် hidden layer တစ်ခု output layer တစ်ခုရှိမယ် hidden layer မှာ neuron 3 ခု output မှာက neuron 2ခု ရှိမယ်လို့ယူဆလိုက်မယ် ဒီ NN ကဘာလုပ်မှာလဲဆိုတော့ 0.6 0.9 ဆိုတဲ့ တန်ဖိုးနှစ်ခုကို 0.2 0.4 ဆိုတဲ့ output အဖြစ်ပြောင်းမယ်
ဒီတော့ X က
X = [ 0.6 0.9 ]
Target output T က
T = [ 0.2 0.4 ]
Hidden layer မှာ neuron 3 ခု output layer က neuron 2 ခုဆိုတော့
W[1] = [ 0.1 0.3 0.5 0.1 0.4 0.2 ]
W[2] = [ 0.5 0.3 0.2 0.1 0.5 0.2 ] b[1] =[ 0.1 0.3 0.5 ]
b[2] = [ 0.4 0.1]
learning rate = 0.01
စသည်ဖြင့်ရှိမယ်ပေါ့။
[ ] ဒီထဲမှာရေးထားတဲ့ နံပါတ်တွေက layer နံပါတ်တွေပေါ့ကွာ
Activation function က ReLU function သုံးမယ် အဲ့တော့ Forward Pass တွက်မယ် အသေးစိတ်မပြောတော့ဘူးနော်’’
“အဲ့ ReLU ဆိုတာဘယ်လိုမျိုးလဲ’’
ReLU
“သြော် ReLU ကf(x) = max(x,0) ဝင်လာတဲ့တန်ဖိုးက 0ထက်ကြီးရင် ဒီတိုင်းပြန်မယ် 0 ဒါမှမဟုတ် 0ထက်ငယ်ရင် 0 နားလည်လား’’
“ဟုတ်…ကိုကျော်’’
“ဒါဆိုစတွက်မယ်နော် သေချာကြည့်
Z1 = W[1] * X + b[1]
Z1 = [ 0.1 0.3 x [0.6 + [ 0.1 = [ 0.43 0.5 0.1 0.9 ] 0.3 0.69 0.4 0.2 ] 0.5 ] 0.92]
အဲ့တော့ ပထမအလွှာရဲ့ weighted sum Z1 ရလာပြီ အဲ့တော့ activation ထဲဆက်သွားမယ် အဲ့တော့
A1 = f(Z1)
A1 = f([ 0.43 0.69 0.92 ])
A1 = [ 0.43 0.69 0.92 ]
ဒီတော့ Z2 ဆက်တွက်မယ်
Z2 = W [2] * A1 + b2
Z2 = [ 0.5 0.3 0.2 x [ 0.43 + [ 0.4 = [ 1 0.1 0.5 0.2 ] 0.69 0.1 ] 0.67 ] 0.92]
A2 = f([ 1.006 0.67])
A2 = [ 1.006 0.67 ]
အဲ့တော့ ဒီမှာ output တစ်ခုရလာပြီ ဒီတော့ Back Propagation စဖို့အတွက် Error တွက်ကြည့်ရမယ် Error တွက်တဲ့အခါအရင်ကလို မနှုတ်တော့ပဲ Loss Function သုံးမယ် Loss Function ရဲ့ equation က
E = 1 / 2 ( T - Actual Output ) ²
အဲ့တော့ ပထမ A1 အတွက် E1 နဲ့ ဒုတိယ A2 E2 ဆိုပြီးတွက်ပေးရမယ် အဲ့တာနှစ်ခုကိုပြန်ပေါင်းရင် Cost Function လို့ခေါ်တယ် အဲ့တော့ တွက်ရအောင်
E[1] = 1 / 2 ( 0.2 – 1.006 )² = 0.31
E[2] = 1 / 2 ( 0.4 – 0.67 )² = 0.036
E = 0.31 + 0.035 = 0.345
အဲ့တော့ E ကဘယ်လောက်ရောက်မှ မှန်မလဲဆိုတော့ 0 နားတအားကပ်နေမှ ဥပမာ 0.0001 ဆိုလောက်မှလက်ခံလို့ရမယ် အဲ့တော့ Error ရှိနေတဲ့အတွက် Back Propagation လုပ်ရမယ် ခုနကပြောထားတဲ့ Chain Rule သုံးမယ် Chain Rule မပြောခင် Weight Update လုပ်တဲ့ eq အရင်ပြောမယ် အဲ့တာက
W(new) = W(old) + ΔW
အဲ့ ΔW ထဲမှာမှ chain rule ပါတာပေါ့ ဒီမှာ Chain Rule ဆိုတာကိုနဲနဲပြောပြမယ် ဥပမာ ကိုကျော်တို့က w11 ဆိုတာလေးကို update လုပ်ချင်တယ် ဒါပေမယ့် ကိုကျော်တို့ နောက်ဆုံးရလာတဲ့ A2 က w11 ကနေတိုက်ရိုက်ရတာမဟုတ်ဘူးအဲ့တော့ A2 ထဲမှာပါတဲ့ Z2 Z2 ထဲကနေမှ A1 Z1 ပြီးမှ w11 ဆီရောက်တာကိုး အဲ့တာကြောင့် တစ်ဆင့်ချင်းဆီ ချိန်းချိန်းလာရတယ် အပေါ်ကဥပမာလိုပေါ့ကွာ တစ်ယောက်စကားတစ်ယောက်ပေါ့ အဲ့တေ့ာ eq ကြည့်ရအောင်
ΔW = - learning rate * dW
ကိုကျော်ဒီမှာ w11 တစ်ခုပဲ တွက်ပြတော့မယ် ကျ်နတာနဲ့ b နဲ့ကို ကိုယ့်ဟာကိုတွက်ယူ အဲ့တော့ w11 ကို update လုပ်ပြမယ်
W[1]11(new) = W[1]11(old) + ΔW[1]11
ΔW[1]11 = - learning rate * dW[1]11
အဲ့တော့ dW[1]11 ကိုတွက်ရအောင် dW[1]11 ရဲ့ပုံသေနည်းက dError / dW[1]11 programming မှာ ရေးရလွယ်အောင် dW[1]11 လို့ပဲရေးတာ dW[1]11 ကိုချိန်းရင် Error မှာဘယ်လောက်ပြောင်းမလဲဆိုတာကိုတွက်တာပေါ့ အဲ့တော့ eq ကြည့်ကြမယ်
dE/dw11 = dE/da11 * da11/dz11 * dz11/dW[1]11
dE/da11 = dE[1]/da21 * da21/dz21 * dz21/da11+ dE[2]/da22 * da22/dz22 * dz22/da11
အဲ့တော့တွက်လိုက်ရင်
dE/dw11 = - 0.0006
(Chain rule ကိုပြန်လေ့လာပြီးတွက်ချကြည့်ပါခင်ဗျ)
အဲ့တာဆို ΔW[1]11 ကိုတွက်မယ်
ΔW[1]11 = - learning rate * dE/dW[1]11
ΔW[1]11 = - 0.1 * (- 0.0006)
ΔW[1]11 = 0.00006
ရမယ် အဲ့တော့ W[1]11(new) က
W[1]11(new) = W[1]11(old) + ΔW[1]11
W[1]11(new) = 0.1 + 0.00006 = 0.100006
( [ ] ဒီဟာက super script ပါခင်ဗျ keyboard နဲ့ဘယ်လိုရိုက်ရမှန်းမသိလို့ ဒီတိုင်းထည့်လိုက်ပါတယ် )
ရမယ် ဒါဆိုနောက် w တွေလဲကိုယ့်ဟာကိုပြန်ရှာပြီးတွက်ကြည့် ဟုတ်ပြီလား’’
ဇော်ဇော်မှာ လည်သွားသည် အသစ်ရထားသည့်ကောင်မလေးတောင်သတိမရတော့
“ဟုတ်…ကိုကျော် ပြီးမှထပ်ချတွက်ကြည့်ဦးမယ်’’
“အေးကောင်းပြီခုတော့နားတော့ နောက် Gradient Descent ဆိုတဲ့ အကြောင်းပြောပြမယ် အားတင်းထား နောက်နေ့တွေကျရင် eq တွေသိပ်မပါတော့ဘူး ‘’
“ဟုတ်ကိုကျော်ရေ’’
References:
- Neural networks and Deep learning - Andrew Ng
- Artificial Neural Network အခြေခံသီအိုရီနှင့်အသုံးပြုမှု နည်းလမ်းများ - ဆရာဇော်မင်းခိုင်
- Hands-On Machine Learning with Scikit-Learn and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems - Aurélien Géron
- Photo source: Internet