Thuta Learning
Deep Learning with PyTorch
ExercisesAIintermediate

လေ့ကျင့်ခန်း — မှန်ကန်တဲ့ Architecture ကို ရွေးချယ်ခြင်း

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • လေ့ကျင့်ခန်း — မှန်ကန်တဲ့ Architecture ကို ရွေးချယ်ခြင်း concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • နမူနာ PyTorch code ကို ကိုယ်တိုင် run ပြီး output စစ်နိုင်ရန်
  • Tutorial Platform project နှင့် production scenario တွင် မှန်ကန်စွာအသုံးချနိုင်ရန်

နားလည်ထားရမယ့် အချက်

Architecture ရွေးချယ်ရာမှာ မေးခွန်းတစ်ခုတည်းကနေ စတင်ရပါတယ် — data ရဲ့ ပုံသဏ္ဍာန်က ဘာလဲ၊ ဒီပုံသဏ္ဍာန်က ဘယ် structure ကို ရည်ညွှန်းသလဲ။ Input ဟာ ကပ်လျက်တန်ဖိုးတွေ ဆက်စပ်နေတဲ့ fixed-size grid တစ်ခု ဖြစ်နေရင် — ပုံတစ်ပုံရဲ့ pixel တွေလိုမျိုး — CNN က အနိုင်ရပါတယ်၊ ဘာကြောင့်လဲဆိုတော့ convolutional filter တွေက spatial locality ကို fully-connected layer ထက် parameter အများကြီး နည်းပြီး အသုံးချနိုင်လို့ပါ။ Input ဟာ order နဲ့ long-range context အရေးကြီးတဲ့ variable-length sequence ဖြစ်နေရင် — ဝါကျတွေ၊ time series တွေလိုမျိုး — sequence တိုတိုအတွက် RNN/LSTM သုံးလို့ရပေမယ့် Transformer ရဲ့ attention mechanism က long-range dependency တွေကို ပိုကောင်းစွာ scale လုပ်နိုင်ပြီး position တွေကို တစ်ခုချင်းစီအစား တစ်ပြိုင်နက်တည်း process လုပ်လို့ train လုပ်ရတာ ပိုမြန်ပါတယ်။ Input ဟာ spatial ဒါမှမဟုတ် sequential ဆက်နွယ်မှု လုံးဝမရှိတဲ့ independent feature အရေအတွက် သတ်မှတ်ထားတာပဲ ဖြစ်နေရင် — square footage, bedroom အရေအတွက်, zip code လိုမျိုး — Linear layer တွေနဲ့ activation layer တွေကို stack လုပ်ထားတဲ့ ရိုးရိုး feedforward network ဟာ လုံလောက်ရုံမက မှန်ကန်လည်း မှန်ကန်ပါတယ် — CNN ဒါမှမဟုတ် RNN သုံးလိုက်ရင် data ထဲမှာ မရှိတဲ့ structure ကို အတင်းချမှတ်လိုက်တာဖြစ်ပြီး capacity ကို ဖြုန်းတီးပြီး generalization ကို ပျက်စေတတ်ပါတယ်။ နောက်ဆုံးအနေနဲ့ well-studied task တစ်ခုနဲ့ ဆင်တူတဲ့ task တစ်ခုအတွက် labeled data ရှားပါးနေရင် pretrained model ကနေ transfer learning လုပ်တာ — သင်ယူပြီးသား feature တွေကို ပြန်သုံးပြီး နောက်ဆုံး layer တွေပဲ fine-tune လုပ်တာ — က ညီမျှတဲ့ architecture ကို အစကနေ train လုပ်တာထက် အမြဲသာလွန်ပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Thuta Learning ရဲ့ roadmap မှာ feature သုံးခု ပါဝင်ပါတယ် — feedback စာသားအတွက် sentiment classifier၊ query နဲ့ content-metadata features ပေါ်အခြေခံတဲ့ learned search-ranking model၊ ပြီးတော့ learner တစ်ဦးချင်းရဲ့ fixed-length engagement-history vector အခြေခံတဲ့ lesson recommender။ Implementation မစခင် design doc ကို review လုပ်ပြီး data structure နဲ့ မကိုက်ညီတဲ့ architecture အဆိုပြုချက်တွေကို ရှာထုတ်ဖို့ ခိုင်းထားပါတယ် — ဥပမာ ranking model ရဲ့ tabular features အတွက် CNN သုံးဖို့ အဆိုပြုထားခြင်း၊ ဒါမှမဟုတ် word order ကို ထည့်မတွက်တဲ့ plain feedforward network ကို review sentence raw data အတွက် သုံးဖို့ အဆိုပြုထားခြင်းတွေကို ဖမ်းမိရမှာပါ။ ဒါကို အစောကတည်းက မှန်ကန်စွာ တွဲစပ်နိုင်မှသာ လအတော်ကြာအောင် 'တော်တော်တော့ အလုပ်ဖြစ်တယ်' ဆိုပေမယ့် ရိုးရှင်းပြီး မှန်ကန်စွာရွေးထားတဲ့ architecture တွေရလာမယ့် accuracy ကို တစ်ခါမှ မမီနိုင်တဲ့ model တွေနဲ့ အချိန်ဖြုန်းရမှာကို ရှောင်ရှားနိုင်ပါတယ်။

အတူတူ စမ်းရေးကြည့်မယ်

python
# Scenario A: classify product photos into 10 categories
# (fixed-size images, 224x224x3, labeled by category)

