ဆောင်းပါးတို Gradient Descent ဆိုတာ ဘာလဲ။ - Unite.AI
ကြှနျုပျတို့နှငျ့အတူချိတ်ဆက်ပါ
AI Masterclass-

AI ၅၀

Gradient Descent ဆိုတာ ဘာလဲ။

mm
နောက်ဆုံးရေးသားချိန် on

Gradient Descent ဆိုတာ ဘာလဲ။

အာရုံကြောကွန်ရက်များကို လေ့ကျင့်ပေးပုံအကြောင်း ဖတ်ပြီးပါက၊ သင်သည် “gradient descent” ဟူသော ဝေါဟာရကို ယခင်က သေချာပေါက်နီးပါး တွေ့ဖူးပါသည်။ gradient ကဆင်းသက်လာ ကွန်ရက်၏ ဆုံးရှုံးမှု/အမှားအယွင်းနှုန်းကို လျှော့ချကာ အာရုံကြောကွန်ရက်တစ်ခု၏ စွမ်းဆောင်ရည်ကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်သည့် အဓိကနည်းလမ်းဖြစ်သည်။ သို့သော်၊ စက်သင်ယူမှုအသစ်အတွက် gradient ဆင်းသက်မှုသည် အနည်းငယ်နားလည်ရခက်နိုင်ပြီး၊ ဤဆောင်းပါးသည် သင့်အား gradient ဆင်းသက်ပုံလည်ပတ်ပုံအတွက် လျောက်ပတ်သောပင်ကိုယ်သဘောကို ပေးစွမ်းမည်ဖြစ်သည်။

Gradient ဆင်းသက်ခြင်းသည် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ထားသော အယ်လဂိုရီသမ်တစ်ခုဖြစ်သည်။ ကွန်ရက်၏ ခန့်မှန်းချက်များနှင့် ကွန်ရက်၏ အမှန်တကယ်/မျှော်လင့်ထားသော တန်ဖိုးများကြား ကွာခြားချက် (ဆုံးရှုံးမှုဟု ခေါ်ဆိုသည်) သည် တတ်နိုင်သမျှ သေးငယ်သည်ဟု ကွန်ရက်၏ ကန့်သတ်ဘောင်များကို ပြုပြင်ပြောင်းလဲခြင်းဖြင့် အာရုံကြောကွန်ရက်တစ်ခု၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် အသုံးပြုသည်။ Gradient မှဆင်းသက်မှုသည် ကန့်သတ်ဘောင်များ၏ ကနဦးတန်ဖိုးများကိုယူကာ ကွန်ရက်ကို တိကျနိုင်သမျှမှန်ကန်စေမည့် တန်ဖိုးများဆီသို့ ၎င်းတို့၏တန်ဖိုးများဆီသို့ ၎င်းတို့၏တန်ဖိုးများကို ချိန်ညှိရန်အတွက် calculus တွင်အခြေခံထားသော လုပ်ဆောင်ချက်များကို အသုံးပြုသည်။ gradient ဆင်းသက်ပုံအလုပ်လုပ်ပုံကိုနားလည်ရန် calculus အများအပြားကိုသင်သိရန်မလိုအပ်သော်လည်း gradient များကိုနားလည်ရန်လိုအပ်သည်။

Gradients ဆိုတာ ဘာလဲ

