# Transfer learning

ကလေးတယောက်ကို စက်ဘီးစီးသင်ပေးတယ်ဆိုပါစို့။  
ဘေးက လူကြီးတယောက်က ကလေးရဲ့စက်ဘီးကိုထိန်းပေးတယ်။ ကလေးကို ကိုယ်တိုင်နင်းခိုင်းတယ်။ ကလေးက နင်းရင်းနဲ့ စက်ဘီးကို ဟန်ချက်ညီညီနင်းတတ်အောင် လူကြီးက ကလေးမသိအောင် နည်းနည်းစီလွှတ်ပြီးတော့ သူ့ဟာသူနင်းစေရတယ်။ နောက်တော့ ကလေးကတဖြည်းဖြည်းနဲ့ စက်ဘီးကို ဟန်ချက်ညီညီကောင်းကောင်းနင်းတတ်သွားတယ်။ ဒါဆိုရင် ကလေးကစက်ဘီးစီးတတ်သွားပြီလို့ ပြောလို့ရတယ်။

ဒီကလေးကိုပဲ အရွယ်ရောက်လာလို့ ဆိုင်ကယ်စီးသင်ပေးတယ်ဆိုပါစို့။ သူသည် စက်ဘီးကိုကောင်းကောင်းစီးတတ်ပြီးသားဖြစ်တဲ့အတွက် ဆိုင်ကယ်ကိုလည်း ဘယ်လိုဟန်ချက်ညီအောင်ထိန်းရမယ်ဆိုတာ သိနေပြီ။ တနည်းပြောရရင် စက်ဘီးစီးတုန်းက ရခဲ့တဲ့ knowledge base ကြီးကို ဆိုင်ကယ်စီးတဲ့နေရာမှာ ကောင်းကောင်းအသုံးချလို့ရတယ်။ ဒီလိုဖြစ်ရပ်ကို Transfer learning လုပ်တယ်လို့ပြောလို့ရတယ်။

ဒါပေမဲ့ ဆိုင်ကယ်သည် စက်ဘီးမဟုတ်ပါဘူး။ စက်ဘီးလို နင်းရတာမျိုးလည်းမဟုတ်သလို စက်ဘီးနဲ့လုပ်ငန်းစဉ်ကွာတာတွေ အများကြီးရှိတယ်။ ဂီယာထိုးရမယ်၊ လီဗာနင်းရမယ်၊ စက်နိုးရမယ်စသည်ဖြင့်ပေါ့။ ဂီယာထိုးရင်လည်း ဂီယာအကြီးအသေးစသည်ဖြင့် ခွဲခြားသင်ယူရတယ်။ လုပ်ငန်းစဉ်၂ခုက တူသလိုလိုနှင့် မတူတာတွေအများကြီးရှိတယ်။

ဒါပေမယ့် စက်ဘီးစီးမတတ်လည်း ဆိုင်ကယ်စီးသင်လို့ရတယ်။  
ဒါပေမယ့် ဟန်ချက်ထိန်းတာတွေက အစပြန်သင်ယူဖို့ အချိန်ပိုလိုမယ်။ ပိုပင်ပန်းမယ်။ စသည်ဖြင့်ရှိမယ်။

Deep learning model တွေသည်လည်း ဒီလိုပုံစံမျိုးအလုပ်လုပ်လို့ရတယ်။ Transfer learning လို့ခေါ်တာပေါ့။ object အမျိုးအစားတထောင်ကို အမျိုးအစားခွဲပေးနိုင်တဲ့ ‌model A ရှိတယ်ဆိုပါစို့။ ကိုယ်လုပ်ချင်တာက ကားနှင့်ဆိုင်ကယ်အမျိုးအစား၂မျိုးခွဲခြားပြတဲ့ model B တည်ဆောက်ချင်တယ်ဆိုရင် model A ကနေ Transfer learning လုပ်လို့ရတယ်။

