Sunday, September 24, 2017

အနာဂတ်ကွန်ပျူတာ

အနာဂတ်ကွန်ပျူတာ

မိတ်ဆက်
သက္ကရာဇ် ၂၀၄၀ အရောက်မှာ တစ်ကမ္ဘာလုံးမှာရှိနေတဲ့ ကွန်ပျူတာတွေအတွက် လုံလောက်တဲ့ စွမ်းအင်ပေးဖို့ မဖြစ်နိုင်တော့ဘူးလို့ တစ်ပိုင်းလျှပ်ကူးပစ္စည်းထုတ်လုပ်သူများအသင်း (Semiconductor Industry Association)ရဲ့ ၂၀၁၂ အစီခံစာက ဆိုထားပါတယ်။(http://www.pwc.com/gx/en/technology/publications/assets/pwc-faster-greener-smarter.pdf) ဒီဖြစ်ရပ်ကို တားဆီးကာကွယ်နိုင်ဖို့အတွက် ကွန်ပျူတာထုတ်လုပ်ရေးနယ်ပယ်ကြီးတွေဟာ စွမ်းအင်ကိုထိထိရောက်ရောက် အသုံးပြုနိုင်မယ့် ကွန်ပျူတာမျိုးတွေ တည်ထွင်ထုတ်လုပ်နိုင်ဖို့ လုံးပမ်းလာကြတယ်။ ဒါပေမယ့်လည်း ခက်တာက သမားရိုးကျကွန်ပျူတာတွေမှာက အလုပ်တစ်ခုလုပ်နိုင်ဖို့အတွက် လုံးဝအနည်းဆုံးစွမ်းအင်လိုအပ်ချက် ဆိုတာရှိတယ်။ ဒီအချက်ကို ၁၉၆၁ ခုနှစ်ကတည်းက ဂျာမန်-အမေရိကန် ရူပဗေဒပညာရှင်၊ နာဆာရဲ့ သိပ္ပံပညာရှင် ရော့ဖ် ဒဗလျူ လန်ဒါး Rolf William Landauer(February 4, 1927 – April 28, 1999)က အိုင်ဘီအမ် IBM သုတေသနစမ်းသပ်ခန်းမှာ သင်္ချာပုံသေနည်းတစ်ခုတည်ဆောက်ပြီး တွက်ချက်ပြခဲ့တယ်။

အခု ၂၀၁၇ ခုနှစ် မတ်လ အရောက်မှာတော့ သုတေသနပညာရှင်တွေက ကွန်ပျူတာချစ်ပ် (chip) တစ်ခုဟာ အဲဒီလိုအနည်းဆုံးစွမ်းအင်လိုအပ်ချက်ပမာဏနဲ့ တကယ်အလုပ်လုပ်နိုင်ကြောင်း လက်တွေ့သရုပ်ပြနိုင်ခဲ့ကြတယ်။ အဲဒီပမာဏဟာ လက်ရှိကွန်ပျူတာတွေသုံးစွဲနေတဲ့ စွမ်းအင်ရဲ့ အပုံတစ်သန်းပုံတစ်ပုံသာရှိတယ်။ ဒါဟာ စွမ်းအင်ကိုထိထိရောက်ရောက်အသုံးချနိုင်တဲ့ တွက်ချက်ခြင်း နယ်ပယ်အတွက် အကြီးအကျယ်အောင်မြင်မှုတစ်ခုပဲ ဖြစ်ပါတယ်။ ဒါပေမယ့်လည်း အဲဒီစွမ်းအင်နည်းပညာကို ကျွန်တော်တို့ရဲ့ လက်ပ်တော့ပ်ကွန်ပျူတာတွေမှာ အသုံးချနိုင်ဖို့ဆိုတာကတော့ နောက်ထပ်နှစ်ပေါင်းများစွာကြာဦးမှာဖြစ်ပြီး၊ အဲဒီလို လုပ်နိုင်ပြီဆိုတဲ့အချိန်ကို ရောက်ခဲ့ရင်တောင် လန်းဒါးရဲ့ကန့်သတ်ချက် (Landauer Limit) ထက်တော့ ကျော်လွန်နေဦးမှာသာဖြစ်ပါတယ်။ ဒီအချက်ကြောင့် ကမ္ဘာ့ထိပ်တန်းပညာရှင်တွေ အဖွဲ့အစည်းကြီးတွေက ကွန်ပျူတာတွေရဲ့ စွမ်းအင်သုံးစွဲမှုကို လျော့ချနိုင်ဖို့ လုံးဝ မတူကွဲပြားခြားနားတဲ့ တွက်ချက်မှု(computing) နယ်ပယ်အသစ်ကို ရှာဖွေလာကြပါတယ်။ အဲဒီနယ်ပယ်ကတော့ ကွမ်တမ်တွက်ချက်မှု နဲ့ ကွမ်တမ်ကွန်ပျူတာတွေပဲဖြစ်ပါတယ်။

ကွမ်တမ်ကွန်ပျူတာ
ကျွန်တော်တို့ရဲ့လက်ရှိသုံးစွဲနေတဲ့ ကွန်ပျူတာတွေဟာ သုည နဲ့ တစ် ပါဝင်တဲ့ ရှေးရိုးဂန္ထဝင် စီဘစ် “cbit” (classical bit) တွေအပေါ်မှာ အခြေပြုတည်ဆောက်ထားတာဖြစ်ဖြစ်တယ်။ ရိုးရိုးသာမန် ကွန်ပျူတာတွေမှာ သုံးတဲ့ အခြေခံအကျဆုံး unit က bit ။ ဒီ bit လို့ခေါ်တဲ့ သုညနဲ့တစ်သာပါဝင်တဲ့ ကိန်းနှစ်ခုစနစ် (Binary Digit System) အလုပ်လုပ်ဖို့အတွက် အကောင်အထည်ဖေါ်ပေးမယ့် စီပီယူ မှာပါဝင်တဲ့ transistor တစ်ခုချင်းစီဟာ တစ် သို့မဟုတ် သုညကို ကိုယ်စားနိုင်ပြုတဲ့ အခြေအနေဖြစ်အောင် တည်ဆောက်ထားတာဖြစ်ပါတယ်။ အထူးသတိထားဖို့ကတော့၊ တစ်ချိန်မှာ တိကျတဲ့အခြေအနေတစ်ခုပဲရှိမယ်။ တစ် ဖြစ်ချင်ဖြစ်မယ်။ သုည ဖြစ်ချင်ဖြစ်မယ်။ တစ်ရော သုညရော နှစ်ခုလုံး တစ်ပြိုင်တည်း မဖြစ်နိုင်ဘူး” ဆိုတာပါပဲ။

ကွမ်တမ်ကွန်ပျူတာမှာ သုံးမယ့် unit က တော့ quantum bits လို့ခေါ် တဲ့ “qubits” တွေဖြစ်တယ်။ ဒီလို ကွမ်တမ်အခြေအနေရှိနေတဲ့ bit တွေဟာ၊ သူတို့ရဲ့လက်ရှိအခြေအနေကို ယတိပြတ် yes or no, true or false, zero or one ဆုံးဖြတ်လို့မရဘူး။ ဒီ qubit တွေဟာ တစ် နဲ့ သုည၊ အဖွင့် နဲ့အပိတ် အခြေအနေ နှစ်ရပ်လုံးမှာလည်း တပြိုင်တည်း ရှိနေနိုင်တယ်။ ဒါကြောင့် qubit တစ်ခုဟာ၊ သီးခြား အခြေအနေ ဖြစ်တဲ့ တစ်ကိုသော်လည်းကောင်း၊ သုညကိုကိုသော်လည်းကောင်း ဖေါ်ပြနိုင်တဲ့အပြင်၊ တစ် နဲ့ သုည အခြေအနေ နှစ်ရပ်စလုံးကိုပါ တစ်ပြိုင်တည်း ကိုယ်စားပြုဖေါ်ပြနိုင်စွမ်းရှိတယ်။ အဲဒီလို အခြေအနေ နှစ်ရပ်လုံးကို တစ်ပြိုင်နက် ဖေါ်ပြနေတဲ့အခြေအနေကို မခွဲခြားနိုင်သောအခြေအနေ entangled state လို့ခေါ်တယ်။ အဲဒီအရည်အချင်းကို မဟာ အနေအထား“superposition” လို့လည်း ခေါ်ဆိုနိုင်တယ်။ နှစ်ခုလုံး၏ ညီညွတ်ပေါင်းစည်းမှု မဟာအနေအထား “coherent superposition of both” ဆိုပြီး ပညာရပ်ဆန်ဆန်မှတ်သားနိုင်ပါတယ်။

ဒီ ကွမ်တမ်ကွန်ပျူတာတွေရဲ့ အဓိက စွမ်းရည် ဟာ ဘာလဲဆိုတော့၊ သင်္ချာတွက်ချက်မှု Mathematical operation တခုကို အခြေအနေ(state) နှစ်ရပ် အပေါ်မှာ တပြိုင်တည်း တွက်ချက် ဆောင်ရွက်နိုင် ခြင်းပဲဖြစ်တယ်။ ဆိုလိုတာက ကျူဘစ်တစ်ခုဟာ တစ် နဲ့ သုည နှစ်ခုလုံးပါတဲ့ မဟာအနေအထားမှာရှိနေပြီး၊ သူ တွက်ချက်ခြင်းလုပ်မယ့် တခြား ကျူဘစ်တစ်ခုကလည်း သူ့လိုပဲ မဟာအနေအထားမှာရှိမယ်ဆိုရင်၊ တစ်ခါတည်းတွက်လိုက်ရုံနဲ့ အဖြေလေးခု တစ်ပြိုင်တည်းရလာမှာဖြစ်တယ်။ ကျူဘစ်နှစ်ခုလုံး တစ် ဖြစ်လို့ ရတဲ့အဖြေတစ်ခု၊ ပထမကျူဘစ် တစ်- ဒုတိယကျူဘစ် သုညဖြစ်တဲ့အချိန်ရတဲ့အဖြေတစ်ခု၊ ပထမကျူဘစ် သုည- ဒုတိယကျူဘစ် တစ် ဖြစ်တဲ့အချိန်ရတဲ့အဖြေတစ်ခု၊ နှစ်ခုလုံး သုညဖြစ်တဲ့အချိန်ရတဲ့အဖြေတစ်ခု၊ စုစုပေါင်းလေးခု ဖြစ်တယ်။ အဲဒါကြောင့် ကျူဘစ် စနစ်ကိုသုံးတဲ့ ကွမ်တမ်ကွန်ပျူတာတွေရဲ့တွက်ချက်နိုင်စွမ်းဟာ two power n ဖြစ်တယ်။ ဆိုလိုတာက
two-qubit system တခု ဟာ (2^2) တန်ဘိုး လေးခု ကို တပြိုင်တည်းတွက်နိုင်တယ်။
three-qubit system တခု ဟာ (2^3) တန်ဘိုး ရှစ်ခု ကို တပြိုင်တည်းတွက်နိုင်တယ်
four-qubit system ဆိုရင် (2^4) ၁၆ ခု. စသည်ဖြင့် ဖြစ်ပါတယ်။
qubit ရဲ့ အရေအတွက်ကို တခုချင်း တိုးမြှင့်လိုက်တာနဲ့ သူရဲ့ တွက်ချက်နိုင်မှု စွမ်းရည်ဟာ“ထပ်ကိန်း”နဲ့အမျှ တိုးတက်လာတာကိုတွေ့ရမှာပါ။ သူ့ရဲ့တွက်ချက်နိုင်မှု စွမ်းရည်ရဲ့ အကျိုးဆက်နဲ့ပတ်သက်ပြီး မြင်သာတဲ့ ဥပမာတစ်ခု ပေးရရင်
ကျွန်တော်တို့ရဲ့ ခု လက်ရှိ classic computer နဲ့ ကိန်းလုံးရေ တစ်ထောင်(၁၀၀၀) ပါတဲ့ ကိန်းဂဏန်းတစ်ခုကို ဆခွဲကိန်းခွဲမယ်ဆိုရင် 10- million- billion-billion -years ကြာနိုင်မယ်။ ဒါပေမယ့် အဲဒီအလုပ်ကို quantum computer က မိနစ် နှစ်ဆယ်ပဲကြာမှာဖြစ်ပါတယ်။

ကွမ်တမ်ကွန်ပြူတာနှင့် လက်တွေ့ပြဿနာများ

ဒါပေမယ့် အထူးအရေးအကြီးဆုံး သတိပြုရမယ့် အချက်ကတော့ ဒီလို quantum computing power ရဖို့ ဆိုရင် qubit တွေရဲ့ တစ်ပြိုင်နက်တွက်ချက်နိုင်စွမ်း “power of quantum parallelism” ကို ထိထိရောက်ရောက် အသုံးချနိုင်မယ့် algorithm တွေ ရှိရမယ် ဆိုတဲ့ အချက်ပဲဖြစ်ပါတယ်။ တကယ်တော့ နယ်ပယ်အစုံအတွက်အသုံးချနိုင်မယ့် အဲဒီလို Algorithm မျိုးတွေ ဖေါ်ထုတ်ဖို့ဆိုတာ အခုလောလောဆယ်မှာတော့ ခက်ခဲနေပါသေးတယ်။ ဘာလို့လဲဆိုတော့ ကျွန်တော်တို့ ခုလက်ရှိ အသုံးပြုနေတဲ့ ကွန်ပြူတာတွေရဲ့ hardware, software နဲ့ အဲဒါတွေကို စီစဉ်ခိုင်းစေတဲ့ programming language မှန်သမျှဟာ တစ် နဲ့ သုည၊ အမှား သို့မဟုတ် အမှန်ဆိုတဲ့ ယုတ္တိဗေဒကို အခြေပြု တည်ဆောက် ထားတာ ဖြစ်နေလို့ပါပဲ။ ခုလိုမျိုး ကွမ်တမ်အခြေအနေတွေကို ပြေလည်နိုင်စေဖို့ ဆိုရင်၊ လုံးဝဥသုံ မတူညီ ကွဲပြားခြားနားတဲ့ သဘောတရားတွေကို hardware, software, programming langauange, computing algorithm စတဲ့ နယ်ပယ်စုံမှာ တစ်ပြိုင်နက် ပြောင်းလဲ အသုံးချမှသာ ဖြစ်နိုင်ပါမယ်။ လက်ရှိရှိနေပြီးသားအရာတွေနဲ့ လုံးဝဥဿုံကွဲပြားခြားနားတဲ့ပညာရပ်တွေကို ဘက်ပေါင်းစုံကနေ တစ်ပြိုင်နက် ပြောင်းလဲရမယ်ဆိုတဲ့ ကိစ္စဟာ quantum computing လောကအတွက် အကြီးမား ဆုံးစိန်ခေါ်မှုကြီးတစ်ခုဖြစ်နေပါတယ်။ သုတေသနပညာရှင်အများစုကလည်း ကွမ်တမ်ကွန်ပျူတာကို လက်ရှိသုံးစွဲနေတဲ့ ကွန်ပျူတာအရွယ်အစားမျိုး စီးပွားဖြစ် လက်တွေ့တည်ဆောက်ဖို့ဆိုတာတော့ အလွန်ကြီး မားခက်ခဲတဲ့ အင်ဂျင်နီယာပညာရပ်ဆိုင်ရာ အခက်အခဲတွေရှိနေတယ် လို့ဆိုပါတယ်။ ဒါ့အပြင် ဒီ ကွမ်တမ်ကွန်ပျူတာ ဟာ တစ်နေ့မှာ ရောင်းတန်းဝင်စျေးကွက်ထဲရောက်လာပြီး၊ လက်ရှိသုံးစွဲနေတဲ့ ကွန်ပျူတာတွေကို အစားထိုးနေရာယူသွားလိမ့်မယ်လို့ တစ်ချို့ပညာရှင်တွေက မယုံကြည်ကြဘူး။ ဘာလို့လဲဆိုတော့ ကွမ်တမ်ကွန်ပျူတာဆိုတာ အလွန်ရှုပ်ထွေးနက်နဲ တဲ့ပြဿနာ မျိုးတွေဖြစ်တဲ့၊ လျှို့ဝှက်ကုဒ်ဖြည်ဖို့၊ ကွမ်တမ်ရူပဗေဒဆိုင်ရာ ပြဿနာတွေ ဖြေရှင်းဖို့၊ ကမ္ဘာကြီးရဲ့ သဘာဝအဖြစ်အပျက်တွေကို ပုံတူဖန်တီးကြည့်ဖို့ ၊ စင်္ကြာဝဠာကြီးကိုလေ့လာဖို့၊ ကိန်းလုံးရေ တွေအလွန်များတဲ့ ကိန်းတွေကို ဆခွဲကိန်းခွဲကြည့်ဖို့ .. စတဲ့နေရာတွေမှာ အသုံးချရမှာဖြစ်လို့ပါပဲ။ ဒါတွေဟာ အထူးပြုထိပ်တန်းပညာရှင်တွေပဲ လုပ်တဲ့ လုပ်နိုင်တဲ့ အလုပ်မျိုးတွေဖြစ်ပြီး၊ သာမန် နေ့စဉ်သုံးစွဲသူ တစ်ရောက် အတွက်တော့ ကွမ်တမ်ကွန်ပျူတာ လိုအပ်မှာမဟုတ်ဘူး လို့ ယူဆကြလို့ပါ။
လတ်တလောနှင့်အနာဂတ်
ဂူးဂဲလ် နဲ့ နာဆာက သိပ္ပံပညာရှင် အဖွဲ့တစ်ဖွဲ့ရဲ့ စမ်းသပ်စစ်ဆေးချက်အရ၊ ကွမ်တမ်တွက်ချက်မှုကုမ္ပဏီကြီး D-Wave က တည်ထွင်ဖန်တီးထားတဲ့ ကျူဘစ်၂၀၀၀ အထိပါဝင်လို့ 2000Q လို့နာမည်ပေးထားတဲ့ ကွမ်တမ်ကွန်ပျူတာဟာ သမားရိုးကျကွန်ပျူတာထက် အဆပေါင်း သန်းတစ်ရာ ပိုမြန်တယ်ဆိုတာ လေ့လာတွေ့ရှိခဲ့ကြတယ်။ အိုင်ဘီအမ် ကုမ္ပဏီကြီးက သူ့ရဲ့ ကျူဌာနခွဲ Q Division ကနေ လာမယ့်နှစ်အနည်းငယ်အတွင်း၊ စီးပွားဖြစ်ရောင်းလို့ရမယ့် ကျူဘစ်ငါးဆယ် 50 qubits လောက်အထိပါမယ့် ကွမ်တမ်ကွန်ပျူတာတွေ တည်ဆောက်နေတယ်လို့ လတ်တလောကြေငြာထားတယ်။ (မှတ်ချက်။ ကျူဘစ်ငါးဆယ်၏ တစ်ပြိုင်နက်တွက်ချက်နိုင်စွမ်း = 2^50 = 1,125,899,906,842,624) ၂၀၁၇၊ မတ်လ ၃ ရက်နေ့ထုတ်၊ နေးချား အပြည်ပြည်ဆိုင်ရာ သိပ္ပံပညာအပတ်စဉ်ဂျာနယ်( Nature: International Weekly Journal of Science)မှာ ဂူးဂဲလ်က သုတေသနပညာရှင်တွေကလည်း နောက်ငါးနှစ်လောက်အတွင်းမှာ ကွမ်တမ်ကွန်ပျူတာအတွက် ရင်းနှီးထားရတာတွေက ပြန်ပြီး ဝင်ငွေစတင်ရရှိလာတော့မှာ ဖြစ်တယ်လို့ ဆိုပါတယ်။ (http://www.nature.com/news/commercialize-quantum-technologies-in-five-years-1.21583) ဒါပေမယ့် အခက်အခဲတွေကတော့ရှိနေဆဲပါ။ ကွမ်တမ်တွက်ချက်မှုဆိုတာက ကျူဘစ်တွေအချင်းချင်း အပြန်အလှန် ထိတွေ့အလုပ်ကြတဲ့အခါမှာ ဖြစ်ပေါ်တာ။ ဒါကြောင့် ကွန်ပျူတာတစ်လုံးအလုပ်လုပ်နိုင်ဖို့အတွက် ကျူဘစ်တွေအများကြီးလိုတယ်။ အဲဒီလို ကျူဘစ်တွေ အများကြီးသုံးလိုက်တဲ့အခါ ဖြစ်ပေါ်လာတဲ့ ကျူဘစ်တွေရဲ့အလွန်ရှုပ်ထွေးတဲ့စနစ်ကို ထိန်းချုပ်ကိုင်တွယ်နိုင်ဖို့ သိပ္ပံပညာရှင်တွေမှာ လွယ်ကူ ရိုးရှင်းတဲ့ နည်းလမ်းမရှိသေးပါဘူး။
အခုအခါမှာ မော်စကို ရူပဗေဒနှင့် နည်းပညာသိပ္ပံ (MIPT - Moscow Institute of Physics and Technology) နဲ့ ရပ်ရှားကွမ်တမ်စင်တာ (Russian Quantum Centre) က သိပ္ပံပညာရှင်တွေက တခြားနည်းလမ်းအသစ်တစ်ခုကို ရှာဖွေကြံဆ နေကြပါတယ်။ "ကွမ်တမ်တွက်ချက်မှုအတွက် ခွဲခြားနိုင်စွမ်းရှိသော အခြေအနေပေါင်းများစွာပါဝင်တဲ့ ကွမ်တမ်ဝတ္တုတွေ ကို အသုံးချနိုင်ဖို့ ကျွန်တော်တို့ကို ရုပ်သဘာဝက ခွင့်ပြုထားတယ်ဗျ" လို့ MIPT က ရူပဗေဒပညာရှင် အလက်စ်ဆေး ဖီဒိုရော့ဗ် Alexey Fedorov က ဆိုပါတယ်။ သူတို့အဖွဲ့ဟာ ကျူဒစ် qudits လို့ခေါ်တဲ့ အထွေထွေ အမျိုးမျိုးသော စွမ်းအင်အဆင့်(energy level) တွေများစွာပါဝင်တဲ့ ကျူဘစ် qubits တွေကို ဖန်တီးကြည့်ခဲ့ကြတယ်။ ကျူဒစ် မှာပါတဲ့ "ဒီ - d " က မတူညီတဲ့စွမ်းအင်အဆင့် (different energy level)အရေအတွက်ကို ကိုယ်စားပြုတယ်။ "ကျူဒစ် တစ်ခု (1 qudit) တစ်နည်းပြောရရင် ဒီ-အရေအတွက်ရှိတဲ့ စွမ်းအင်အဆင့်တွေပါဝင်တဲ့ ကွမ်တမ်ဝတ္ထုတစ်ခုမှာ၊ ကျူဘစ် ယောင် (virtual qubit) များစွာပါဝင်နိုင်တယ်။ ဒါကြောင့် ကျူဒစ်တွေအချင်းချင်း ဆက်သွယ်ဆောင်ရွက် အလုပ်လုပ်တယ်ဆိုတဲ့ ကိစ္စမှာ၊ ကျူဘစ်ယောင်တွေ အချင်းချင်း အပြန်အလှန်ဆက်သွယ်လုပ်ဆောင်တဲ့ကိစ္စတွေပါ ပါဝင်တယ်။ ထိတွေ့ဆုပ်ကိုင်၍မရသော ကွမ်တမ်သတင်းအချက် သီအိုရီ abstract quantum information theory ရှုထောင့်ကကြည့်မယ်ဆိုရင်၊ အားလုံးဟာ အတူတူအခြေအနေအတိုင်း ဆက်လက်တည်ရှိနေမယ်။ ဒါပေမယ့် တကယ့်ရုပ်ဝတ္ထုပိုင်းဆိုင်ရာ အကောင်အထည်ဖေါ်တဲ့ကိစ္စမှာတော့ မတူညီတဲ့အဆင့်တွေအများကြီးပါတဲ့စနစ်က အသုံးဝင်နိုင်လောက်တဲ့ စွမ်းအင်ရင်းမြစ်ကို ကိုယ်စားပြုတယ်..." လို့ သူကရှင်းပြပါတယ်။ နောက်ဆုံးမှာ သူမှတ်ချက်ပြုတာကတော့ "ဒီကွမ်တမ်တွက်ချက်မှုနယ်ပယ်ဟာ အလျင်အမြန်တိုးတက်လာပေမယ့်လို့ ဘယ်တော့လောက်မှာ ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုလာကြမယ်ဆိုတာကိုတော့ ဘယ်သူကမှ ကံသေကံမ မပြောနိုင်ဘူးဗျ" လို့ သူကဆိုပါတယ်။ ဒါပေမယ့် ဘာပဲပြောပြော ဒီ-ဝေဗ့်၊ နာဆာ၊ ဂူးဂဲလ် နဲ့ အိုင်ဘီအမ် တို့ရဲ့ အခု ၂၀၁၇ ပထမနှစ်ဝက်ရဲ့ လတ်တလောတိုးတက်မှုတွေကို ကြည့်လိုက်မယ်ဆိုရင်၊ ကွမ်တမ်ကွန်ပျူတာဆိုတာ ကျွန်တော်တို့ရဲ့ လက်နှစ်ကမ်း အကွာလောက်ကို ရောက်နေပြီလို့ ရဲရဲကြီးမှတ်ချက်ပြုနိုင်ပါတယ်။
ရွှင်လန်းချမ်းမြေ့ပါစေ။
ကျော်ခိုင်စိုး(infoTherapy)


Friday, August 11, 2017

ပိုင်သွန် သို့မဟုတ် ရိုးရှင်းမှု၏စွမ်းအား

ပိုင်သွန် သို့မဟုတ် ရိုးရှင်းမှု၏စွမ်းအား

မိတ်ဆက်နိဒါန်း

                ကျွန်တော်တို့မှာ C, C++ , Java, PHP တို့ထက် ဆော့ဖ်ဝဲ ရေးသားထုတ်လုပ်နိုင်စွမ်း (productivity) ပိုကောင်းတဲ့ ပရိုဂရမ်ဘာသာစကားတစ်ခုရှိတယ်။ အဲဒီပရိုဂရမ်ဘာသာစကားရဲ့ ကွန်ပျူတာမှတ်ဉာဏ်သုံးစွဲမှု(memory consumption)အပိုင်းဟာ Java ထက်ပိုကောင်းပြီး၊ C သို့မဟုတ် C++ ထက်လည်း အများကြီးတော့ ပိုပြီးတော့ မဆိုးလှဘူး။ အဲဒီ ဘာသာစကားဟာ ၂၀၀၃ ကနေ အခု ၂၀၁၇ အထိ ဆယ့်ငါးနှစ်ဆက်တိုက် TIOBE Programming Community Index ရဲ့ အောင်မြင်ကျော်ကြားမှုအရှိဆုံး ထိပ်တန်း ပရိုဂရမ်ဘာသာစကားဆယ်မျိုးစာရင်းမှာအမြဲပါဝင်နေတယ်။ ၂၀၀၇ နဲ့ ၂၀၁၀ နှစ်တွေမှာ နှစ်တစ်နှစ်ရဲ့ ပရိုဂရမ်ဘာသာစကား (Programming Language of the Year)အဖြစ်လည်းသတ်မှတ်ခံခဲ့ရတယ်။  အခု ၂၀၁၇ ခု မတ်လ စစ်တမ်းတွေအရ ပဉ္စမမြောက် အကျော်ကြားဆုံးပရိုဂရမ်ဘာသာစကားဖြစ်တယ်။ ဒါ့အပြင် ၂၀၁၀ခုနှစ်လောက်ကစပြီး အဲဒီ ပရိုဂရမ်ဘာသာစကားကို ကမ္ဘာ့ထိပ်တန်း တက္ကသိုလ်ကြီးတွေမှာ ကွန်ပျူတာသိပ္ပံ၊ တုပအသိဉာဏ်ပညာ နဲ့ တခြား သိပ္ပံနဲ့အင်ဂျင်နီယာပညာရပ်တွေရဲ့ လက်တွေ့အသုံးချ ပရိုဂရမ်ဘာသာစကားအဖြစ်အသုံးပြုလာကြတယ်။ အဲဒီပရိုဂရမ်ဘာသာစကားအပါအဝင် အခြားဘာသာစကား တစ်မျိုးအထက် တတ်ကျွမ်းသူတွေအားလုံးက အဲဒီပရိုဂရမ်ဘာသာစကားကို "သင်ယူလေ့လာ အသုံးချဖို့ အလွယ်ကူဆုံး ဘာသာစကား" အဖြစ် တညီတညွတ်တည်းသတ်မှတ်ကြတယ်။ အဲဒီ ပရိုဂရမ်ဘာသာစကားကတော့ ပိုင်သွန် (Python) ပဲဖြစ်ပါတယ်။

 

နောက်ခံသမိုင်း

                ဘာသာပြန်အမျိုးအစားinterpreted language တစ်ခုဖြစ်တဲ့၊ အထွေထွေသုံး general purpose ပရိုဂရမ်ဘာသာစကား ပိုင်သွန်ကို  နယ်သာလန်နိုင်ငံသား ဒတ်ချ်လူမျိုး ကွန်ပျူတာပညာရှင် ဂူရီဒို ဗန် ရော့စ်ဆမ် (Guido van Rossum, born 31 January 1956) က ၁၉၈၉ ဒီဇင်ဘာမှာ စတင်တည်ထွင်ဖန်တီးခဲ့ပြီး ၁၉၉၁မှာ အများသုံးဖို့ ပထမဆုံးဖြန့်ဝေပေးခဲ့ပါတယ်။ Python 2.0 ကို ၂၀၀၀ခုနှစ် အောက်တိုဘာ ၁၆ ဖြန့်ချီခဲ့ပြီး၊ Python 3.0 ကို လုံးဝကွဲပြားခြားနားတဲ့ သီးသန့်လမ်းကြောင်းအသစ်တစ်ခုအဖြစ် ၂၀၀၈ ခုနှစ် ဒီဇင်ဘာ ၃ ရက်မှာ ဖြန့်ချိခဲ့တယ်။

 ပိုင်သွန်မှာပါဝင်ဖွဲ့စည်းထားတဲ့ လိုင်ဘရီ(library = ပရိုဂရမ်များ၊ ဆော့ဖ်ဝဲ module များ၊ ဆော့ဖ်ဝဲ package များ)တွေကို စုစည်းသိမ်းဆည်းထားတဲ့ တရားဝင်နေရာ (official repository) မှာ၊ ၂၀၁၇ မေလ စာရင်းတွေအရ ပိုင်သွန်ကိုထောက်ပံ့တဲ့၊ ပိုင်သွန် ပရိုဂရမ်ဘာသာစကားအတွက် အလုပ်လုပ်ပေးတဲ့၊ တခြားအဖွဲ့အစည်းတွေရဲ့ဆော့ဖ်ဝဲ( third-party software library) ပေါင်း ဟာ တစ်သိန်းခုနှစ်ထောင်ကျော် (၁၀၇၀၀၀)ရှိနေပြီလို့ဆိုပါတယ်။ အဲဒီဆော့ဖ်ဝဲလိုင်ဘရီတွေမှာ

·         gui, web frameworks, multimedia, databases, networking, communications စတာတွေနဲ့ပတ်သက်ပြီအသုံးချလို့ရတဲ့ အပိုင်းတွေပါဝင်သလို၊

·         ဆော့ဖ်ဝဲစနစ်တွေ နဲ့ တခြားစနစ်တွေကို စီမံခန့်ခွဲဖို့အတွက် လိုအပ်တဲ့ test frameworks, automation and web scraping နဲ့ documentation tools တွေလည်းပါဝင်ပါတယ်။

·         ဒါ့အပြင် သိပ္ပံ နဲ့ နည်းပညာ နယ်ပယ်တွေအတွက် scientific computing, text processing နဲ့ image processing တို့လို အလုပ်မျိုးတွေအတွက် တကယ့်ကိုပြည့်စုံကောင်းမွန်တဲ့ လိုင်ဘရီ တွေလည်း အမြောက်အများပါဝင်ပါတယ်။

 

သွင်ပြင်လက္ခဏာနှင့် အတွေးအခေါ်

                ပိုင်သွန်ဟာ ပရိုဂရမ်တည်ဆောက်ရေးသားမှုပုံစံအမျိုးမျိုးကို ထောက်ပံ့တဲ့ multi-paradigm programming language အမျိုးအစားဖြစ်တယ်။ ပိုင်သွန်ဟာ object-oriented programming  နဲ့ structured programming ပုံစံတွေကို အပြည့်အဝထောက်ပံ့ပေးတဲ့အပြင်၊ functional programming နဲ့ aspect-oriented programming တွေကိုပါ ထောက်ပံ့တယ်။ ဒါ့အပြင် design by contract နဲ့ logic programming ပုံစံတွေကိုပါ ချဲ့ထွင်သုံးစွဲလို့ရအောင် ပိုင်သွန်ကို ဒီဇိုင်းပြုတည်ဆောက်ထားတယ်။ ပိုင်သွန်ဟာ variable အမျိုးအစားတွေကို အရှင်ထားတဲ့ တစ်နည်းပြောရရင် variable တွေရဲ့ data type တွေကို ကြိုတင် ကြေငြာဖို့မလိုတဲ့ dynamic type အမျိုးအစားဖြစ်တယ်။ C, C++ ရဲ့လွှမ်းမိုးမှုခံရတဲ့ တခြား ပရိုဂရမ်ဘာသာစကားတွေလို ဆီမီးကော်မာ နဲ့ တွန့်ကွင်းကိုမသုံးပဲ ပိုင်သွန်ဟာ line of code တွေ code block တွေကို ခွဲခြားဖို့အတွက် white space ကိုသာအသုံးပြုတယ်။

ပိုင်သွန်ရဲ့ အတွေးအခေါ်ပိုင်းဆိုင်ရာ ဆောင်ပုဒ်တွေကတော့

·         လှပခြင်းဟာ ကြည့်ရဆိုးခြင်းထက် ပိုကောင်းတယ်။

·         တိတိကျကျ တိုက်ရိုက်ပြောလိုက်တာက သွယ်ဝိုက်ပြောတာထက် ပိုကောင်းတယ်။

·         ရိုးရှင်းခြင်းဟာ ရှုပ်ထွေးခြင်းထက် ပိုကောင်းတယ်။

·         ရှုပ်ထွေးခြင်းဟာ နားလည်ရခက်လောက်အောင်ရှုပ်ထွေးခြင်းထက် ပိုကောင်းတယ်။

·         ကုဒ်တွေကို ဖတ်ရှုနိုင်စွမ်းဟာ ထည့်သွင်းစဉ်းစားရမယ့်အချက်ဖြစ်တယ်။

 

ဘာကြောင့် ပိုင်သွန်ကိုလေ့လာသင့်တာလဲ

·         ပိုင်သွန်ဟာ လွတ်လပ်စွာ အခမဲ့ သုံးစွဲနိုင်တဲ့ ဆော့ဖ်ဝဲ Free and Open Source Software ဖြစ်တယ်။

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

·         အသုံးအများဆုံး operating system ( Linux, Windows, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE and PocketPC) တိုင်းအတွက် ပိုင်သွန်ဘာသာပြန်ဆော့ဖ်ဝဲ Python Interpreter တွေရှိတယ်။ ဒါ့အပြင် Python ကုဒ်တွေကို C, C++, Java, JavaScript,Go ကုဒ်တွေအဖြစ် compile လုပ်ပေးနိုင်တဲ့ compiler တွေလည်း အများကြီးရှိတယ်။

·         (သီအိုရီအရ)အကန့်အသတ်မရှိတဲ့ ကိန်းပြည့်တွေကို အသုံးပြုနိုင်တယ်။ array နဲ့ matrix ဆိုင်ရာ တွက်ချက်မှုတွေ၊ numerical data processing and manipulation တွေကို အလွန်လျင်မြန်စွာ လုပ်ဆောင်နိုင်တယ်။

·         စာသား(String)နဲ့ပတ်သက်တဲ့ပြဿနာတွေနဲ့ အဘိဓါန်ရှာဖွေရေး(Dictionay Search)နဲ့ဆိုင်တဲ့ ပြဿနာတွေနဲ့ပတ်သက်လာရင် ပိုင်သွန်ဟာ တခြားပရိုဂရမ်ဘာသာစကားတွေထက် သိသိသာသာ အကောင်းမွန်ဆုံးလုပ်ဆောင်နိုင်တယ်။

·         CSV, Excel, relational and non-relational databases, HDF5 နဲ့  JSON အစရှိတဲ့ file format ပေါင်းများစွာနဲ့ အချက်အလက်ပေါင်းမြောက်များစွာကို အလွယ်တကူ ရေးနိုင်ဖတ်နိုင် ပြင်ဆင်ပြောင်းလဲတယ်။

·         Yahoo!, Google Finance, the World Bank အစရှိတဲ့ အဖွဲ့အစည်းကြီးတွေက ဝက်ဘ်အခြေခံ အချက်အလက်ရင်းမြစ် web-based data source တွေကိုလည်း အလွယ်တကူ တိုက်ရိုက်ဖတ်နိုင်တယ်။ processing လုပ်နိုင်တယ်။

·         အချက်အလက်တွေကို ရုပ်ပုံကားချပ်တွေနဲ့ သရုပ်ပြခြင်း data visualization ကိစ္စတွေကို အလွယ်တကူလုပ်ဆောင်နိုင်တယ်။

·         ပိုင်သွန်ရဲ့ ပြည့်စုံကြွယ်ဝတဲ့ လိုင်ဘရီတွေကြောင့် တုပအသိဉာဏ်ပညာ နဲ့ အချက်အလက်သိပ္ပံပညာအတွက် အသင့်တော်ဆုံး နဲ့ အကောင်းဆုံး ပရိုဂရမ်ဘာသာစကားဖြစ်တယ်။

 


အသုံးချနယ်ပယ်များနှင့် ဥပမာများ
ဂူးဂဲလ် ရှာဖွေရေးပရိုဂရမ်စာမျက်နှာ (google search engine)ဟာ အသွင်အပြင် အမြင်အာရုံအားဖြင့် ရိုးရှင်းပါတယ်။ ဒါပေမယ့် သူ့ရဲ့နောက်ကွယ်မှာ အလုပ်လုပ်နေတဲ့ ဂရပ်ဖ်သီအိုရီ(Grapyh Theory) ကိုလက်တွေ့အသုံးချထားတဲ့ အယ်ဂိုရစ်သမ်တွေ၊ တုပအသိဉာဏ်ပညာကိုင်းကွဲတစ်ခုဖြစ်တဲ့ သဘာဝဘာသာစကားအား အဆင့်ဆင့်အသုံးချမှု (natural language processing)ဆိုင်ရာ အယ်ဂိုရစ်သမ်တွေ၊ အသံဖြင့်ရှာဖွေမှု(voice search)၊ ရုပ်ပုံဖြင့်ရှာဖွေမှု (image search) တို့လိုကိစ္စရပ်နဲ့ ဆိုင်တဲ့ အယ်ဂိုရစ်သမ်တွေကို ပိုင်သွန်နဲ့ ​ရေးသားဖန်တီးထားတာဖြစ်ပါတယ်။ ဒီကနေ့ခေတ်ရဲ့ မရှိမဖြစ်နီးနီးအဆင့်ကိုရောက်ရှိနေပြီဖြစ်တဲ့ ဖျော်ဖြေရေးဆိုဒ် ယူကျုဘ်(Youtube) နဲ့ အဲဒီဆိုဒ်ရဲ့ စီမံခန့်ခွဲမှုဆိုင်ရာကိစ္စတွေကို  ပိုင်သွန်နဲ့ရေးထားတာပါ။ (မှတ်ချက်။ ဒီနေရာမှာ ယူကျုဘ် ကို ဖြော်ဖြေရေးဆိုဒ်လို့ သုံးစွဲလိုက်ခြင်းဟာ တစ်ဝက်တစ်ပျက်သာမှန်ပါတယ်။ တကယ်တော့ ပညာကို အမှန်တကယ်လိုလားသူတို့ရဲ့ အဓိက၊ ပင်မ၊ ပညာရင်းမြစ်ဟာလည်း ယူကျုဘ်ပဲဖြစ်ပါတယ်။ ပညာရှင်တွေ ပါမောက္ခကြီးတွေ ဝါသနာရှင်တွေရဲ့ သင်ခန်းစာပို့ချချက်တွေ၊ ဆွေးနွေးချက်တွေ၊ သင်ကြားမှုတွေဟာ Youtube ပေါ်မှာ ပညာရပ်နယ်ပယ်တိုင်းအတွက် အလျှံပယ်ရှိနေပါတယ်။)
                Instagram ဝက်ဘ်ဆိုဒ်ကလည်း ပိုင်သွန်နဲ့ရေးထားတာဖြစ်သလို လူမှုရေးသတင်းကွန်ယက်ဆိုဒ် social news networking site တစ်ခုဖြစ်တဲ့ Reddit ဆိုရင်လည်း အစအဆုံး အပြီးအစီး ပိုင်သွန်နဲ့ရေးသားထားတာပါ။ ဒါ့အပြင် Wikipedia, Google, Yahoo!, CERN - European Organization for Nuclear Research  ဥရောပ နြူကလီးယားသုတေသနအဖွဲ့၊ NASA- National Aeronautics and Space Administration  အမေရိကန် အမျိုးသား လေကြောင်းနဲ့အာကာသဆိုင်ရာ အုပ်ချုပ်ရေးအဖွဲ့ တို့လိုအဖွဲ့အစည်း...စတာတွေအပြင်၊ အမေရိကားရဲ့အကြီးမားဆုံး ငွေကြေးအဖွဲ့အစည်းတွေ ဘဏ်တွေဖြစ်တဲ့ Bank of America, Merrill Lynch နဲ့ J.P. Morgan တို့မှာ  ပိုင်သွန်ကို ကျယ်ကျယ်ပြန့်ပြန့်အသုံးချနေကြပါတယ်။ အထူးအလေးအနက်ထားပြောလိုတာက အခုတင်ပြခဲ့တဲ့အဖွဲ့အစည်းတွေအနေနဲ့ ပိုင်သွန်ဘာသာစကားတစ်ခုတည်းကို အသုံးပြုတယ်လို့ ဆိုလိုတာမဟုတ်ပါဘူး။ တခြား ပရိုဂရမ်ဘာသာစကားတွေကိုလည်းအသုံးပြုကြမှာ ဧကန်မလွဲပါ။ တကယ်တော့ အသေးစား ဆော့ဖ်ဝဲကုမ္ပဏီလေးတွေတောင် ပရိုဂရမ်ဘာသာစကားတစ်ခုတည်းကိုသုံးတာမျိုးမဟုတ်ပဲ စူးနေရာစူး ဆောက်နေရာဆောက်၊ ဒူးနေရာဒူး တော်နေရာတော် သင့်လျော်ရာ ပရိုဂရမ်ဘာသာစကားတွေကို သင့်လျော်တဲ့နေရာမှာ သင့်လျော်သလို အသုံးချကြတာပဲဖြစ်ပါတယ်။


နိဂုံးအမှာ
ui, database, business logic, login စတဲ့ ဆင်တူယိုးမှား စကားလုံးတွေပဲ ထပ်တလဲလဲပါဝင်နေတဲ့ အသေးစား နဲ့ အလတ်စား စီးပွားရေးဆိုင်ရာဆော့ဖ်ဝဲတွေ၊ စီမံခန့်ခွဲမှုဆိုင်ရာပရိုဂရမ်တွေကို နှစ်ပေါင်းများစွာ ရေးသားနေရတာ ငြီးငွေ့နေပြီဆိုရင် အခုအချိန်မှာ မိတ်ဆွေဟာ ပိုင်သွန်ကို လေ့လာပြီး အသစ်အဆန်းတွေ တည်ထွင်ဖန်တည်း စမ်းသပ်ကြည့်ဖို့ အသင့်လျော်ဆုံးအချိန်ပါပဲ။ ကွန်ပျူတာသိပ္ပံနဲ့ အိုင်တီပညာရဲ့ အရပ်ဂတ်လားရာတွေဖြစ်တဲ့ တုပအသိဉာဏ် (Artificial Intelligence)၊ သဘာဝဘာသာစကား အဆင့်ဆင့်အသုံးချမှု (natural language processing)၊ အချက်အလက်သိပ္ပံ (Data Science)၊ စက် လေ့လာသင်ကြားမှု(machine learning) နဲ့ဆိုင်တဲ့ သုတေသနလုပ်ငန်းတွေ ဆော့ဝဲတွေ ပရိုဂရမ်တွေ အတွက် အကောင်းဆုံး အထိရောက်ဆုံး အလိုက်ဖက် အသင့်တော်ဆုံး ပရိုဂရမ်ဘာသာစကားက ပိုင်သွန်ပါ။ သိပ္ပံ နည်းပညာနဲ့ အင်ဂျင်နီယာဆိုင်ရာ လုပ်ငန်းတွေနဲ့ ပတ်သက်ပြီး ရှုပ်ထွေးအဆင့်မြင့်တဲ့ တွက်ချက်မှုတွေကို  အဆင်ပြေချောမွေ့စွာ လုပ်ဆောင်နိုင်တဲ့ ပရိုဂရမ်ဘာသာစကားက ပိုင်သွန်ပါ။ မိတ်ဆွေရဲ့ မဟာဘွဲ့ ပါရဂူဘွဲ့စာတမ်းတွေအတွက် မူလသုတေသနနယ်ပယ်အတွက် ပေးရတဲ့အချိန်တွေကို မထိခိုက်စေဘဲ မိတ်ဆွေရဲ့ ကျမ်းကြီးကြပ် စစ်ဆေးသူတွေ စိတ်ဝင်စား အထင်ကြီးအလေးထားနိုင်လောက်တဲ့ mathematical model, software model, prototype တွေ အလွယ်တကူ တည်ဆောက် သရုပ်ပြနိုင်တဲ့ ပရိုဂရမ်ဘာသာစကားက ပိုင်သွန်ပါ။ နိဂုံးချုပ်ရရင်တော့ အနာဂတ်မှာတွေ့ကြုံလာရနိုင်တဲ့  နည်းပညာပိုင်းဆိုင်ရာစိန်ခေါ်မှုတွေကို  ရင်ဆိုင်ဖြေရှင်းဖို့ အသင့်ရှိနေကြောင်း သက်သေပြတဲ့အနေနဲ့၊ မိတ်ဆွေရဲ့ ကျွမ်းကျင်မှုစာရင်းထဲမှာ ပိုင်သွန်ပရိုဂရမ်ဘာသာစကားကို ထပ်မံဖြည့်စွက်လိုက်ပါလို့ လေးစားစွာ အကြံပြုလိုက်ပါတယ်။

REF:  

1.https://en.wikipedia.org/wiki/Python_(programming_language)

2. PH526x: Using Python for Research, video lectures by Jukka-Pekka "JP" Onnela, Assistant Professor of Biostatistics, Harvard University

https://www.edx.org/course/using-python-research-harvardx-ph526x

3. YVES HILPISCH(2015), Derivatives Analytics with Python, John Wiley & Sons Ltd

 

ရွှင်လန်းချမ်းမြေ့ပါစေ။

ကျော်ခိုင်စိုး(infoTherapy)

Verified Certificate:Using Python for Research(Harvard University via edX)

 



Wednesday, August 2, 2017

Artificial Intelligence: A Modern Approach - Lesson IV

တုပအသိဉာဏ္ ေခတ္သစ္ေလ့လာခ်က္


အခန္း ၂ အသိဉာဏ္ရိွေသာအရာမ်ား
ေအးဂ်င့္ (Agent)
အာရံုခံကရိယာ(sensor) ေတြကတဆင့္၊ ပတ္၀န္းက်င္(environment) ရဲ့ အေျခအေန(state)ကို သိျမင္နားလည္ေအာင္လုပ္ေဆာင္(percepts) ျပီး၊ အလိုအေလ်ာက္တုန့္ျပန္ေဆာင္ရြက္နိုင္တဲ့အရာ(actuator) ေတြကတဆင့္၊ အဲဒီပတ္၀န္းက်င္ကို တစ္စံုတစ္ရာ တုန့္ျပန္လုပ္ေဆာင္တဲ့ အရာမွန္သမွ်ဟာ ေအးဂ်င့္ ျဖစ္တယ္။
ဥပမာ။
•              Thermostat, Cell phone, Vacuum cleaner, Self-driving car, Human, Robot စတာေတြဟာ agent ေတြ။
•              လူသားေအးဂ်င့္ ရဲ့ အာရံုခံကရိယာ sensor ေတြဟာ နား၊ မ်က္စိ၊ နွာေခါင္း အစရိွတဲ့ အာရံုခံအဂၤါေတြျဖစ္ျပီး တုန့္ျပန္ကရိယာ actuator ေတြကေတာ့ လက္၊ ေျခေထာက္၊ ပါးစပ္ စတဲ့ တုန့္ျပန္လုပ္ေဆာင္တဲ့ ခနၶာကိုယ္အစိတ္အပိုင္းေတြ။
•              စက္ရုပ္ ရဲ့ sensors ေတြဟာ၊  Cameras, sound recorder, infrared range, Smoke-detector စတာေတြျဖစ္ျပီး actuator ကေတာ့ အဲဒီစက္ရုပ္ လႈပ္ရွား လည္ပတ္နိုင္ဖို့တည္ေဆာက္ထားတဲ့ အေထြေထြ အမို်းမို်းေသာ motors ေတြ၊ arms (လက္တံ) ေတြ။

ေအးဂ်င့္ေတြမွာ
၁။ ပတ္၀န္းက်င္(environment) က သိျမင္ၾကားမႈေတြကို နားလည္ေအာင္လုပ္ေဆာင္ျခင္း (perceive)
၂။ အဆင့္ ၁ ကရရိွလာတဲ့ perception နဲ့၊ သူ့ရဲ့ ရည္ရြယ္ခ်က္ ဦးတည္ခ်က္(goal) ေပၚမူတည္ျပီး ေတြးေတာျခင္း၊ ဆံုးျဖတ္ျခင္း၊ ေရြးခ်ယ္ျခင္း၊ တြက္ခ်က္ျခင္း (think) နဲ့
၃။ တုန့္ျပန္ေဆာင္ရြက္ျခင္း (act)
ဆိုတဲ့ Circle of perceive-->think-->act ဆိုတဲ့အေျခအေနေတြဟာ ထပ္တလဲလဲ ျဖစ္ပ်က္ေနပါတယ္။

အာရံုခံရရိွမႈနွင့္ အာရံုခံရရိွမႈအစီအစဉ္မ်ား (Percept and Percept Sequence)
•              ေပးထားတဲ့ သတ္မွတ္ထားတဲ့ အခိ်န္တစ္ခုမွာ agent ရဲ့ input အျဖစ္ ပတ္ဝန္းက်င္က အာရံုခံရရိွလာတဲ့ သတင္းအခ်က္အလက္တစ္ခုဟာ percept
•              ေပးထားတဲ့ သတ္မွတ္ထားတဲ့ အခိ်န္တစ္ခုအထိ agent က ပတ္ဝန္းက်င္ကေန အာရံုခံရရိွထားတဲ့ အခ်က္အလက္ေတြအားလံုး (history) ဟာ percept sequence
ေယဘုယ်ေျပာမယ္ဆိုရင္ agent တစ္ခုဟာ၊ သူ့အတြက္ လုပ္ေဆာင္ခ်က္ (action) ေရြးခ်ယ္တဲ့အခါ၊ သူအာရံုခံရရိွထားတဲ့ အခ်က္အလက္ေတြအားလံုး (percept sequence) အေပၚမွာ မူတည္ျပီးေရြးခ်ယ္တာျဖစ္တယ္။ သူ မရရိွ မသိရိွတဲ့ အခ်က္အလက္အေပၚမွာ အေျခမခံဘူး။

ေအးဂ်င့္ဖန္ရွင္ နွင့္ ေအးဂ်င့္ပရိုဂရမ္ (Agent Function and Agent Program)
                သခၤ်ာဆန္ဆန္ေျပာမယ္ဆိုရင္ ေအးဂ်င့္တစ္ခုရဲ့ အျပုအမူကို agent function နဲ့ေဖၚျပတယ္။ agent function က၊ ေပးထားတဲ့ percept sequence ကို action တစ္ခုနဲ့ တဲြဖက္ခိ်တ္ဆက္ေပးတယ္။ artificial agent တစ္ခုအတြက္ agent function ကို အေကာင္အထည္ေဖၚေပးတာက agent program
ဒါေၾကာင့္ ဒီနွစ္ခုရဲ့အဓိက ကဲြျပားျခားနားခ်က္က
•              agent function ဆိုတာ အေကာင္အထည္မရိွတဲ့ သခၤ်ာဆိုင္ရာသတ္မွတ္ေဖၚျပခ်က္တစ္ခု
•              agent program ဆိုတာ တကယ့္ ရုပ္စနစ္ (physical system) တစ္ခုအတြင္းမွာ အလုပ္လုပ္ (run)ဖို့ အေကာင္အထည္ေဖၚ တည္ေဆာက္ထားတဲ့ အရာတစ္ခု။

အထက္မွာ ေဆြးေနြးခဲ့တဲ့ စကားလံုးေတြနဲ့ သေဘာတရားကို နားလည္ဖို့အတြက္ အလြန္ရိုးရွင္းတဲ့ "ဖုန္စုပ္စက္" စနစ္တစ္ခုကို ဥပမာအျဖစ္ေလ့လာၾကည့္ပါစို့။
Fig 2.2 Simple Vaccum-Cleaner
ဒီစနစ္အလုပ္လုပ္မယ့္ ပတ္ဝန္းက်င္(environment)
•              ေလးေထာင့္ကြက္ ေအ နဲ့ ဘီ။
agent က အာရံုခံရရိွတဲ့အေျခအေန(percept)
•              သူ့ရဲ့လက္ရိွတည္ေနရာ (ေအမွာလား။ ဘီမွာလား။ A or B)နဲ့
•              အဲဒီတည္ေနရာရဲ့ အေျခအေန(ညစ္ပတ္ေနသလား။ သန့္ရွင္းေနသလား။ Dirty or Clean)
agent ရဲ့ ေရြးခ်ယ္နိုင္တဲ့လုပ္ရပ္action ေတြက
•              ဘယ္ကိုေရွြ့မလား။ ညာကိုေရွြ့မလား။ ဖုန္စုပ္မလား။ Left, Right, Suck,

ဒီစနစ္နဲ့ပတ္သက္ျပီး သိပ္ကိုရိုးရွင္းလြန္းတဲ့ agent function တစ္ခုကို ေအာက္ပါအတိုင္း သတ္မွတ္နိုင္တယ္။
                if the current square is dirty, then suck;
                otherwise, move to the other square.
                လက္ရိွ ေလးေထာင့္ကြက္သည္ ညစ္ေပေနပါက၊ ဖုန္စုပ္ပါ။
                ထိုသို့မဟုတ္ပါက၊ အျခားေလးေထာင့္ကြက္သို့ ေရွြ့ပါ။

ဒီ agent ရဲ့ percept sequence နဲ့ အဲဒီအေပၚမူတည္ျပီး ေဆာင္ရြက္တဲ့ action ေတြ၊ တစ္နည္းေျပာရရင္ agent function ေတြကို (တစ္စိပ္တစ္ပိုင္း) ဇယားခ်ၾကည့္မယ္ဆိုရင္ ေအာက္ပါအတိုင္းျဖစ္နိုင္ပါတယ္။
Percept sequence
Action
[A, Clean]

Right
[A, Dirty]

Suck
[B, Clean]

Left
[B, Dirty]

Suck
[A, Clean], [A, Clean]

Right
[A, Clean], [A, Dirty]

Suck
...
...
...
...
[A, Clean], [A, Clean], [A, Clean]

Right
[A, Clean], [A, Clean], [A, Dirty]

Suck
...
...
...
...
Figure 2.3 Partial tabulation of a simple agent function for the vacuum-cleaner world shown in Figure 2.2.

agent program တစ္ခု လက္ေတြ့အေကာင္အထည္ေဖၚေရးသားမယ္ဆိုရင္ေတာ့ ေအာက္ပါအတိုင္း ျဖစ္နိုင္ပါတယ္။
function REFLEX-VACUUM-AGENT([location, status]) returns an action
if status = Dirty then return Suck
else if location = A then return Right
else if location = B then return Left

ေၾကာင္းကို်းညီျခင္း Rationality 
ေၾကာင္းကို်းနွင့္အညီေဆာင္ရြက္ေသာေအးဂ်င့္ rational agent ဆိုတာကို အဓိပၸါယ္မသတ္မွတ္ခင္မွာ အရင္ဆံုး rationality လို့ေခၚတဲ့ ေၾကာင္းကို်း အခ်က္အလက္နဲ့အညီ မွန္ကန္စြာ လုပ္ကိုင္ေဆာင္ရြက္နိုင္စြမ္းနဲ့ပတ္သက္ျပီး ေလ့လာၾကပါစို့။ ေပးထားတဲ့ အခိ်န္ကာလတစ္ခုမွာ ေၾကာင္းကို်းနွင့္အညီ လုပ္ကိုင္ေဆာင္ရြက္နိုင္စြမ္းဆိုတာ ေအာက္ပါ အခ်က္ေလးခ်က္အေပၚမူတည္ပါတယ္။
•              ေအာင္ျမင္မႈနဲ့ပတ္သက္တဲ့စံနႈန္း  (criterion of success) ကို သတ္မွတ္ျပဌာန္းတဲ့ စြမ္းေဆာင္ရည္တိုင္းတာမႈေတြ
•              ပတ္၀န္းက်င္နဲ့ပတ္သက္ျပီး ေအးဂ်င့္ရဲ့ ၾကိုတင္သိျမင္ထားမႈေတြ
•              ေအးဂ်င့္ကလုပ္နိုင္တဲ့ ေဆာင္ရြက္ခ်က္ေတြ
•              အခုလက္ရိွအခိ်န္အထိ ေအးဂ်င့္က (ပတ္၀န္းက်င္ကေန) သိရိွအာရံုခံ သိရိွထားတဲ့အခ်က္အလက္ အစီအစဉ္ေတြ။

ေၾကာင္းကို်းအညီေဆာင္ရြက္ေသာေအးဂ်င့္ (Rational Agent)
(Section 2.2. Good Behavior: The Concept of Rationality, p37)
ေၾကာင္းကို်းနဲ့အညီေဆာင္ရြက္တဲ့ေအးဂ်င့္တစ္ခုဟာ၊ ပတ္၀န္းက်င္က အာရံုခံေလ့လာလို့ရသမွ်အရာေတြနဲ့ ၊ သူ့(အဲဒီ agent) ထဲမွာ ထည့္သြင္းတည္ေဆာက္ထားတဲ့အသိပညာကို အသံုးျပုျပီး၊ ျဖစ္နိုင္သမွ် ျပင္ပအာရံုခံမႈအစီအစဉ္အသီးသီးအတြက္၊ အကို်းရလာဒ္ စြမ္းေဆာင္ရည္ အျမင့္မားဆံုးအေျခအေနျဖစ္ေစမယ့္ ေဆာင္ရြက္မႈကိုေရြးခ်ယ္ လုပ္ကိုင္တယ္။

ပံုစံတက်အဓိပၸါယ္သတ္မွတ္ခ်က္အတိုင္းမဟုတ္ပဲ၊ ရွင္းလင္းလြယ္ကူေအာင္မွတ္မယ္ဆိုရင္၊
•              ပတ္၀န္းက်င္ရဲ့အေျခအေနေပၚမူတည္ျပီး
•              မွန္ကန္တဲ့ တုန့္ျပန္လုပ္ေဆာင္မႈကို
•              "စြမ္းေဆာင္ရည္တိုင္းတာမႈ အျမင့္မားဆံုးအေျခအေနနဲ့လုပ္ေပးနိုင္ရင္"
တစ္နည္းေျပာရရင္
•              မွန္ကန္တဲ့ တုန့္ျပန္လုပ္ေဆာင္မႈကို
•              သတ္မွတ္ထားတဲ့ အေျခအေန အခ်က္အလက္ ရည္မွန္းခ်က္ေတြအတိုင္း
•              "အေကာင္းဆံုး အျမန္ဆံုး အမွန္ဆံုး ကုန္က်မႈအနည္းဆံုး အနၱရယ္အကင္းဆံုး" လုပ္ေပးနိုင္တဲ့ ေအးဂ်င့္မို်းကို
ေၾကာင္းကို်းနဲ့အညီ လုပ္ကိုင္ေဆာင္ရြက္တဲ့ေအးဂ်င့္လို့ေခၚတယ္။
rational agent ကို well-behaved agent ေကာင္းစြာျပုမူေဆာင္ရြက္ေသာ ေအးဂ်င့္လို့လည္းေခၚနိုင္တယ္။

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

ပထမဦးဆံုးအေနနဲ့
•              စြမ္းေဆာင္ရည္တိုင္းတာမႈ (performance measure) ေတြက ဘာေတြလဲ
•              ပတ္ဝန္းက်င္နဲ့ပတ္သက္ျပီးဘာေတြသိထားလဲ
•              ေအးဂ်င့္မွာ ဘယ္လို အာရံုခံကရိယာ sensor ေတြ၊  တုန့္ျပန္ကရိယာ actuator ေတြရိွလဲ။
ဆိုတာ ေျပာရပါမယ္။ ဒါေၾကာင့္ ေအာက္ပါအတိုင္း ယူဆၾကည့္ပါစို့။

ရိုးရွင္းေသာဖုန္စုပ္စက္ေအးဂ်င့္အတြက္ ယူဆခ်က္မ်ား
1.             ေလးေထာင့္ကြက္တစ္ကြက္သန့္ရွင္းမႈတိုင္းအတြက္ အခိ်န္တစ္ဆင့္ျခင္း တစ္ဆင့္ျခင္းမွာ အမွတ္ တစ္မွတ္ေပးမယ္။  ဒီ agent ရဲ့ သက္တမ္းဟာ အခိ်န္အဆင့္ေပါင္း ၁၀၀၀ ရိွတယ္။
2.             ပတ္ဝန္းက်င္ ပထဝီအေနအထားကို ၾကိုသိထားတယ္(A and B)။ ဒါေပမယ့္ agent ရဲ့ စဦးတည္ေနရာနဲ့ သန့္စင္မႈ ညစ္ညမ္းမႈ အေျခအေနကိုေတာ့ ၾကိုမသိဘူး။
3.             ရနိုင္တဲ့ လုပ္ေဆာင္မႈေတြက Left, Right, Suck သာလွ်င္ျဖစ္တယ္။
4.             agent ဟာ သူ့ရဲ့တည္ေနရာနဲ့ သန့္ရွင္းမႈအေျခအေနကို မွန္မွန္ကန္ကန္(အမွားအယြင္းမရိွ) အာရံုခံနိုင္တယ္။

                အဲဒီလို သတ္မွတ္ထားတဲ့အေျခအေနမို်းေတြနဲ့ဆိုရင္ေတာ့ ဒီagent ဟာ rational ျဖစ္တယ္လို့ေျပာလို့ရတယ္။ သူ့ရဲ့ေမွ်ာ္လင့္ထားတဲ့ စြမ္းေဆာင္ရည္ (expected performance) ဟာ အနည္းဆံုးအားျဖင့္ေတာ့ တျခားagent ေတြေလာက္ ျမင့္မားတယ္။
                ဒါေပမယ့္ ဒီ agent ပဲ တျခားအေျခအေနေတြေအာက္မွာဆိုရင္ေတာ့ rational မျဖစ္ေတာ့တာ (irrational ျဖစ္တာ) ကို အလြယ္တကူ ေတြးဆၾကည့္နိုင္ပါတယ္။ ဥပမာ  အဲဒီ agent က ဖုန္ေတြအညစ္အေၾကးေတြအားလံုး ရွင္းလင္းျပီးသြားျပီဆိုပါစို့။ ရွင္းသြားျပီးျဖစ္ေပမယ့္ အဲဒီ agent ဟာ မလိုအပ္ပဲနဲ့ ေရွ့ေနာက္ ဘယ္ညာ အျပန္ျပန္ အလွန္လွန္ ေရြ့လ်ားေနမယ္။ (...otherwise, move to the other square လို့ function ကို သတ္မွတ္ထားတာကိုး။) တကယ္လို့သာ စြမ္းေဆာင္ရည္တိုင္းတာမႈ သတ္မွတ္ခ်က္ထဲမွာ ဘယ္ညာ တစ္ခါေရြ့တိုင္း (ကုန္က်စရိတ္အျဖစ္) ဒဏ္ေၾကးအေနနဲ့ တစ္မွတ္အနုတ္ခံရမယ္လို့မ်ား သတ္မွတ္ထားရင္၊ အဲဒီအေျခအေနေအာက္မွာ ဒီ agent ဟာ rational မျဖစ္ေတာ့ဘူး။ အေကာင္းဆံုး၊ အမွန္ဆံုး၊ ကုန္က်စရိတ္အနည္းဆံုး မဟုတ္ေတာ့ဘူး။ ဒါေၾကာင့္ ပိုမိုေကာင္းမြန္တဲ့ agent သာဆိုရင္ေတာ့ ရိွသမွ်အကြက္အားလံုးသန့္ရွင္းသြားျပီဆိုတာ ေသခ်ာတာနဲ့ အဲဒီ agent ဟာ ဘယ္ကိုမွ မေရြ့လ်ား ဘာမွမလုပ္ပဲေနရမွာျဖစ္တယ္။ တကယ္လို့ သန့္စင္ျပီးသားအေျခအေနကေန တစ္ခါျပန္ျပီး ညစ္ေပနိုင္ေသးတယ္ဆိုရင္၊ agent က အေျခအေနကို မၾကာခဏဆိုသလိုျပန္စစ္ေဆးျပီး လိုအပ္ရင္(ညစ္ေပေနရင္) ျပန္ျပီးသန့္စင္ေပးတာမို်းလုပ္သင့္ပါတယ္။ တကယ္လို့ agent ဟာ ပတ္ဝန္းက်င္ပထဝီအေနအထားကို သိမထားဘူးဆိုရင္၊ သူဟာ A နဲ့ B အကြက္ထဲမွာတင္ ေနမေနပဲ၊ (တျခားအကြက္ေတြကို) သူ့ဘာသာသူ စူးစမ္းရွာေဖြမႈေတြ လုပ္ဖို့လိုအပ္ပါတယ္။


ေအးဂ်င့္၏PEAS
                rational agent တစ္ခုကို အဓိပၸါယ္သတ္မွတ္တဲ့အခါမွာ သူ့အတြက္ လိုအပ္တဲ့အရာေတြကို အုပ္စု ေလးစုခဲြလိုက္တယ္။ အဲဒါေတြကေတာ့ စြမ္းေဆာင္ရည္တိုင္းတာမႈ၊ ပတ္ဝန္းက်င္၊ တုန့္ျပန္လုပ္ေဆာင္သည့္စနစ္မ်ား နဲ့ အာရံုခံစနစ္တို့ ျဖစ္ပါတယ္။ အတိုေကာက္အားျဖင့္ PEAS (Performance, Environment, Actuators, Sensors) ဆိုျပီးမွတ္သားနိုင္ပါတယ္။
ဥပမာ
1. ေမာင္းသူမဲ့ကားအတြက္ PEAS
စြမ္းေဆာင္ရည္။        အနၱရယ္ကင္းမႈ၊ အခိ်န္ကုန္သက္သာမႈ၊ စည္းကမ္းတက်ေမာင္းနွင္မႈ၊ သက္ေတာင့္သက္သာျဖစ္မႈ၊ စသည္
ပတ္ဝန္းက်င္။            လမ္းမ်ား၊ အျခားကားမ်ား၊ လမ္းျဖတ္ကူးသူမ်ား၊ လမ္းအမွတ္အသားမ်ား စသည္
တုန့္ျပန္သည့္ကရိယာမ်ား။         စီရာတိုင္၊ လီဗာ၊ ဘရိတ္၊ အခ်က္ျပမီး၊ ဟြန္း စသည္
အာရံုခံကရိယာမ်ား။                   ကင္မရာ၊ အသံလိွုင္းဖမ္းစက္၊ ဂီ်ပီအက္စ္၊ အရိွန္ျပကရိယာ၊ ခရီးမိုင္ျပကရိယာ၊ အင္ဂ်င္အာရံုခံကရိယာ၊ ခလုတ္မ်ား၊ စသည္

2. ဖုန္စုပ္စက္အတြက္ PEAS
စြမ္းေဆာင္ရည္။        သန့္ရွင္းမႈ၊ စြမ္းရည္ရိွမႈ၊ ေရြ့လ်ားမႈအကြာအေဝး၊ ဘက္ထရီသက္တမ္း၊ ေဘးကင္းလံုျခံုမႈ
ပတ္ဝန္းက်င္။            အခန္း၊ စားပဲြ၊ သစ္သားၾကမ္းျပင္၊ ေကာ္ေဇာ၊ အရံ အတားမ်ား
တုန့္ျပန္သည့္ကရိယာမ်ား။         ဘီးမ်ား၊ ဖုန္သုတ္ကရိယာ ဘရပ္ရွ္မ်ား၊ ေလစုပ္စက္
အာရံုခံကရိယာမ်ား။                   ကင္မရာ၊ အညစ္အေၾကးအာရံုခံ၊ လမ္းခို်င့္ အာရံုခံ၊ လမ္းခံုး မ်က္နွာျပင္ခံုး အာရံုခံ၊ နံရံ အာရံုခံ.



ပတ္ဝန္းက်င္
                ပတ္ဝန္းက်င္လို့ေျပာရင္ ျပင္ပပတ္ဝန္းက်င္ (external environment) နဲ့ လုပ္ေဆာင္မႈပတ္၀န္းက်င္ (task environment) ဆိုျပီး ခဲြျခားနိုင္ပါတယ္။ လုပ္ေဆာင္မႈပတ္၀န္းက်င္မွာ performance measure, external environment, actuators နဲ့ sensors ေတြပါ၀င္တယ္။ ေအးဂ်င့္တစ္ခုကို ဒီဇိုင္းလုပ္ျပီဆိုတာနဲ့ ပထဆံုးအဆင့္ဟာ အဲဒီေအးဂ်င့္နဲ့ပတ္သက္တဲ့ လုပ္ေဆာင္မႈပတ္၀န္းက်င္ကို တတ္နိုင္သမွ် ျပည့္ျပည့္စံုစံု သတ္မွတ္ေဖၚျပေပးဖို့ပဲျဖစ္တယ္။   ပတ္ဝန္းက်င္အမို်းအစားေတြကို ေအာက္ပါအတိုင္း ခဲြျခားစိတ္ျဖာနိုင္ပါတယ္။

1.     အျပည့္အစံု ေလ့လာသံုးသပ္စူးစမ္းနိုင္တဲ့ ပတ္၀န္းက်င္ အေနအထား အေျခအေန နဲ့ တစိတ္တပိုင္း တ၀က္တပ်က္ပဲ ေလ့လာသံုးသပ္စူးစမ္းနိုင္တဲ့ ပတ္၀န္းက်င္ အေနအထား အေျခအေန။

2.     agent တစ္ခု(တစ္ေရာက္)တည္း အလုပ္လုပ္တဲ့ ပတ္၀န္းက်င္နဲ့ agent ေတြအမ်ားၾကီးပါဝင္အလုပ္လုပ္တဲ့ ပတ္၀န္းက်င္။

3.     ပတ္၀န္းက်င္ရဲ့ ေနာက္တစ္ဆင့္ အေျခအေန အေနအထားကို၊ လက္ရိွအေျခအေန နဲ့ agent က လုပ္ေဆာင္မယ့္ action ေပၚမူတည္ျပီး
အတိအက် ျပည့္ျပည့္စံုစံု ေျပာနိုင္ ဆံုးျဖတ္နိုင္တဲ့ပတ္၀န္းက်င္နဲ့၊ မေျပာနိုင္ မဆံုးျဖတ္နိုင္တဲ့ပတ္၀န္းက်င္။ (Note: If the environment is deterministic except for the actions of other agents, then the environment is strategic)

4.     တက႑စီ၊ တပိုင္းစီ၊ ျဖစ္ပ်က္ေနတဲ့ပတ္၀န္းက်င္နဲ့ အစီအစဉ္လိုက္ တစ္ခုျပီးတစ္ခု ျဖစ္ပ်က္ေနတဲ့ပတ္၀န္းက်င္။

5.     agent အလုပ္လုပ္ေနတဲ့ကာလ(perceive, think, act)အတြင္းမွာ၊ အေျပာင္းအလဲမရိွ တည္ျငိမ္ေနတဲ့ ပတ္၀န္းက်င္နဲ့၊ agent အလုပ္လုပ္ေနတဲ့ ကာလအတြင္းမွာပဲ၊ အေျခအေနေျပာင္းလဲသြားတဲ့ ပတ္၀န္းက်င္။

6.     ျပတ္ေတာင္းျဖစ္စဉ္(checkers) နဲ့ စဉ္ဆက္ျဖစ္စဉ္(လူ၏ထိန္းခု်ပ္မႈမပါေသာ ေမာင္းသူမဲ့ကား) ပတ္၀န္းက်င္။


7.     သိျပီးပတ္၀န္းက်င္ နဲ့ အေျခအေနမသိတဲ့ပတ္ဝန္းက်င္။

ေအးဂ်င့္အမို်းအစားမ်ား
                အေျခခံေအးဂ်င့္ေလးမို်းရိွတယ္။ ရိုးရိုးသာမန္တုန့္ျပန္ေသာေအးဂ်င့္၊ စံပံုစံအေျခခံေသာေအးဂ်င့္၊ ပန္းတိုင္ကိုအေျခခံေသာေအးဂ်င့္နဲ့ အရည္အေသြးကိုအေျခခံေသာေအးဂ်င့္ဆိုျပီးျဖစ္ပါတယ္။ အတိုအားျဖင့္ simple, model-based, goal-based, utility-based ဆိုျပီး မွတ္သားနိုင္ပါတယ္။

1. ရိုးရိုးသာမန္တုန့္ျပန္ေသာ ေအးဂ်င့္ Simple reflex agents
                လက္ရိွ လတ္တေလာျဖစ္ပ်က္ေနတဲ့ အေျခအေနအေပၚမွာသာအေျခခံ (based on the current state only) ျပီး ျပုမူေဆာင္ရြက္တဲ့ agent မို်းျဖစ္တယ္။ ဒီ agent ဟာ ရိုးရွင္းတယ္။ စြမ္းေဆာင္ရည္ အကန့္အသတ္ရိွတယ္။ ျပီးေတာ့ အျပည့္အဝနားလည္နိုင္တဲ့ ပတ္၀န္းက်င္မို်းမွာပဲ လုပ္ေဆာင္နိုင္တယ္။
•              Simple-Reflex Agent ဟာ ပတ္ဝန္းက်င္ရဲ့အေျခအေနကို sensors ေတြကတဆင့္ အာရံုခံျခင္းအားျဖင့္ အခုလက္ရိွ ျပင္ပကမၻာမွာ ဘာျဖစ္ေနလဲ (what the world is like now) ဆိုတာ သိေအာင္လုပ္တယ္။
•              အဲဒီအေပၚမူတည္ျပီး ဘာလုပ္သင့္တယ္(what action I should do now) ဆိုတာကို ၾကိုတင္သတ္မွတ္ျပဌာန္းေပးထားတဲ့  ဒါျဖစ္ရင္ဒါလုပ္၊ ဟိုဟာျဖစ္ရင္ ဟိုဟာလုပ္ ဆိုတဲ့ condition-action rules ေတြေပၚမွာမူတည္ျပီး ေရြးခ်ယ္တယ္။
•              ျပီးယင္ Actuators ေတြကတဆင့္ ပတ္ဝန္းက်င္ကို တစ္စံုတစ္ရာတုန့္္ျပန္လုပ္ေဆာင္တယ္။


2. စံပံုစံအေျခခံေသာ ေအးဂ်င့္ Model-based reflex agents
                ဒီ agent အမို်းအစားကေတာ့ တဝက္တပ်က္ပဲ စူးစမ္းေလ့လာလို့ရတဲ့ပတ္ဝန္းက်င္မွာလည္း လုပ္ေဆာင္နိုင္စြမ္းရိွတယ္။
•              Model-based reflex agent ဟာ Sensor ကအာရံုခံလို့ရတဲ့၊ အခုလက္ရိွ ျပင္ပကမၻာမွာ ဘာျဖစ္ေနလဲ (what the world is like now) ဆိုတဲ့ ပတ္ဝန္းက်င္ရဲ့အေျခအေနေတြအားလံုး(percepts history)ကို မွတ္သားထားတယ္။ State သို့ ျမားသြားပံုကိုၾကည့္ပါ။
[မွတ္ခ်က္။                ဒါဟာ Simple Reflex Agent နဲ့ကြာတဲ့အခ်က္ျဖစ္တယ္။ Simple Reflex Agent မွာက လက္ရိွအေျခအေနတစ္ခုတည္းကိုပဲ ၾကည့္တယ္။ ဘာမွတ္တမ္းမွမရိွဘူး။]
•              ျပီးေတာ့ Model-based Reflex Agentက၊ ပတ္ဝန္းက်င္အေၾကာင္းကို ပိုမိုသိျမင္နားလည္ေအာင္လုပ္ေဆာင္တဲ့အေနနဲ့၊ သူ့မွာထည့္သြင္းတည္ေဆာက္ထားတဲ့ Model ကေနျပီးအခ်က္နွစ္ခ်က္ကို ရယူတယ္။ အဲဒါေတြကေတာ့
၁။ ျပင္ပကမၻာဟာ Agentနဲ့ကင္းလြတ္စြာ ဘယ္လိုမ်ား သီးျခား ဆင့္ကဲတိုးတက္ေျပာင္းလဲေနသလဲ
၂။ Agent ရဲ့ လုပ္ေဆာင္ခ်က္ေတြေၾကာင့္ ျပင္ပကမၻာမွာ ဘာေတြအေျပာင္းအလဲျဖစ္သလဲ ဆိုတဲ့ နွစ္ခ်က္ပဲျဖစ္တယ္။
•              ျပီးမွ Agent က သူ ဘာလုပ္သင့္တယ္(what action I should do now) ဆိုတာကို ၾကိုတင္သတ္မွတ္ျပဌာန္းေပးထားတဲ့  condition-action rules ေတြေပၚမွာမူတည္ျပီး ေရြးခ်ယ္တယ္။
•              ျပီးယင္ Actuators ေတြကတဆင့္ ပတ္ဝန္းက်င္ကို တစ္စံုတစ္ရာတုန့္္ျပန္လုပ္ေဆာင္တယ္။

3. ပန္းတိုင္အေျခခံေသာ ေအးဂ်င့္ Goal-based Agent
                ဒီလို goal-based agent မို်းဟာ ပတ္၀န္းက်င္ရဲ့ လက္ရိွအေျခအေနကို သိရံုနဲ့ မလံုေလာက္ဘူး။ ပတ္၀န္းက်င္ (environment) ရဲ့ states (အေျခအေနေတြ) သိရမယ့္အျပင္၊ သူ့ရဲ့ ရည္ရြယ္ခ်က္ ရည္မွန္းခ်က္နဲ့ ပတ္သက္တဲ့ သတင္းအခ်က္အလက္ေတြကိုပါ သိထားဖို့လိုအပ္တယ္။ ပတ္၀န္းက်င္ပံုစံနဲ့ ရည္မွန္းခ်က္ကို ေပါင္းစပ္ျပီးမွ ပန္းတိုင္ေရာက္ဖို့ ဘယ္လို ေဆာင္ရြက္မႈမို်းကို ေရြးခ်ယ္လုပ္ေဆာင္ရမလဲဆိုတာ ဆံုးျဖတ္တာ။ "ငါ ဒါကို လုပ္ရင္ ဘာျဖစ္လာမလဲ" ဆိုတဲ့ အနာဂတ္ကို ၾကိုတင္စဉ္းစားျပီးမွ ေရြးခ်ယ္အလုပ္လုပ္တာျဖစ္တယ္။


4. အသံုးဝင္မႈအရည္အေသြးကိုအျခခံေသာ ေအးဂ်င့္ Utility-based agent
                ရည္မွန္းခ်က္ေရာက္ရိွျခင္းဆိုတာဟာလည္း တစ္ခါတစ္ရံမွာ မလံုေလာက္ေသးပါဘူး။ အဆံုးသတ္ ပန္းတိုင္ကို အေရာက္သြားတဲ့ေနရာမွာ ပိုျမန္ဖို့၊ ပိုျပီးေဘးအနၱရယ္ကင္းရွင္းဖို့၊ ပိုျပီးအကုန္အက်သက္သာဖို့ ဆိုတာေတြလည္း လိုအပ္ပါတယ္။ အဲဒီလိုအခ်က္ေတြကို utility လို့ေခၚတယ္။ utility ေတြရရိွေအာင္ေဆာင္ရြက္ေပးတာက utility function ေတြျဖစ္တယ္။ အဲဒီ utility function ေတြဟာ agent ရဲ့ စြမ္းေဆာင္ရည္တိုင္းတာမႈ (performance measure) ပဲျဖစ္တယ္။


သင္ယူေသာေအးဂ်င့္ Learning Agent
                အသိဉာဏ္ရိွတဲ့ေအးဂ်င့္ intelligent agent ေတြအားလံုးကို ေယဘုယ်ျခံုငံုျပီး သင္ယူေသာေအးဂ်င့္ learning agent ေတြလို့သတ္မွတ္နိုင္တယ္။ ဘာလို့တုန္းဆိုေတာ့ အဲဒီေအးဂ်င့္ ေတြဟာ ေလ့လာျခင္းကတဆင့္၊ ပိုမိုေကာင္းမြန္တဲ့ လုပ္ေဆာင္ခ်က္ေတြကို လုပ္ေဆာင္နိုင္ဖို့ သူတို့ကိုသူတို့ ပိုျပီး စြမ္းေဆာင္ရည္ တိုးတက္လာေအာင္ လုပ္ေဆာင္နိုင္စြမ္းရိွၾကလို့ျဖစ္တယ္။ သင္ယူေသာေအးဂ်င့္ေတြမွာ သေဘာတရားေရးရာအရခဲြျခားထားတဲ့ အစိပ္အပိုင္း (conceptual components) ေလးပိုင္းပါဝင္တယ္။
•              agent ရဲ့တိုးတက္ေရးအတြက္ တာဝန္ယူတဲ့ Learning element
•              agent ရဲ့ျပင္ပလုပ္ေဆာင္ခ်က္ေတြကို ေရြးခ်ယ္တဲ့ Performance element
•              ခ်မွတ္ထားတဲ့ စံနႈန္းေတြအတိုင္း agent က ဘယ္ေလာက္ထိေကာင္းမြန္ေအာင္လုပ္ေဆာင္နိုင္သလဲ ဆိုတာကို ေဝဖန္သံုးသပ္ျပီး အသိေပးအေၾကာင္းျပန္မယ့္ critic
•              သတင္းအခ်က္အလက္ေပးနိုင္မယ့္ အေတြ့အၾကံုသစ္ေတြရရိွေအာင္၊ ဘာကိုေရြးခ်ယ္လုပ္ေဆာင္ရမလဲဆိုတာကို အၾကံျပုတဲ့ problem generator
စတာေတြျဖစ္တယ္။

ေအးဂ်င့္ပရိုဂရမ္ရဲ့အစိပ္အပိုင္းေတြ ဘယ္လိုအလုပ္လုပ္သလဲ
                အခုအခိ်န္အထိ AI နဲ့ပတ္သက္လို့ ကြ်န္ေတာ္တို့ေလ့လာခဲ့သမွ်ဟာ တကယ့္ကို ေယဘုယ်ျခံုငံုၾကည့္တဲ့အျမင္ (very high level view) မို်းသာျဖစ္ပါတယ္။ ပမာအားျဖင့္
ျပင္ပကမၻာအေျခအေနက အခုဘယ္လိုျဖစ္ေနလဲ
အခုအခါမွာ ဘယ္လိုလုပ္ေဆာင္မႈမို်းလုပ္သင့္သလဲ
လုပ္ေဆာင္မယ္ဆိုတဲ့ဟာေတြက ဘာေတြလုပ္တာလဲ... ဆိုတာမို်းေတြေပါ့။
                အခုတစ္ခါ ေနာက္တစ္ဆင့္ စဉ္းစားရမယ့္ေမးခြန္းက ေအးဂ်င့္ပရိုဂရမ္ရဲ့အစိပ္အပိုင္းေတြက ဘယ္လိုအလုပ္လုပ္တာလဲ ဆိုတဲ့ေမးခြန္းပဲျဖစ္ပါတယ္။ တကယ္တန္းဆိုရင္ေတာ့ အဲဒီေမးခြန္းကို ေသေသခ်ာခ်ာ ျပည့္ျပည့္စံုစံု ပံုစံတက်ေျဖမယ္ဆိုရင္ စာမ်က္နွာေပါင္းေထာင္ခီ်ျပီး စတင္ေျဖဆိုရမယ့္ေမးခြန္းမို်းပါ။ ဒါေပမယ့္ဒီေနရာမွာ ကြ်န္ေတာ္တို့အဓိကထားတာက၊ ေအးဂ်င့္မွာပါဝင္တဲ့အစိပ္အပိုင္းေတြက ေအးဂ်င့္တည္ရိွအလုပ္လုပ္တဲ့ ပတ္ဝန္းက်င္ကို နည္းလမ္းအမို်းမို်းနဲ့ ကိုယ္စားျပုပံုေတြရဲ့ အေျခခံကဲြျပားျခားနားခ်က္တစ္ခို့်ကို ဂရုျပုမိဖို့ပဲျဖစ္ပါတယ္။
Figure 2.16 Three ways to represent states and the transitions between them.

(က) တစ္စု တစ္ေပါင္းတည္း ကိုယ္စားျပုထားျခင္း  Atomic representation
                ဒီကိုယ္စားျပုမႈမို်းမွာ ပါဝင္တဲ့ အေျခအေနအသီးသီးကို ခဲြထုတ္လို့မရဘူး။ သူ့ရဲ့ အတြင္းပိုင္းကိုမျမင္ရဘူး။ အတြင္းပိုင္းတည္ေဆာက္ပံုမရိွဘူး။ Figure 2.16 ရဲ့ ပံု(a)မွာ ျပထားတဲ့အတိုင္း၊ ဘီ သို့မဟုတ္ စီ အေျခအေနရဲ့ အတြင္းပိုင္းတည္ေဆာက္ပံုေတြ အေျခအေနေတြကို မျမင္ရဘူး။ ဒါေၾကာင့္ ဒီ Atomatic Representation ကို black box လို့လည္းေခၚတယ္။
                ဥပမာေပးရရင္ ျမို့တစ္ျမို့ကေန ဟိုးအစြန္တစ္ျခားျမို့ကို  ၾကားျမို့ေတြျဖတ္သန္းျပီး ကားေမာင္းသြားဖို့ လမ္းေၾကာင္းရွာရမယ့္ ကိစၥမို်း (ျပႆနာမို်း) ကို စဉ္းစားၾကည့္ပါ။ ျဖစ္နိုင္တဲ့လမ္းေၾကာင္းေတြ တစ္ခု သို့မဟုတ္ တစ္ခုထက္ပိုျပီးရိွနိုင္ေပမယ့္၊ ဘယ္လမ္းေၾကာင္းနဲ့ပဲသြားသြား အစကေနအဆံုးအထိ သြားရမယ့္ကိစၥမွာ ျမို့တစ္ျမို့ျမို့ကို ျဖုတ္လိုက္မယ္၊ ပယ္လိုက္မယ္၊ ျဖတ္မသြားပဲေနမယ္ ဆိုရင္ ဘယ္လိုမွ ေနာက္ဆံုးျမို့(ပန္းတိုင္)ကို ေရာက္မွာမဟုတ္ဘူး။ ျဖတ္သန္းသြားမယ့္ ျမို့အစီအစဉ္ေတြအားလံုးဟာ တစ္စုတည္း တစ္ခုတည္း သေဘာမို်းျဖစ္ေနတယ္။ ဘယ္ျမို့ကိုမွ ခဲြထုတ္လို့ ဖယ္ထုတ္လိုက္လို့ မျဖစ္ဘူး။ ပန္းတိုင္ေရာက္နိုင္ဖို့အတြက္ ျမို့အစီအစဉ္ေတြအားလံုးကို တစ္စု တစ္ေပါင္းတည္း ကိုယ္စားျပုထားတာျဖစ္တယ္။
                မတူညီတဲ့  atomatic state နွစ္ခုမွာ တူညီတာ ဘာမွမရိွနိုင္ဘူး။ ဘာလို့တုန္းဆိုေတာ့ အဲဒီ ဟာေတြက Black Box  ေတြျဖစ္လို့ပဲ။ အထဲမွာ ဘာပါတယ္ဆိုတာ မျမင္နိုင္ မသိနိုင္တဲ့အတြက္ တစ္ခုနဲ့တစ္ခု တူတယ္လို့ ဘယ္လိုမွေျပာလို့မရဘူး။ သီးျခား Black Box နွစ္ခုသာျဖစ္တယ္။
ဒီ Atomic representation နဲ့ သက္ဆိုင္တဲ့ အေၾကာင္းအရာေတြကို
•              Search ရွာေဖြျခင္း(အခန္း-၃)၊
•              Game-Playing ဂိမ္းကစားျခင္း(အခန္း-၅)၊
•              ဖံုးကြယ္ထားေသာ မားေကာဗ္ ပံုစံမ်ား Hidden Markov models (အခန္း-၁၅) နဲ့ 
•              မားေကာ့ဗ္ဆံုးျဖတ္ပံုအဆင့္ဆင့္ Markov decision processes (အခန္း-၁၇) ေတြမွာ ေလ့လာမွာျဖစ္ပါတယ္။

(ခ) ခဲြစိတ္ ပိုင္းျဖတ္၍ ကိုယ္စားျပုထားျခင္း Factored Representation
                ဒီ Factored Representation မွာ၊ အေျခအေနအသီးသီးကို တိက်တဲ့ အစုရိွတဲ့ variables ေတြ သို့မဟုတ္ attributes ေတြအျဖစ္ ခဲြထုတ္လိုက္တယ္။ အဲဒီ variable ေတြ attribute ေတြမွာ တန္ဘိုး value တစ္ခုခုရိွနိုင္တယ္။ အဲဒီ တန္ဘိုးေတြဟာ မွန္-မွား Boolean, အစစ္အမွန္တန္ဘိုး၊ ဒါမွမဟုတ္  ပံုေသသေကင္ၱအစု fixed set of symbols စသည္ျဖင့္ တစ္ခုခု ျဖစ္နိုင္တယ္။
                မတူညီတဲ့ Factored State နွစ္ခုမွာ မွ်ေဝသံုးစဲြထားတဲ့ (တူညီတဲ့) attribute ေတြပါနိုင္တယ္။ ျပီးေတာ့ ဒီ ခဲြစိတ္ ပိုင္းျဖတ္၍ ကိုယ္စားျပုထားတဲ့ပံုစံမွာ မေသခ်ာမေရရာမႈ uncertainty ကိုလည္း ကိုယ္စားျပုေဖၚျပနိုင္တယ္။ ဥပမာ သြားရမယ့္ခရီးအတြက္ ကားရဲ့ ဆီတိုင္ကီထဲမွာ ဆီဘယ္ေလာက္ရိွတယ္၊ က်န္တယ္ ဆိုတာကို မသိတဲ့အေျခအေနမို်းအတြက္ အဲဒီ attribute ရဲ့ တန္ဘိုး value ကို ကြက္လပ္ထားလိုက္ျခင္းအားျဖင့္ ေဖၚျပနိုင္ပါတယ္။ တုပအသိဉာဏ္ပညာရပ္ရဲ့ နယ္ပယ္ေတြေတာ္ေတာ္မ်ားမ်ားဟာ ဒီ ခဲြစိတ္ ပိုင္းျဖတ္၍ ကိုယ္စားျပုထားျခင္း ဆိုတဲ့ Factored Representation အေပၚမွာအေျခခံထားတာပါ။ ဒါေတြကို
•              ကန့္သတ္ခ်က္မ်ားကို ေျပလည္ေစေသာ ေျဖရွင္းနည္း constraint satisfaction algorithms (အခန္း-၆)
•              ေဖၚျပခ်က္ဆိုင္ရာ ယုတၱိေဗဒ propositional logic (အခန္း-၇)
•              အစီအစဉ္ေရးဆဲြျခင္း planning (အခန္း ၁၀-၁၁)
•              ေဘးစ္၏ ကြန္ယက္ Bayesian networks (အခန္း ၁၃-၁၆) နဲ့
•              စက္ေလ့လာသင္ယူျခင္း နည္းလမ္းအဆင့္ဆင့္ the machine learning algorithms (အခန္း ၁၈-၂၀-၂၁) ေတြမွာ ေလ့လာၾကမွာျဖစ္ပါတယ္။

(ဂ) တည္ေဆာက္မႈပံုစံတက် ကိုယ္စားျပုျခင္း Structured representation
                ကိစၥရပ္ေတာ္ေတာ္မ်ားမ်ားမွာ ကြ်န္ေတာ္တို့ရဲ့ ကမၻာၾကီးအေပၚ နားလည္ဖို့ဆိုတာ၊ သူ့မွာပါဝင္တဲ့ object ေတြရဲ့ variable ေတြ၊ attribute ေတြရဲ့ တန္ဘိုး value ေတြသာမဟုတ္ပဲ၊ သူ့မွာပါဝင္ေနတဲ့အရာေတြ object ေတြ အခ်င္းခ်င္းရဲ့ ဆက္သြယ္ခ်က္ကိုပါ နားလည္ဖို့လိုအပ္ပါတယ္။  
                ဒီ တည္ေဆာက္မႈပံုစံတက် ကိုယ္စားျပုျခင္းဆိုတဲ့ ေမာ္ဒယ္ရဲ့ အေျခအေနတစ္ခုမွာ object ေတြပါမယ္။ object တိုင္းမွာ သူ့ရဲ့ကိုယ္ပိုင္ attribute ေတြနဲ့အတူ၊ တျခား object ေတြနဲ့ ဆက္သြယ္ခ်က္ေတြလည္းပါမယ္။ ဒီ Structured representation နဲ့ပတ္သက္တဲ့အခန္းေတြကေတာ့
•              ခ်က္သြယ္ခ်က္ရိွေသာအခ်က္အလက္ဘဏ္ နဲ့ ပထမဆင့္ ယုတၱိေဗဒ relational databases and first-order logic (အခန္း ၈-၉-၁၂)
•              ပထမဆင့္ ျဖစ္နိုင္ေျခ ပံုစံမ်ား first-order probability models (အခန္း ၁၄)
•              အသိပညာ အေျချပုေလ့လာျခင္း knowledge-based learning (အခန္း ၁၉)

•              သဘာဝဘာသာစကား နားလည္မႈ natural language understanding (အခန္း ၂၂-၂၃) ျဖစ္တယ္။ တကယ္ေတာ့ လူေတြသံုးစဲြေနၾကတဲ့ သဘာဝဘာသာစကားရဲ့ အရာအားလံုးနီးပါးဟာ object ေတြနဲ့ အဲဒီ object ေတြအခ်င္းခ်င္းရဲ့ ဆက္သြယ္ခ်က္ relation ေတြ အေၾကာင္းသာျဖစ္ပါတယ္။ 




Please Note Copyright Notice:

ဤဆောင်းပါးများ 
Artificial Intelligence: A Modern Approach  သည်၊ ကွန်ပျူတာဂျာနယ်တွင် ဖေါ်ပြပါရှိပြီးသော ဆောင်းပါးများဖြစ်ပါသည်။
ဤဆောင်းပါးများနှင့် နောက်နောင် ဆက်လက် တင်ပြကောင်းတင်ပြမည့် 


Artificial Intelligence: A Modern Approach  သင်္ခန်းစာ ဆောင်းပါးများ အားလုံးကို Patent & Copyright Law အရ မှတ်ပုံတင်ပြီးဖြစ်ပါသည်။