အာရုံကြောကွန်ရက်တစ်ခု၏ အမှားအယွင်းပမာဏကို ကိုယ်စားပြုသည့် ဂရပ်တစ်ခုရှိနေသည်ဟု ယူဆပါ။ ဂရပ်၏အောက်ခြေသည် အနိမ့်ဆုံးအမှားအမှတ်များကို ကိုယ်စားပြုပြီး ဂရပ်၏ထိပ်ပိုင်းသည် အမှားအယွင်းအမြင့်ဆုံးနေရာတွင်ဖြစ်သည်။ ဂရပ်၏ထိပ်မှအောက်ခြေသို့ရွှေ့လိုသည်။ gradient သည် error နှင့် neural network ၏ အလေးများကြား ဆက်နွယ်မှုကို တိုင်းတာသည့် နည်းလမ်းတစ်ခုသာဖြစ်သည်။ ဒီအရာနှစ်ခုကြားက ဆက်နွယ်မှု slope အဖြစ် ပုံဆွဲနိုင်သည်။မှားယွင်းသောအလေးများဖြင့် အမှားအယွင်းပိုများစေသည်။ လျှောစောက်/အရောင်အဆင်း၏ မတ်စောက်မှုသည် မော်ဒယ်သင်ယူမှု မည်မျှမြန်သည်ကို ကိုယ်စားပြုသည်။

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

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

သို့သော်လည်း ချိုင့်ဝှမ်းရှိ အနိမ့်ဆုံးနေရာသို့ ကျွန်ုပ်တို့ နီးကပ်လာသည်နှင့်အမျှ ကျွန်ုပ်တို့၏ ခြေလှမ်းများသည် ပိုမိုသေးငယ်လာရန် လိုအပ်မည် သို့မဟုတ် မဟုတ်ပါက စစ်မှန်သော အနိမ့်ဆုံးအမှတ်ကို ကျော်လွန်သွားနိုင်မည်ဖြစ်သည်။ အလားတူပင်၊ ကွန်ရက်၏အလေးချိန်များကို ချိန်ညှိသည့်အခါ၊ ချိန်ညှိမှုများသည် အနိမ့်ဆုံးဆုံးရှုံးမှုအမှတ်မှ အမှန်တကယ် ဝေးကွာသွားစေနိုင်သည်၊ ထို့ကြောင့် ချိန်ညှိမှုများသည် အချိန်ကြာလာသည်နှင့်အမျှ သေးငယ်သွားရမည်ဖြစ်သည်။ အနိမ့်ဆုံးအရှုံးပေါ်သည့်နေရာသို့ တောင်ကုန်းတစ်ခုသို့ဆင်းခြင်း၏အခြေအနေတွင်၊ gradient သည် ကျွန်ုပ်တို့သွားသင့်သည့်လမ်းကြောင်းနှင့် ကျွန်ုပ်တို့၏ခြေလှမ်းမည်မျှကြီးမားသင့်သည်တို့ကိုအသေးစိတ်ဖော်ပြသည့် vector/instructions တစ်ခုဖြစ်သည်။

gradient များသည် မည်သည့် ဦးတည်ချက်သို့ ရွေ့ရမည် (မည်သည့် coefficients များကို update လုပ်သင့်သည်) နှင့် မည်မျှ ကြီးမားသော အဆင့်များ (coefficients မည်မျှ မွမ်းမံသင့်သည်) တို့ကို ညွှန်ပေးသည့် ညွှန်ကြားချက်များ ဖြစ်ကြောင်း ယခု ကျွန်ုပ်တို့ သိလိုက်ရပါသည်။

Gradient နှင့် Gradient ဆင်းသက်မှုကို တွက်ချက်ခြင်း။

Gradient ဆင်းသက်မှုသည် ဆုံးရှုံးမှုများသောနေရာတွင် စတင်ပြီး အကြိမ်များစွာ ထပ်ခါထပ်ခါ ပြုလုပ်ခြင်းဖြင့် အကောင်းဆုံးသော အလေးချိန်ဖွဲ့စည်းပုံကို ရှာဖွေရန် ရည်ရွယ်ချက်ဖြင့် အနိမ့်ဆုံးကျခြင်းဆီသို့ ခြေလှမ်းများလှမ်းသည်။ ဓာတ်ပုံ- Wikimedia Commons မှတဆင့် Роман Сузи၊ CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

