عاشق هوش مصنوعی:)
دوره Reinforcement Learning: مقدمه ۱
قبلی: دوره Reinforcement Learning: بیاید شروع کنیم
اول از همه منابع اصلی:
لکچر اول دوره CS234 رو میتونید از اینجا ببینید
اینجا هم لینک اسلایدهای دورس
این Reinforcement Learning چی هست اصلا؟
مثل هر اصطلاح علمی دیگه ای برای این کلمه هم کلی تعریف ساده و پیچیده وجود داره که با سرچ کردن توی گوگل میتونید بعضی هاشون رو ببینید. تعریف ویکی پدیا که معمولا یکی از رسمیترین تعریف هاست میگه:
Reinforcement learning (RL) is an area of machine learning concerned with how software agents ought to take actions in an environment in order to maximize the notion of cumulative reward.
ولی ما کاری به این تعریفا نداریم. از نظر ما RL اومده که به این سوال ما جواب بده:
چگونه یک عامل میتواند یاد بگیرد که سلسله از تصمیمات خوب بگیرد
اول از همه من اینکه اگه اجازه بدید من دیگه کلمات رو تا این حد ترجمه نکنم. یک زبانم خوب نیست و دو اینکه خدایی agent خیلی بهتره از عامله!
اما این تعریف ساده مفاهیمه خیلی مهمی رو توش داره. اول اینکه باید سلسلهای از تصمیمات رو بگیره و شاید بشه گفت یکی از مهم ترین وجه تمایزهاش با بخشهای دیگهی ماشین لرنینگ اینه (مثلا توی سوپروایزد لرنینگ شما یه عکس رو به برنامه نشون میدین و اون باید بگه که چه نوع حیونیه (فقط یک تصمیم میگیره) ولی توی RL باید مجموعه از تصمیمات متوالی گرفته بشه که مثلا بتونه توی شطرنج حریف مقابل رو شکست بده). کلیدواژه بعدی خوب بودنه تصمیماتی هست که میگیره. قطعا ما باید متدی داشته باشیم که ببینم این سلسله تصمیمات بهتر جواب میده یا فلان تصمیمات. و مفهوم بعدی هم یادگیریه؛ یعنی اینکه کسی وجود نداره که از قبل مشخص کرده باشه کدوم نوع تصمیماتی خوب هستن و باید گرفته بشن یا کدومها بد هستن، بلکه این خود ایجنته که باید با دنیای خودش تعامل داشته باشه، تجربه کسب کنه و در نهایت انتخاب کنه که کدام تصمیمات خوب هستند.
یکی دیگه از چالشهای اساسی که شاید توی تعریف بالا زیاد به چشم نخوره مفهوم عدم قطعیته. یعنی ایجنت باید تصمیمی بگیره که احتمالا از بقیه بهتره و لزوما اثباتی وجود نداره (در برخی موارد ممکنه وجود داشته باشه) که این تصمیم بهترین تصمیمه ممکنه (بیاین به ایجنت فقط به چشم یه برنامه نرمافزاری نگاه نکنیم. در واقع انسان هم نوعی ایجنته. و همونطور که قطعا میدونید ما توی زندگی اکثر (شاید همه) موارد مثل انتخاب رشته، شغل، مکان زندگی و ... تصمیماتی میگیرم که به نظرمون می تونن بیشترین منافع رو در حال و آینده بهمون برسونن ولی خب لزوما بهترین تصمیم نیستن و میبینید که خیلی از اوقات این تصمیمات غلطه!).
این عدم قطعیت از این ناشی میشه که ما جهان رو تا حدی تصادفی (stochastic) بدونیم (بیاین قبول کنیم حرفهای بور منطقیتر از حرفهای انیشتینه!).
کاربردهای RL چیه؟
شاید کلی ترین جوابی که بشه به این سوال داد اینه که به ما کمک کنه که بتونیم چند مرحله به ساخت هوش مصنوعی با توانایی عملکرد مثل هوش انسانی نزدیک تر شیم.
اما چند مورد از استفاده هایی که در حال حاضر داره رو مثال میزنم:
- بازی های ویدیویی: بازی های ویدئویی نمونهای از کارهای پیچیده ای هستن که بازیکن (انسان) باید روی اونها وقت بزاره تا اونها رو یاد بگیره و باید دست کم اندکی تجربه داشته باشه (چون ما از قبل نمیدونیم یه بازیه خاص چجوریه). یک نمونه از پیشرفت هایی که توی ان حوزه بوده هوش مصنوعی دیپ ماینده که یاد میگیره آتاری بازی کنه، اونم از روی نگاه کردن به پیکسلها! (این لینک رو ببینید جالبه). البته این پیشرفت سال ۲۰۱۵ هست و الآن خیلی جلوتریم. شدیدا پیشنهاد میکنم کارای شرکتهای DeepMind و OpenAI رو دنبال کنید (الآن دیگه آتاری بچه بازیه، دارن رو بازی های مثل استارکرفت و دوتا کار میکنن:)).
- رباتیک: اینکه ربات بتونه یه چیزی رو برداره، لباسهارو تا کنه و ...
- سلامت، پردازش زبان طبیعی (NLP)، بینایی کامپیوتر و ...
مهمترین جنبههایی که RL باهاشون درگیره چیاس؟
به عنوان بخشی از ماشین لرنینگ، کلیدیترین موضوعاتی که RL باهاشون درگیره رو میشه به چهار موضوع زیر تقسیم کرد:
- بهینه سازی (Optimization)
- نتایج با تاخیر (Delayed consequences)
- اکتشاف (Exploration)
- کلیت بخشی (Generalization)
توضیح مختصری دربارهی هر کدوم میدم:
بهینه سازی: همونطور که توی تعریف هم اومد ایجنت ما باید تلاش کنه که همواره تصمیماتش رو بهتر و بهتر کنه تا به مجموعهای از تصمیمات بهینه برسه.
نتایج با تاخیر: از اونجایی که ما توی RL دنبال این هستیم که در ازای تصمیماتمون به جای نتیجه آنی نتیجه کلی بهتری داشته باشیم و از طرفی با عدم قطعیت هم مواجه هستیم، باید جوری تصمیماتمون رو انتخاب کنیم که یه نوع آینده نگری هم داشته باشه و این یکی از سخترین چالشهایی هست که ما باهاش روبرو ایم!
اکتشاف: مسئله دیگه که ما با اون طرف هستیم اینه که ایجنت باید بتونه قوانین حاکم بر جهان رو پیدا کنه. اما نکته ای که وجود داره اینه که ما به همهی دیتای جهان دسترسی نداریم و به ازای هر تصمیم مشخصی که میگیریم جهان به ما فیدبک متناظر با اون عمل رو میده و به این شکل فقط بخشی از دیتای خودش رو در اختیار ما قرار میده. پس ایجنت ما باید این توانایی رو داشته باشه که راه حل های جدید رو انتخاب و امتحان کنه و بر این اساس دید بهتری نسبت به جهان پیدا کنه که باعث تصمیم گیری بهتر بشه (دربارهی ما انسانها هم این موضوع صادقه. ما همواره تلاش میکنیم از طریق آزمایش اطلاعات جدیدی از جهانمون بدست بیاریم).
کلیت بخشی: هوش مصنوعی دیپ مایند که آتاری بازی میکرد رو در نظر بگیرید. فرض کنید این هوش فقط بتونه وقتی آتاری ابعاد ۲۰۰ * ۱۰۰ داره بازی کنه و اگه ما یه ذره ابعاد صفحه رو تغییر بدیم دیگه عملکرد خوبی نداشته باشه. ما واقعا از این ایجنت راضی نیستیم!! پس این هوش باید جوری باشه که بتونه با هر اندازهی تصویری به خوبی کار کنه.
توی این آموزش ها سعیم براینه که تا حد امکان پستها کوتاه باشن که شما حوصله خوندنش رو داشته باشید. پس برای همین مقدمه رو چندین بخش میکنم. این بود بخش اولش:)
این تجربه اول منه و با دادن فیدبک واقعا خوشحالم میکنید :))))
مطلبی دیگر از این انتشارات
بررسی تفاوت علوم داده و یادگیری ماشینی
مطلبی دیگر از این انتشارات
آیا با استفاده از تحلیل کلیدواژههای جستجوشده در گوگل میتوان روندهای تقاضا را پیشبینی کرد؟
مطلبی دیگر از این انتشارات
یک مدل ساده در TensorFlow