Model A သည် ရှေ့က object တထောင်ကို အမျိုးအစားခွဲတဲ့နေရာမှာ object တွေရဲ့ထောင့်စွန်းတွေ၊ အနားသတ်တွေနှင့် ပါဝင်နိုင်မယ့် feature တွေကို ကောင်းကောင်းသိခဲ့ပြီးပြီ။

အဲ့ထဲမှာရှိတဲ့ feature တွေကိုထုတ်နုတ်ပေးတဲ့ အလွှာသည် အလုပ်ကောင်းကောင်းလုပ်နိုင်နေပြီ။ ဒီအလွှာကို feature extractor အနေနဲ့သုံးလို့ရတယ်။ အဲ့ဒီကရတဲ့ feature တွေကိုမှ ကိုယ်လိုချင်တဲ့ fully connected neurons architecture ထဲကိုထည့်ပြီး model B ကို တည်ဆောက်လို့ရတယ်။

ဒီလိုပုံစံနဲ့ဆိုရင်ကို ကောင်းကောင်းအလုပ်လုပ်နိုင်ပြီ။ ဒါပေမယ့် အဲ့အလွှာကိုပါ ကိုယ်အလုပ်လုပ်မယ့် dataset နဲ့ ပိုလိုက်လျောညီထွေဖြစ်အောင် fine tuning လုပ်လို့ရပါသေးတယ်။ အဲ့ဒါကတော့ အဲ့ဒီအလွှာကိုပါထည့်ပြီး model B ထဲမှာ အကြိမ်ရေနည်းနည်းနှင့် train ပေးလိုက်တာပဲ။

Transfer learning လုပ်တာသည် model B တည်ဆောက်ဖို့အတွက် ပိုမြန်တယ်။ resources အစားသက်သာတယ်။ model B တည်ဆောက်ဖို့အတွက် data လိုအပ်ချက်နည်းတယ်။

![](https://miro.medium.com/v2/resize:fit:1400/1*RJwGKcZ4S0COZSZ00A7hsA.png align="left")

အနှစ်ချုပ်ရမယ်ဆိုရင် Transfer learning မှာ feature extraction နှင့် fine tuning ပါဝင်တယ်။ အရင်နာမည်ကြီးတဲ့ performance ကောင်းတဲ့မော်ဒယ်တွေရဲ့ knowledge တွေကို ကိုယ်လုပ်ချင်တဲ့လုပ်ငန်းတွေမှာ ထည့်သုံးလိုက်တဲ့သဘောဖြစ်ပါတယ်။ Stable diffusion လို ကိုယ်ကစာရိုက်ထည့်လိုက်ရင် ဓာတ်ပုံ Generate လုပ်ပေးတဲ့ model တွေကိုလည်း transfer learning လုပ်ပြီးတော့ ကိုယ်ကြိုက်တဲ့ art style ကို ဦးစားပေးတဲ့ ai တွေထုတ်လို့ရပါတယ်။ Generative Pretained Transformer လို GPT model တွေကိုလည်း ကိုယ့် dataset နဲ့ကိုယ် ပြန် Transfer learning လုပ်ပြီးတော့ ကိုယ်လိုအပ်သလိုတည်ဆောက်လို့ရတယ်။

လက်ရှိဒီစာရေးနေတဲ့အချိန်မှာ နာမည်ကြီးတဲ့ open model တွေအနေနဲ့  
Text အတွက်ဆိုရင် GPT2, BERT, LLAMA  
Text to Image အတွက်ဆိုရင် Stable Diffusion  
Image Classification အတွက်ဆိုရင် MobileNet, VGG19, EfficientNet  
Object Recognition အတွက်ဆိုရင် Yolo  
Audio အတွက်ဆိုရင် Wavenet  
Pose estimation အတွက် PoseNet

စတာတွေရှိပါတယ်။ Transfer learning မှမဟုတ်ပါဘူး။ ပုံမှန်နေ့စဉ်အသုံးအတွက်လည်း model ကိုမပြောင်းပဲ ကိုယ်လိုသလိုသုံးနိုင်ပါတယ်။

#artificialIntelligence #transferlearning