gradient ဆင်းသက်မှုကို ဆောင်ရွက်ရန်အတွက်၊ gradient များကို ဦးစွာတွက်ချက်ရပါမည်။ စနစ်တကျဖြစ်သည် gradient ကိုတွက်ချက်ရန်ဆုံးရှုံးမှု/ကုန်ကျစရိတ် လုပ်ဆောင်ချက်ကို သိရှိရန် လိုအပ်သည်။ ဆင်းသက်လာခြင်းကို ဆုံးဖြတ်ရန် ကုန်ကျစရိတ်လုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ အသုံးပြုပါမည်။ calculus တွင်၊ derivative သည် ပေးထားသော point တွင် function တစ်ခု၏ slope ကို ရည်ညွှန်းသည်၊ ထို့ကြောင့် အခြေခံအားဖြင့် တောင်ကုန်း၏ slope ကို အခြေခံ၍ တွက်ချက်ခြင်းသာဖြစ်သည်။ ဆုံးရှုံးမှု function ကို. ကျွန်ုပ်တို့သည် ဆုံးရှုံးမှုလုပ်ဆောင်ချက်မှတဆင့် ကိန်းများကို လည်ပတ်ခြင်းဖြင့် ဆုံးရှုံးမှုကို ဆုံးဖြတ်သည်။ အကယ်၍ ကျွန်ုပ်တို့သည် ဆုံးရှုံးမှုကို “f” အဖြစ် ကိုယ်စားပြုပါက၊ ဆုံးရှုံးမှုကို တွက်ချက်ရန်အတွက် ညီမျှခြင်းမှာ အောက်ပါအတိုင်းဖြစ်သည် (ကျွန်ုပ်တို့ရွေးချယ်ထားသော ကုန်ကျစရိတ်လုပ်ဆောင်ချက်မှတစ်ဆင့် ကိန်းဂဏန်းများကို ကျွန်ုပ်တို့ လုပ်ဆောင်နေခြင်းဖြစ်သည်)။

ဆုံးရှုံးမှု = f(ကိန်းဂဏန်း)

ထို့နောက် ကျွန်ုပ်တို့သည် ဆင်းသက်လာခြင်းကို တွက်ချက်ခြင်း သို့မဟုတ် လျှောစောက်ကို ဆုံးဖြတ်ပါ။ ဆုံးရှုံးမှု၏ ဆင်းသက်လာခြင်းကို ရယူခြင်းသည် ကျွန်ုပ်တို့၏ ကိန်းဂဏန်းများကို ချိန်ညှိရန် သင့်လျော်သော နိမိတ်လက္ခဏာကို ပေးခြင်းဖြင့် လျှောစောက်အတက် သို့မဟုတ် အဆင်းလမ်းကို ပြောပြပါမည်။ ကျွန်ုပ်တို့သည် သင့်လျော်သော ဦးတည်ချက်ကို “မြစ်ဝကျွန်းပေါ်” အဖြစ် ကိုယ်စားပြုပါမည်။

မြစ်ဝကျွန်းပေါ် = derivative_function(ဆုံးရှုံးမှု)

အနိမ့်ဆုံးအရှုံးပေါ်တဲ့ လမ်းကြောင်းက ဘယ်လမ်းကြောင်းက ကုန်းဆင်းဖြစ်မလဲဆိုတာ အခုပဲ ဆုံးဖြတ်ပြီးပါပြီ။ ဆိုလိုသည်မှာ ကျွန်ုပ်တို့သည် neural network parameters များတွင် coefficients ကို update လုပ်နိုင်ပြီး ဆုံးရှုံးမှုကို လျှော့ချနိုင်မည်ဟု မျှော်လင့်ပါသည်။ ဦးတည်ချက် (မြစ်ဝကျွန်းပေါ်) မှ ဆုံးဖြတ်ထားသည့်အတိုင်း သင့်လျော်သောတန်ဖိုးပြောင်းလဲမှုကို အနုတ်လက္ခဏာကိန်းဂဏန်းများပေါ်တွင် အခြေခံပြီး ကိန်းဂဏန်းများကို အပ်ဒိတ်လုပ်မည်ဖြစ်ပြီး ပြောင်းလဲမှု၏ပြင်းအား (ကျွန်ုပ်တို့၏ခြေလှမ်းအရွယ်အစား) ကို ထိန်းချုပ်သည့် အငြင်းအခုံတစ်ခုဖြစ်သည်။ အပ်ဒိတ်အရွယ်အစားကို ထိန်းချုပ်သည့် အကြောင်းပြချက်ကို ““သင်ယူမှုနှုန်း“ပြီးတော့ အဲဒါကို “alpha” အဖြစ် ကိုယ်စားပြုပါမယ်။