# Scenario B: predict tomorrow's stock closing price
# from the last 30 days of daily closing prices

# Scenario C: predict a house's sale price from
# square footage, number of bedrooms, and zip code

# Scenario D: translate a full sentence from
# Burmese to English
You should see
ဒီ snippet ဟာ run လုပ်တာ ဒါမှမဟုတ် ဘာမှ print ထုတ်တာ မဟုတ်ပါဘူး — စဉ်းစားရမယ့် scenario description တွေပါ။ Code ကို run လုပ်ဖို့ မဟုတ်ဘဲ scenario တစ်ခုစီအတွက် ဘယ် architecture family က ကိုက်ညီပြီး ဘာကြောင့်ဆိုတာ ရေးချရမှာပါ။

၅ မိနစ် စမ်းကြည့်

အထက်က scenario (A–D) တစ်ခုချင်းစီအတွက် စတင်အသုံးပြုမယ့် architecture family (feedforward network, CNN, RNN/LSTM, ဒါမှမဟုတ် Transformer) ကို ဖော်ပြပြီး grid locality, sequence order, ဒါမှမဟုတ် feature independence — ဆိုတဲ့ data ရဲ့ တိကျတဲ့ structural property ကို ညွှန်းပြီး တစ်ကြောင်းစာနဲ့ ဆီလျော်ကြောင်းရှင်းပြပါ။ ပြီးရင် scenario D အတွက် RNN/LSTM ရော Transformer ရော ရွေးချယ်စရာ မှန်သော်လည်း Transformer ကို ယနေ့ ပိုမို ရွေးချယ်လေ့ရှိတဲ့အကြောင်းရင်းကို မှတ်ချက်ပေးပါ။

သတိလေးတစ်ချက်

Data ဟာ independent tabular features ပဲ ဖြစ်နေပေမယ့် အလေ့အထအတိုင်း CNN ဒါမှမဟုတ် RNN ကို သုံးလိုက်တာ — ဒါက complexity ကိုပဲ တိုးပေးပြီး ရိုးရှင်းတဲ့ feedforward network ထက် accuracy ပိုဆိုးသွားတတ်တယ်။

'Advanced' ဆိုတာနဲ့ ပိုကောင်းတယ်လို့ ယူဆတာ — ဥပမာ dataset သေးငယ်ပြီး sequence တိုတိုအတွက် Transformer သုံးလိုက်တာ၊ ၎င်းရဲ့ parameter များပြားမှုက overfit ဖြစ်စေတတ်ပြီး LSTM (ဒါမှမဟုတ် ပိုရိုးရှင်းတဲ့ model) က generalize ပိုကောင်းနိုင်တယ်။

Wikipedia — Neural network (machine learning)Deep Learning

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Data ဟာ independent tabular features ပဲ ဖြစ်နေပေမယ့် အလေ့အထအတိုင်း CNN ဒါမှမဟုတ် RNN ကို သုံးလိုက်တာ — ဒါက complexity ကိုပဲ တိုးပေးပြီး ရိုးရှင်းတဲ့ feedforward network ထက် accuracy ပိုဆိုးသွားတတ်တယ်။
  • 'Advanced' ဆိုတာနဲ့ ပိုကောင်းတယ်လို့ ယူဆတာ — ဥပမာ dataset သေးငယ်ပြီး sequence တိုတိုအတွက် Transformer သုံးလိုက်တာ၊ ၎င်းရဲ့ parameter များပြားမှုက overfit ဖြစ်စေတတ်ပြီး LSTM (ဒါမှမဟုတ် ပိုရိုးရှင်းတဲ့ model) က generalize ပိုကောင်းနိုင်တယ်။
  • နမူနာ code ကို production system ပေါ် တိုက်ရိုက်မစမ်းဘဲ local/test environment တွင် အရင်အတည်ပြုပါ။

လေ့ကျင့်ခန်း

အထက်က scenario (A–D) တစ်ခုချင်းစီအတွက် စတင်အသုံးပြုမယ့် architecture family (feedforward network, CNN, RNN/LSTM, ဒါမှမဟုတ် Transformer) ကို ဖော်ပြပြီး grid locality, sequence order, ဒါမှမဟုတ် feature independence — ဆိုတဲ့ data ရဲ့ တိကျတဲ့ structural property ကို ညွှန်းပြီး တစ်ကြောင်းစာနဲ့ ဆီလျော်ကြောင်းရှင်းပြပါ။ ပြီးရင် scenario D အတွက် RNN/LSTM ရော Transformer ရော ရွေးချယ်စရာ မှန်သော်လည်း Transformer ကို ယနေ့ ပိုမို ရွေးချယ်လေ့ရှိတဲ့အကြောင်းရင်းကို မှတ်ချက်ပေးပါ။

You'll know it worked when: ဒီ snippet ဟာ run လုပ်တာ ဒါမှမဟုတ် ဘာမှ print ထုတ်တာ မဟုတ်ပါဘူး — စဉ်းစားရမယ့် scenario description တွေပါ။ Code ကို run လုပ်ဖို့ မဟုတ်ဘဲ scenario တစ်ခုစီအတွက် ဘယ် architecture family က ကိုက်ညီပြီး ဘာကြောင့်ဆိုတာ ရေးချရမှာပါ။

လေ့ကျင့်ခန်း — မှန်ကန်တဲ့ Architecture ကို ရွေးချယ်ခြင်း | Thuta Learning