Neural Networks မိတ်ဆက် - Htun Khaing Lynn မှ ရေးသားသည်။
10 Jul 2020 | လေ့လာနေသူများမှ လေ့လာမည့်သူများဆီသို့ - AI
ကိုကျော်သည် AI ပိုင်းဖြင့် Company ကြီးတစ်ခုတွင် အလုပ်လုပ်နေသောသူဖြစ်သည်။ သူ့မှာ သူနှင့်အတူလာနေပြီး သင်တန်းတက်နေသော ဇော်ဇော်ဆိုသည့်ညီတစ်ယောက်ရှိသည်။ တစ်နေ့ကိုကျော် အလုပ်ကအိမ်ပြန်ရောက်ချိန်
“ကိုကျော် နေ့လည်က ကျတော်ကြည့်တဲ့ video ထဲမှာ မိုက်ဗျာ အိမ်တွေမှာ တံခါးတွေကိုရုပ်ပြပြီးဖွင့်လို့ရတယ်ဗျာ အသံနဲ့လဲ လုပ်လို့ရတယ်ဗျာ မိုက်ချက်ပဲဗျိို့ အဲ့တာကို AI လို့ခေါ်တာမလား”
“သြော်…အေးဟုတ်တယ်လေ ဘာဖြစ်လို့တုန်း”
“ကိုကျော်က အဲ့တာနဲ့အလုပ်လုပ်နေတော့ ကျတော့ကို အားတဲ့ချိန်သင်ပေးလို့ရမလားကျတော်လဲအဲ့တာမျိုးထွင်ချင်တယ်ဗျာ”
“ဟာ…ရတာပေါ့ငါ့ညီရ မင်းပြောတဲ့ ကောင်တွေက AI ထဲမှာမှ Deep Learning ဆိုတဲ့ဟာနဲ့ အလုပ်လုပ်တာကွ”
“ဟင် Deep learning ဆိုတာဘာလဲကိုကျော်”
“Deep learning ဆိုတာ AI ကို တည်ဆောက်ဖို့အတွက်အသုံးပြုတဲ့ နည်းပညာတစ်ခုပေါ့ကွာ ။အရင်က Neural Network လို့ခေါ်တယ်။ ဘာလို့လဲဆိုတော့ Neuron တွေ တစ်ခုနဲ့တစ်ခုချိတ်ဆက်ထားတဲ့ ကွန်ယက်ကြီးတစ်ခုနဲ့တူလို့ပေါ့”
“ကိုကျော်ရေ ဘာတွေလဲဗျာရှုပ်လာပြီ”
“ဒါအစမလို့ပါကွာ ကိုကျော်ရှင်းပြမယ် သေချာနားထောင်”
ဇော်ဇော်မှ ရီဝေသောမျက်လုံးများဖြင့် -
“ဟုတ်ကိုကျော်ရေ”
“ဒါနဲ့မင်းဟိုနေ့က သင်တန်းတက်နေတယ်ဆို ဘာသင်တန်းတက်နေတာတုန်း”
“Python Programming လေကိုကျော်”
“ဟာ…ဒါဆိုကွက်တိပဲဇော်ဇော်ရေ မင်းသင်ချင်တဲ့ ဟာတွေကလဲ Python ကိုပဲအများဆုံးအသုံးပြုကြတာ”
“ဒါဆိုရင်တော့ဂွင်ပဲကိုကျော်ရေ ဟားဟား” “ကဲ ပြန်ဆက်ရအောင် ဇော်ဇော် မင်းက အခု Neural Network ကိုရှုပ်နေတာမလား ရတယ် နားမလည်လဲ ကိစ္စမရှိဘူး ကိုကျော်ရှင်းပြမယ်။ အဲ့တာတွေကို မရှင်းခင် ကိုကျော်တို့ လူ့ဦးနှောက်ကိုဘယ်လိုအလုပ်လုပ်လဲ အကြမ်းဖျင်းလေ့လာရအောင်”
“ကိုကျော် ဒါနဲ့ လူ့ဦးနှောက်နဲ့ကဘယ်လိုသက်ဆိုင်လို့လဲ”
“ဆိုင်တာပေါ့ကွ… သတ္တဝါတွေထဲမှာ အသိဥာဏ်အမြင့်ဆုံးက မင်းတို့ ငါတို့ လူတွေပဲလေ..ပြီးတော့ AI ဆိုတဲ့ Artificial Intelligence ရဲ့ အဓိပ္ပာယ်ကိုက လူလုပ်အသိဥာဏ်ဆိုတော့ ဘယ်သူ့အသိဥာဏ်ကို တုပ မလဲဆိုတော့ လူကိုပဲ စံထားရတာဆိုတော့ ငါတို့ လူတွေ ဘယ်လိုစဥ်းစားသလဲ အလုပ်လုပ်သလဲဆိုတာ သိရင်အကောင်းဆုံးပဲကွ…neuron ဆိုတာလူ့ဦးနှောက်အတွင်းမှာရှိတဲ့ biological neuron လေးတွေကိုတုပြီးလုပ်ထားတာကိုးကွ။ လူ့ဦးနှာက်ထဲက neuron ကိုခွဲခြားကြည့်လိုက်တဲ့အခါ dendrites, cell body(soma), axon ဆိုပြီး သုံးပိုင်းပါတယ်။ သေချာသဘောပေါက်အောင်ကြည့်နော်ဇော်ဇော်။
ဥပမာ အကိုတို့ ခွေးတစ်ကောင်ကိုမြင်တဲ့အခါခွေးမှန်းဘယ်လိုသိလဲ။ မျက်စိကနေခွေးကိုမြင်လိုက်တဲ့အခါ အဲ့ဒီမျက်စိကနေတစ်ဆင့် neuron ထဲမှာရှိတဲ့ cell body လေးဆီကို data တွေရောက်သွားတယ် ဘယ်ကနေရောက်သွားလဲဆို dendrites ဆိုတဲ့ ကောင်လေးကနေတစ်ဆင့် synapses ဆိုတဲ့လမ်းကြောင်းလေးကနေတစ်ဆင့် ရောက်သွားတယ် ပြီးရင်အဲ့ cell body (soma)လေးထဲမှာ ခွေးဟုတ်မဟုတ်တွက်ချက်တယ်ပြီးရင် axon ဆီပို့ပြီး axon ကနေမှတစ်ဆင့်ခွေးဟူတ်မဟုတ် ဆုံးဖြတ်ပြီး output ထုတ်ပေးတယ်။
အဲ့တော့အလွယ်မှတ်ရရင် neuron ဆိုတာ input လက်ခံမယ် ပြီးရင်သူ့ထဲကနေတွက်ပြီးရင် output ထုတ်ပေးမယ် ဒါမျိုးပဲ။ အဲ…လက်တွေ့မှာတော့ လူတွေက အဲဒီ လူ့ဦးနှောက်ထဲက Neuron တွေ ဘယ်လိုတွက်ချက်သလဲဆိုတာတော့ မသိသေးဘူး….လောလောဆယ်သုံးနေတဲ့ Neural Network တွေမှာသုံးတဲ့ Activation Function ဆိုတာတွေက သင်္ချာ Equation တစ်ချို့ကို အသုံးချထားတာပဲ ရှိသေးတယ်..ဒါတောင် တော်တော်အလုပ်ဖြစ်နေတာသာ ကြည့်တော့..
နားလည်လားဇော်ဇော် နားမလည်လဲ ကိစ္စသိပ်မရှိဘူး ပုံလေးနဲ့ neuron အလုပ်လုပ်ပုံလေးကိုကြည့်ပြီးရင်သဘောပေါက်သွားလိမ့်မယ်”
“ဟုတ်…ကိုကျော်နားတော့နားလည်သယောင်ပဲ”
“ဒါနဲ့ Supervised learning ဆိုတာကိုကြားဖူးလား ဇော်ဇော်”
“မကြားဖူးဘူး ဘယ်လိုမျိုးလဲ ကိုကျော်”
“ဒါကိုမလေ့လာခင် Supervised learning, Unsupervised learning, Reinforcement learning စတာတွေကိုသိထားရမယ် အခု ကိုကျော် Supervised Learning ကိုအရင်အကြမ်းလေးပြောပြမယ် Supervised learning ဆိုတာ Machine Learning မှာ သုံးတဲ့ Learning type သုံးမျိုးထဲက တစ်ခုပေါ့
ဥပမာ ကိုကျော်တို့က ကိုကျော်တို့ ကွန်ပျူတာ Program တစ်ခုကို ပုံတစ်ပုံ input ထည့်လိုက်တယ် အဲ့အခါ ကွန်ပျူတာက ကြောင်ပုံထည့်ရင် Cat ကြောင်ပုံမဟုတ်ပဲတစ်ခြားဟာတည့်မိရင် Not cat စသည်ဖြင့် output ထုတ်ပေးမယ်ပေါ့ အဲ့အခါ Boolean အရ ကြည့်ရင် True / False (1 / 0) ပေါ့
အဲ့လိုပဲ Supervised learning ဆိုရင် ကိုယ်လိုချင်တဲ့ Output ကို စက်ကိုပေးသိထားရမယ် ဥပမါ cat ဆိုတဲ့output ကိုလိုချင်ရင် စက်ကိုပြောပြထားရမယ်ငါမင်းကိုကြောင်ပုံလေးInput ပေးရင် cat လို့ output ထုတ်ပေး မဟုတ်ရင် Not cat ဆိုပြီးထုတ်ပေး စက်ကိုအဲ့လို သင်ထားတာပေါ့ အဲ့တာကို supervised learning လို့ခေါ်တယ် နားလည်လား နားမလည်ရင် Google မှာသေချာလေးရှာပြီးဖတ်ကြည့် တစ်ခြားlearning တွေပါ”
“ဟုတ်ကိုကျော် သဘောတော့ပေါက်ပါတယ်”
“ကဲဒါဆို Neuron network ကိုမပြောခင် Neuron တစ်လုံးဘယ်လိုအလုပ်လုပ်လဲအရင်ရှင်းပြမယ် ဘာဖြစ်လို့ neuron တစ်လုံးစာကိုရှင်းပြရလဲဆိုတော့ English စကားလိုပဲ Alphabet တွေမသိပဲ vocabulary တစ်ခုတည်ဆောက်လို့မရဘူးလေဟုတ်တယ်မလား အဲ့တော့ neuron တစ်လုံးအလုပ်လုပ်ပုံကိုနားလည်အောင်ကြည့်ရအောင်-
ဒီပုံမှာဆို X တွေတွေ့လား အဲ့တာကို input လို့ ခေါ်တယ် Input data တွေပေါ့ကွာ’’ “ဒါနဲ့ input data ဆိုတာဘယ်လိုမျိုးလဲကိုကျော်”
“ဥပမာ ဆိုရင် မင်း computer မှာ သီချင်းတွေ ရုပ်ရှင်တွေ စာတွေရှိတယ်မလား အဲ့တာတွေအကုန်လုံးကို data လို့ခေါ်တယ် သဘောပေါက်လား ဒါပေမယ့် ဒီမှာတစ်ခုရှိတယ် input data type က numerical data ပဲဖြစ်ရမယ် ပြောရမယ်ဆို နံပါတ်တွေပေါ့ကွာ”
“ဟုတ်ကိုကျော် ဒါဆို ဓာတ်ပုံတွေ အသံတွေကျတော့ဘယ်လိုလုပ်တာလဲ”
” သြော်… ok သူ့မှာလဲ ဓာတ်ပုံတွေကိုနံပါတ်ပြောင်းတာတွေ အသံတွေကိုနံပါတ်ပြောင်းတဲ့နည်းလမ်းတွေရှိတယ်။ ဒါပေမယ့်အခုတော့ numerical data type ပဲ input ဝင်ရမယ်ဆိုပြီး အကြမ်းဖျင်းမှတ်ထားလိုက် ကျန်တာကအဆင့်မြင့်ပိုင်းရောက်မှ ဖြည်းဖြည်းစီလေ့လာကြတာပေါ့…နော့် ‘ “ဟုတ်ကဲ့ ကိုကျော်”
“ဟုတ်ပြီအဲ့တာဆိုပုံကိုပြန်ကြည့်ဒီမှာInput တွေက သူ့သက်ဆိုင်ရာလမ်းကြောင်းကနေတစ်ဆင်း neuron ထဲကိုဝင်လာတယ်တွေ့လား input တွေက neuron ထဲကိုဝင်တဲ့အခါ အဲ့အထဲမှာ input တွေကို process/training ပြုလုပ်တယ် training ပြုလုပ်တာကဘာလဲဆိုတော့ ဥပမာ ကိုကျော်တို့ လူတစ်ယောက်ကိုတွေ့တယ် သူ့နာမည်က ဦးဘ ပေါ့ အဲ့တာဆို ဒီလူ့နာမည်က ဦးဘပါဆို ပြီးမှတ်မိအောင် ဦးနှောက်ကို Train ပေးရတယ် ဒါပေမယ့် မင်းက အဲ့လူကို ဒုတိယအကြိမ်မြောက်တွေ့တဲ့အခါမှာ မမှတ်မိဘူးဆိုပါစို့ အဲ့အခါသူကဦးဘပါဆိုပြီး ဦးနှောက်ကိုမှတ်မိအောင်ထပ် Train ပေးရတယ် အဲ့တာကိုပြောတာ သဘောပေါက်လားဇော်ဇော် ဖြည်းဖြည်းချင်းစဥ်းစားယူ မလောနဲ့ အေးဆေး”
“ဟုတ်ကိုကျော်”
“အဲ့လိုပဲ ကိုကျော်တို့ ဦးနှောက်ကို train သလိုပဲ ကိုကျော်တို့က Neuron တွေကိုလဲ data တွေကိုမှတ်မိအောင် Train ပေးရမယ် ဒီမှာကြည့် မင်းတို့ကျောင်းမှာသင်တဲ့ Binary operation ကိုသိတယ်မလား OR Gate ကိုဥပမာယူပြီးလေ့လာရအောင် OR Gate မှာ (0,0)ဆို 0 ကျန်တာ 1ပဲဟုတ်တယ်မလား အဲ့တော့ ကြည့်ရအောင် အခု Technical terms တွေပါမှာဖြစ်တဲ့အတွက် စာအုပ်သွားယူဇော်ဇော်”
“ဟုတ် ကိုကျော်..ဒါနဲ့ မှတ်မိအောင်ဆိုတာ့ ကွန်ပျုတာ ram ကြီးကြီးလိုမှာလား”
“မေးခွန်းကောင်းပဲ ညီလေး..တကယ်တော့ train တယ်ဆိုတာ မှတ်မိအောင်ဆိုတာထက် တိတိပပပြောရရင် Input – Output ဆက်သွယ်ချက်ကို ကွန်ပျုတာ…အဲ… CPU ကို ရှာခိုင်းနေတာ .. သင်္ချာ Equation တွေသုံးပြီးတော့ပေါ့..အခုလောလောဆယ် ဒီလောက်ပဲ မှတ်ထားဦး”
“ဒီတော့ ကိုကျော်တို့က Input data လို့ပြောတဲ့နေရာမှာ input data တွေက ဗျောက်သောက်မဝင်လာဘူး Vector နဲ့ ဝင်လာမှာ အဲ့တော့ input vector ကို X လို့သတ်မှတ်လိုက် ကိုကျော်တို့ကသူ့ကိုအပေါ်မှာပြောခဲ့တဲ့ Supervised learning နဲ့ လုပ်ကြမယ် အဲ့တော့ Supervised learning ဆိုဘာလိုမလဲ ဇော်ဇော်”
“အမ်…input နဲ့ output လိုမယ်ဟုတ်လား ကိုကျော်..ဒါနဲ့ Vector တွေလည်း ပါလာပြန်ပြီလား 😔😔”
“ဟုတ်ပ ကွာ …ဒါပေမယ့် Vector အကျိုးကျေးဇူး တော်တော် ရှိတယ်ကွ..ညီတို့ ပုံမှန် ထပ်တလဲလဲ လုပ်ရတဲ့ တွက်ချက်မှုတွေဆို ဘယ်လိုလုပ်သလဲ။”
“Looping ပတ်တယ်လေ..For loop , While Loop တွေလေ”
“အေး..တကယ်တော့ Vector တွေ Matrix တွေက အဲဒီ Looping ပတ်တဲ့အချိန်တွေထက် မြန်တယ်ကွ..နောက်မှ ရှင်းပြမယ်”
“ဟုတ်”
“ကဲ ဆက်ကြည့်ရအောင် အဲ့တော့
Input | Output | |
x1 | x2 | y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
ဆိုပြီးရှိမယ်ပေါ့ ဟုတ်တယ်မလား input က နှစ်ခုရှိမယ် x1 နဲ့ x2 ပေ့ါ။ ပြီးရင်Neuron ကိုဝင်မယ့်အခါ အဲ့လမ်းကြောင်းလေးမှာ Weight ဆိုတဲ့ ဟာလေးရှိမယ် စသည်ဖြင့်ပဲရှိမယ် Neuron ထဲဝင်ရင် weight လေးတွေနဲ့ သက်ဆိုင်ရာ input တွေကိုမြှောက်ပေးရတယ်။ input တစ်ခုဆို weight တစ်ခုရှိမယ် နှစ်ခုဆို weight နှစ်ခု အခုဟာက input နှစ်ခုဆိုတော့ weight ကလဲနှစ်ခုပေါ့ ပြီးရင် bias ဆိုတဲ့ ကောင်လေးရှိမယ် bias ကတော့ input ဘယ်နှစ်ခုရှိရှိ bias တန်ဖိုးကတစ်ခုတည်း အဲ့တော့ Neuron ထဲမှာ ဘယ် equation နဲ့ လုပ်ဆောင်လဲဆိုတေ့ာ summation = WX + b ဘာနဲ့သွားတူလဲဆိုတော့Line equation နဲ့တူတယ် y = mx + c ဟုတ်တယ်မလား”
“ဟုတ်ကိုကျော် ဒါနဲ့ W တို့ b တို့တန်ဖိုးကဘယ်ကရမှာလဲ “
“ဟုတ်ပြီ ဒါကို အကိုတို့က random number ထုတ်ပြီး ကြေငြာရတာ ဒါဖြင့် ဆက်ကြည့်အောင် weight နဲ့ bias နှစ်ခုကို random ကြေငြာလိုက်ပြီဆိုပါစို့ အဲ့ခါ w1 = 1.5 နဲ့ w2 = 1, b = 0.5 ဆိုပြီးရလာတယ်ပေါ့ အဲ့အခါ ပထမ data 0,0 ကိုကြည့်ရအောင် x1 = 0 နဲ့ x2 = 0ပေါ့ အိုခေ
summation တွက်မယ်
summation = x1 * w1 + x2 * w2 + b
summation = 0 * 1.5 + 0 * 1 + 0.5 = 0.5 ရလာပြီနော်
အဲ့အခါ ခုနကဦးနှောက်အလုပ်လုပ်ပုံအတိုင်း သူ့ အဖြေက 1 လား 0လားဆုံးဖြတ်ရမယ် ဘယ်လိုဆုံးဖြတ်လဲဆိုရင် အခုရလာတဲ့ summation အဖြေကို activation function ထဲပို့တယ်။ activation function ဆိုပြီး google မှာရှာကြည့်လိုက် အဲ့မှာ hard limit, sigmoid, relu, hyperbolic tangent အစရှိသည်ဖြင့် တွေ့ရမယ် အခု hard limit ကိုသုံးပြီး 1 ဟုတ်မဟုတ်စစ်မယ် hard limit function က f(x)က 0 ဒါမှ မဟုတ် 0 ထက်ငယ်ရင် 0, 0 ထက်ကြီးရင် 1 အဲ့တော့ ခု ရလာတဲ့ အဖြေက 0.5 ဆိုတော့ activation က ဘာထုတ်ပေးမလဲဆိုတော့ 1 ထုတ်ပေးမယ် အဲ့တော့ လိုချင်တာနဲ့ ထွက်လာတာက လွဲနေပြီ အဲ့အခါမှာ အကိုတို့က Weight နဲ့ bias တွေကိုပြင်ရတော့မယ် အဲ့တော့ Weight ကိုမပြင်ခင် အကိုတို့လိုချင်တဲ့ output နဲ့ ထွက်လာတဲ့ output ကဘယ်လောက် ကွာခြားလဲဆိုတဲ့ error ကိုတွက်ရမယ် error ကိုဘယ်လိုတွက်မလဲဆို လိုချင်တဲ့ output ကနေ ထွက်လာတဲ့ output ကိုနှုတ်လိုက် အဲ့တော့
Error = Actual output - output
Error = 0 - 0.5 = -0.5
အခု error ရပြီဆိုရင် Weight နဲ့ bias တွေကို upgrade ပြန်လုပ်ရမယ် ဒီနေရာမှာ learning rate ဆိုတာလေးတိုးလာတယ် ဒါကဘာလဲဆိုတော့ upgrade ပြန်လုပ်တဲ့ အခုမှာ ဘယ်နှုန်းနဲ့ လုပ်မှာလဲပေါ့ ဒါလေးရှိတယ် အဲ့တော့ equation ကိုကြည့်ရအောင်
weight(new) = weight(old) + learning rate * error
bias(new) = bias(old) + learning rate * error
weight(new) နဲ့ bias(new)ရလာမယ် အဲ့အခါ ဒီနှစ်ကောင်က input နဲ့ summation ပြန်လုပ်မယ် ပြီးရင် activationထဲပြန်ဝင်မယ် အခုကိုကျော်ပြောတဲ့အဆင့်အတိုင်းပြန်ချတွက်ကွာ။ error 0 ဖြစ်သွားပြီဆိုရင် ငါတို့ လိုချင်တဲ့ output ကိုစက်ကထုတ်ပေးနိုင်ပြီပေါ့ကွ။ ခုနက slope ရှာတဲ့ equation နဲ့တူတယ်လို့ပြောတာမှတ်မိသေးလား”
“Summation equation summation = wx + b ကိုလာကိုကျော်”
“အေး ဟုတ်တယ် ဘာလို့ slope equationနဲ့တူတာလဲဆို ဒီပုံလေးကိုကြည့်လိုက် x1 = 0 နဲ့ x2 = 0 ဖြစ်တဲ့နေရာမှာပဲ 0 ကျန်တဲ့ နေရာက 1 တွေ့လား အဲ့ တာပဲ အဲ့မျဥ်းလေးရဲ့ slope ကိုမှန်ကန်အောင်ရှာနိုင်ရင် ငါတို့က 0 နဲ့ 1 ကို ခွဲလို့ရပြီလေ ဟုတ်တယ်မလား”
“Slope မှန်အောင်ရှာတာဘယ်လိုမျိုးလဲကိုကျော်”
“အဲ ငါတို့ code ရေးရင် အဲ့လိုပုံလေးထုတ်ကြည့်လို့ရတယ် အဲ့မှာ အဲ့မျဥ်းလေးက 1 သက်သက်တစ်ခြမ်း 0 သက်သက်တစ်ခြမ်း ထက်ပိုင်းခွဲနိုင်ရင်ရပြီကွ”
“Wow သဘောတော့ပေါက်ပြီကိုကျော်ရေ internetမှာတစ်ခါလောက်ရှာပြီး ပြန်နွေးဦးမယ်”
“ကဲ ဒါဆို ဒီနေ့တော့ဒီလောက်ပဲ နောက်အားမှ Neural network ကြီးဘယ်လိုအလုပ်လုပ်လဲပြောပြမယ်ကွာ ကြိုပြီးရှာဖတ်ထားချင်လဲဖတ်ထားပေါ့ကွာ”
“ဟုတ် ကိုကျော်”
Sample code for more understanding
References:
- Neural networks and Deep learning - Andrew Ng
- Artificial Neural Network အခြေခံသီအိုရီနှင့်အသုံးပြုမှု နည်းလမ်းများ - ဆရာဇော်မင်းခိုင်
- Introduction to neural network, single layer preceptron - ဆရာသက်ခိုင်
- Photo source: Internet