coefficient = coefficient – ​​(alpha * delta)

ထို့နောက် သုညအနီးဖြစ်သင့်သည့် ကွန်ရက်သည် အနိမ့်ဆုံးဆုံးရှုံးမှုအမှတ်တဝိုက်တွင် ဆုံစည်းသွားသည်အထိ ဤလုပ်ငန်းစဉ်ကို ပြန်လုပ်ပါ။

သင်ယူမှုနှုန်း (alpha) အတွက် မှန်ကန်သောတန်ဖိုးကို ရွေးချယ်ရန် အလွန်အရေးကြီးပါသည်။ ရွေးချယ်ထားသော သင်ယူမှုနှုန်းသည် အလွန်သေးငယ်သည် သို့မဟုတ် ကြီးလွန်းသည်မဟုတ်ပေ။ ကျွန်ုပ်တို့သည် အနိမ့်ဆုံးဆုံးရှုံးမှုအမှတ်သို့ ချဉ်းကပ်လာသည်နှင့်အမျှ ကျွန်ုပ်တို့၏ခြေလှမ်းများသည် သေးငယ်လာရမည်ဖြစ်ပြီး သို့မဟုတ်ပါက ကျွန်ုပ်တို့သည် အနိမ့်ဆုံးဆုံးရှုံးမှု၏စစ်မှန်သောအချက်ကို ကျော်ဖြတ်ကာ တစ်ဖက်တွင်အဆုံးသတ်သွားမည်ဖြစ်ကြောင်း သတိရပါ။ အသေးငယ်ဆုံးသော ဆုံးရှုံးမှုအမှတ်သည် သေးငယ်ပြီး ကျွန်ုပ်တို့၏ပြောင်းလဲမှုနှုန်းသည် အလွန်ကြီးမားပါက အမှားအယွင်းသည် နောက်တစ်ကြိမ် တိုးလာနိုင်သည်။ ခြေလှမ်းအရွယ်အစားများ ကြီးလွန်းပါက ကွန်ရက်၏ စွမ်းဆောင်ရည်သည် အနိမ့်ဆုံး ဆုံးရှုံးသည့် အမှတ်တဝိုက်တွင် ဆက်လက် ခုန်ထွက်နေမည်ဖြစ်ပြီး၊ တစ်ဖက်တွင် ၎င်းကို ကျော်လွန်ကာ ကျော်လွန်သွားမည်ဖြစ်သည်။ ထိုသို့ဖြစ်လာပါက ကွန်ရက်သည် စစ်မှန်သောအကောင်းဆုံးအလေးချိန်ဖွဲ့စည်းမှုပုံစံကို ဘယ်တော့မှ ပေါင်းစပ်မည်မဟုတ်ပါ။

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

Gradient ဆင်းသက်ခြင်း အမျိုးအစားများ

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

Batch Gradient Descent- ဤ gradient ဆင်းသက်မှုပုံစံသည် coefficients ကိုမွမ်းမံခြင်းမပြုမီ လေ့ကျင့်ရေးနမူနာများအားလုံးမှတဆင့် လုပ်ဆောင်ပါသည်။ ဤ gradient ဆင်းသက်ခြင်းအမျိုးအစားသည် အစုအဝေးတစ်ခုလုံးကို ပြုပြင်ပြီးသည်နှင့်သာ အလေးချိန်များကို အပ်ဒိတ်လုပ်ထားသောကြောင့် gradient ဆင်းသက်ခြင်း၏ တွက်ချက်မှုအရ အထိရောက်ဆုံးပုံစံဖြစ်ဖွယ်ရှိသည်။ သို့သော်၊ ဒေတာအစုံတွင် လေ့ကျင့်ရေးနမူနာများစွာပါရှိလျှင် batch gradient ဆင်းသက်ခြင်းသည် လေ့ကျင့်ရေးအချိန်ကြာမြင့်စေနိုင်သည်။

Stochastic Gradient ဆင်းသက်ခြင်း- Stochastic Gradient ဆင်းသက်ခြင်းတွင် gradient ဆင်းသက်ခြင်းနှင့် ပါရာမီတာ မွမ်းမံခြင်း၏ ထပ်ခါထပ်ခါလုပ်ဆောင်မှုတိုင်းအတွက် လေ့ကျင့်ရေးနမူနာတစ်ခုတည်းကိုသာ လုပ်ဆောင်ပါသည်။ လေ့ကျင့်မှုတိုင်းအတွက် ဒါက ဖြစ်တတ်ပါတယ်။ ကန့်သတ်ချက်များကို မွမ်းမံမွမ်းမံခြင်းမပြုမီ လေ့ကျင့်ရေးနမူနာတစ်ခုသာ လုပ်ဆောင်ထားသောကြောင့်၊ အပ်ဒိတ်များကို စောစီးစွာ ပြုလုပ်နိုင်သောကြောင့် Batch Gradient Descent ထက် ပိုမိုမြန်ဆန်စွာ ပေါင်းစည်းနိုင်မည်ဖြစ်သည်။ သို့ရာတွင်၊ လေ့ကျင့်ရေးအစုရှိ အရာတိုင်းတွင် လုပ်ငန်းစဉ်ကို လုပ်ဆောင်ရမည်ဖြစ်သောကြောင့် ဒေတာအတွဲသည် ကြီးမားပါက ပြီးမြောက်ရန် အချိန်အတော်ကြာနိုင်ပြီး၊ ထို့ကြောင့် နှစ်သက်ပါက အခြား gradient ဆင်းအမျိုးအစားများကို အသုံးပြုပါ။

Mini-Batch Gradient ဆင်းသက်ခြင်း- Mini-Batch Gradient Descent သည် လေ့ကျင့်ရေးဒေတာအားလုံးကို အပိုင်းခွဲများအဖြစ် ပိုင်းခြားခြင်းဖြင့် လုပ်ဆောင်ပါသည်။ ၎င်းသည် ကွန်ရက်မှတဆင့်လည်ပတ်သည့် သေးငယ်သောအသေးစားအသုတ်များကို ဖန်တီးပေးပြီး အမှားကိုတွက်ချက်ရန်အတွက် mini-batch ကိုအသုံးပြုသောအခါ coefficients ကို update လုပ်သည်။ Mini-batch Gradient Descent သည် Stochastic Gradient Descent နှင့် Batch Gradient Descent အကြား အလယ်ဗဟိုကို ပုံဖော်သည်။ မော်ဒယ်ကို Batch Gradient Descent ထက် မကြာခဏ အပ်ဒိတ်လုပ်သည်၊ ဆိုလိုသည်မှာ မော်ဒယ်၏ အကောင်းဆုံး ကန့်သတ်ဘောင်များပေါ်တွင် အနည်းငယ် ပိုမြန်ပြီး ပိုမိုခိုင်မာသော ပေါင်းစည်းမှုကို ဆိုလိုသည်။ ၎င်းသည် Stochastic Gradient Descent ထက် တွက်ချက်မှုအရ ပိုမိုထိရောက်သည်။

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