PDA

مشاهده نسخه کامل : یادگیری تقویتی (Reinforcement Learning)



ravegoat
19-03-13, 14:34
یادگیری تقویتی (Reinforcement Learning) یکی از روش های یادگیری در سیستم های هوشمند است که براساس رابطه ی علت و معلولی عمل می کند. در این روش یادگیری عامل هوشمند (Agent) با توجه به وضعیتی که در محیط دارد، عملی را بر روی محیط انجام می دهد و منتظر نتیجه ی عملش می ماند. این نتیجه می تواند در قالب یک پاداش یا تنبیه باشد. اگر نتیجه در قالب پاداش باشد، عمل انجام شده مطلوب بوده و عامل به هدفی که در آن محیط دارد نزدیک شده است. ولی اگر نتیجه در قالب تنبیه باشد، عمل انجام شده نامطلوب بوده و عامل از هدفش دور شده است. عامل باید یاد بگیرید که چه اعمالی را انجام دهد تا پاداش بیش تری را کسب کند و در نهایت به هدفش برسد. همه ی ما در کودکی با الگویی مشابه یادگیری تقویتی راه رفتن را آموختیم. زمانی که پس از چندین گام برداشتن به زمین می خوردیم (تنبیه)، سعی می کردیم اعمال حرکتی خود را به گونه ای اصلاح کنیم تا تعادل خود را به هنگام راه رفتن حفظ کنیم (پاداش). در نهایت هم به هدف خود که راه رفتن بود رسیدیم.

در ادامه مباحث یادگیری تقویتی در قالب یک مثال شرح داده می شوند. در این مثال عامل هوشمند یک ربات فوتبالیست در پست حمله است. هدف آن است که زمانی توپ به این ربات رسید، ربات با یادگیری تصمیم های مناسب یک حمله را تدارک ببیند و توپ را به گل تبدیل کند.


8260





دوستان لطفا" درخواست ها و سوالات خود پيرامون اين موضوع را در تاپيك جداگانه اي مطرح كنند تا نظم اين تاپيك طي آپديت هاي آينده (نظير افزودن مقالات جديد و سورس كد ها) حفظ شود.
با سپاس :give_rose:

ravegoat
19-03-13, 14:43
حالت ها (States)

حالت بیان گر شرایط موثر بر تصمیم گیری عامل در محیط است مانند موقعیت مکانی عامل در محیط. ما چهار حالت را برای ربات خود در نظر می گیریم:


s1: زمانی که ربات ما در سمت راست داخل محوطه ی جریمه ی حریف باشد.
s2: زمانی که ربات ما در وسط محوطه ی جریمه ی حریف باشد.
s3: زمانی که ربات ما در سمت چپ داخل محوطه ی جریمه ی حریف باشد.
s4: زمانی که ربات ما در خارج از محوطه ی جریمه ی حریف باشد.

محدوده ی هر چهار حالت را در شکل نشان داده شده است.
ما می توانیم حالت ها را پیچیده تر کنیم. فرضا" موقعیت دروازه بان حریف را نیز در تصمیم گیری مهم بدانیم و سه حالت نیز برای دروازه بان در نظر بگیریم؛ مثلا" :


دروازه بان در سمت راست دروازه اش قرار گرفته است.
دروازه بان در مرکز دروازه اش قرار گرفته است.
دروازه بان در سمت چپ دروازه اش قرار گرفته است.

در این صورت چهار حالت برای ربات خود و سه حالت برای دروازه بان حریف داریم که این دو دسته حالت مستقل از هم هستند. زیرا اگر ربات ما در موقعیت s1 قرار گیرد، دروازه بان می تواند در هر سه حالت راست، مرکز و یا چپ قرار داشته باشد و به همین شکل برای حالت های s2، s3 و s4. درنتیجه 3 ضرب در 4 برابر 12 حالت در مجموع وجود خواهد داشت. می توان حالت ها را همچنان افزایش داد و میزان شارژ باتری ربات خود را (کم، متوسط و پر) به عنوان حالت جدیدی در نظر گرفت. ولی برای سادگی کار در ادامه فقط از چهار حالت اول که ابتدا برای ربات تعریف کردیم استفاده می کنیم:

S = {si | i = 1,2,3,4}

8261

مجموعه حالت در نظر گرفته شده دارای خاصیت مارکوف (The Markov Property) است. اگر حالتی دارای خاصیت مارکوف باشد بدان معنا است که حالت فعلی تمام اطلاعات مربوط به گذشته و حال که جهت ادامه ی یادگیری نیاز است را در خود دارد. به عنوان مثال چیدمان مهره ها روی صفحه ی شطرنج دارای خاصیت مارکوف است. گرچه این چیدمان به ما نمی گوید که از اول بازی تا کنون چه حرکت هایی انجام شده است اما تمام اطلاعات مورد نیاز جهت ادامه ی بازی را در اختیار ما می گذارد. به مساله ی یادگیری که خاصیت مارکوف برای حالت های آن برقرار باشد، فرآیند تصمیم گیری مارکوف (Markov Decision Process یا MDP) می گویند.

ravegoat
19-03-13, 14:50
اعمال (Actions)

ربات ما تنها دو عمل را روی محیط اجرا می کند:


a1: شوت کردن مستقیم توپ به سمت دروازه
a2: پاس دادن توپ به رباتی که موقعیت مناسبی برای شوت زدن دارد


A = {پاس دادن, شوت کردن}


در ادامه ربات باید یاد بگیرد که کدام از یک از دو عمل بالا با توجه به شرایط بازی بهینه تر است و در نهایت سبب می شود که توپ در دروازه ی حریف جای گیرد.


پاداش و تنبیه (Reward and Punishment)

پاداش و تنبیه پس خوری (Feedback) است که عامل از محیط می گیرد و درواقع واکنش محیط نسبت به کنش ربات روی آن است. این پس خور برای ربات ما به شکل زیر خواهد بود:


زمانی که ربات توپ را به گل تبدیل کند و یا پاس منجر به گل بدهد، 50 امتیاز به عنوان پاداش دریافت می کند.
زمانی که ربات نتواند توپ را به گل تبدیل کند و توپ به خارج از زمین رود، ربات هیچ امتیازی دریافت نمی کند.
زمانی که توپ تبدیل به گل نشود و برای حریف امکان ضدحمله را فراهم کند، ربات با 50 امتیاز منفی تنبیه می شود.

ما می توانیم پس خور های بیش تری را در محیط در نظر بگیریم و برای آن ها امتیاز تعیین کنیم. فرضا" اگر ربات ما یکی از یاران حریف را مصدوم کند، با 10 امتیاز منفی جریمه خواهد شد. تنها باید توجه داشته باشیم که پاداش ها و تنبیه ها در راستای هدف و متناسب با آن تعیین شوند. اگر در بازی شطرنج برای هر مهره ی حریفی که عامل ما از بازی خارج می کند امتیاز زیادی در نظر بگیریم، هدف عامل به جای بردن بازی به خارج کردن مهره های حریف معطوف خواهد شد در حالی که می دانیم در شطرنج برنده شدن معنای دیگری دارد.


تابع کیفیت (Quality Function)

تابع کیفیت نشان دهنده ی میزان بهینگی یک عمل در یک حالت نسبت به سایر اعمال در سایر حالات است. در نتیجه این تابع هم به حالت وابسته است و هم به عمل Q(s, a). به عنوان مثال Q(s1, a2) میزان بهینگی عمل a2 را در حالت s1 بیان می کند. تابع کیفیت به ما کمک می کند که در حالت فعلی عمل بهینه تر را انتخاب کنیم. در طول فرآیند یادگیری، اعمال بهینه تر کیفیت بالا تری نسبت به سایر اعمال پیدا خواهند کرد که در ادامه با نحوه ی این کار آشنا می شویم.


سیاست های انتخاب عمل (Action Selection Policies)

مسلما ما تمایل داریم سیاستی داشته باشیم که اعمال بهینه تر (با توجه به مقدار تابع کیفیت) همواره روی میحط اجرا شوند. چنین سیاستی را استعمارگرانه (Exploiting) گویند. اما در شروع فرآیند یادگیری که مقدار تابع کیفیت هنوز به مقدار بهینه اش نرسیده است، اخذ چنین سیاستی مشکل ساز خواهد بود. زیرا ممکن است عمل بهینه ی نهایی ما در ابتدای یادگیری کیفیت کمی داشته باشد که طبق سیاست استعمارگرانه شانس زیادی برای انتخاب شدن ندارد. همین امر سبب می شود این عمل بهینه منزوی بماند و تا آخر فرآیند یادگیری کشف نشود. در نتیجه در ابتدای یادگیری باید سیاست کاوشگرانه (Exploring) داشته باشیم که در آن تمام اعمال با هر کیفیتی به یک اندازه شانس انتخاب شدن دارند. سیاست کاوشگرانه تا آن جا ادامه می یابد که تشخیص دهیم تابع کیفیت به مقدار بهینه ی خود نزدیک شده است و اعمال بهینه کشف گردیده اند. از آن پس می توانیم سیاست استعمارگرانه را پیش گیریم. الگوریتم های متداول انتخاب عمل عبارت اند از:


ε-greedy
ε-soft
softmax

که در ادامه تنها به معرفی الگوریتم ε-greedy می پردازیم.

الگوریتم ε-greedy
در این الگوریتم یک عدد کوچک ε بین صفر و یک تعیین می شود که میزان احتمال انتخاب شدن یک عمل به شکل تصادفی را بیان می کند. فرضا" اگر مقدار ε را برابر 0.2 در نظر بگیریم، 0.2 احتمال دارد که عمل به شکل تصادفی انتخاب شود و 0.8 احتمال دارد که عملی انتخاب شود که بیش ترین کیفیت را نسبت با سایر اعمال دارد. همچنین می توان ε را به شکل پویا تغییر داد. بدین شکل که در شروع یادگیری مقدار آن زیاد باشد که سبب می شود احتمال انتخاب تصادفی نیز زیاد باشد و با جلو رفتن یادگیری مقدار آن کاهش یابد که باعث می شود احتمال انتخاب براساس کیفیت افزایش یابد.


الگوریتم های یادگیری Temporal Difference (TD-Learning Algorithms)

حال وقت آن است که با نحوه ی نزدیک کردن تابع کیفیت به مقدار بهینه اش که اساس یادگیری ما را شکل می دهد آشنا شویم. برای این کار از الگوریتم های یادگیری Temporal Difference استفاده می کنیم که طبق اختلاف بین پس خور و تابع ارزش (Value Function)، اعمال بهینه را در حالات مختلف حین یادگیری کشف می کنند. دو روش متداول جهت پیاده سازی این الگوریتم وجود دارد:


الگوریتم Q-Learning
الگوریتم SARSA

الگوریتم Q-Learning غالبا" تصمیم گیری بهینه تری نسبت به SARSA دارد در حالی که الگوریتم SARSA از تصمیم گیری پایدار تری برخواردار است و می تواند پاداش بیش تری را نیز کسب کند.

ravegoat
19-03-13, 15:02
الگوریتم Q-Learning



ابتدا مقدار Q(s, a) را به ازای تمام حالات و اعمال برابر صفر در نظر می گیریم.
حالت فعلی سیستم (s) را به دست می آوریم.
براساس الگوریتم ε-greedy، یک عمل (a) را انتخاب می کنیم.
عمل a را روی محیط انجام می دهیم و منتظر امتیاز عمل خود (r) می شویم.
حالت جدید سیستم را که پس انجام عمل سیستم به آن می رود (s’) به دست می آوریم.
براساس رابطه ی زیر مقدار Q(s, a) را به روز می کنیم:


Q(s, a) = Q(s, a) + α [r + γ.Qmax(s’, a’) - Q(s, a)]




α عددی بین صفر تا یک است که نرخ یادگیری (Learning Rate) نام دارد و سرعت یادگیری را تعیین می کند. بدیهی است که هرچه مقدار α بیش تر باشد، سرعت یادگیری هم بالا تر می رود ولی باید توجه داشت که مقادیر بزرگ α یادگیری را ناپایدار می کند. در اکثر کاربرد ها معمولا" مقدار 0.1 برای نرخ یادگیری پیشنهاد می شود.
γ عددی بین صفر تا یک است که نرخ تنزیل (Discount Factor) نام دارد و مانع از واگرایی تابع کیفیت حین یادگیری می شود. مقدار γ را معمولا" برابر 0.9 در نظر می گیرند.
Qmax(s’, a’) کیفیت بهینه ترین عمل در موقعیت جدید سیستم یعنی s’ است. به عبارتی این مقدار بیشینه ی کیفیت در موقعیت s’ به شمار می آید.

در آخر بررسی می کنیم که عامل به هدف خود (طبق مثال پیروز شدن ربات ما در بازی فوتبال) دست یافته است یا خیر. اگر پاسخ منفی بود، الگوریتم از مرحله ی سوم براساس موقعیت s’ دوباره تکرار می شود. در غیر این صورت الگوریتم خاتمه می یابد.



8262

ravegoat
19-03-13, 15:11
الگوریتم SARSA (State-Action-Reward-State’-Action’)



ابتدا مقدار Q(s, a) را به ازای تمام حالات و اعمال برابر صفر در نظر می گیریم.
حالت فعلی سیستم (s) را به دست می آوریم.
براساس الگوریتم ε-greedy، یک عمل (a) را انتخاب می کنیم.
عمل a را روی محیط انجام می دهیم و منتظر امتیاز عمل خود (r) می شویم.
حالت جدید سیستمرا که پس انجام عمل سیستم به آن می رود (s’) به دست می آوریم.
در موقعیت جدید (s’) براساس الگوریتم ε-greedy، یک عمل جدید (a’) را انتخاب می کنیم.
براساس رابطه ی زیر مقدار Q(s, a) را به روز می کنیم:



Q(s, a) = Q(s, a) + α [r + γ.Q(s’, a’) - Q(s, a)]



در آخر بررسی می کنیم که عامل به هدف خود دست یافته است یا خیر. اگر پاسخ منفی بود، الگوریتم از مرحله ی چهارم براساس موقعیت s’ و عمل a’ دوباره تکرار می شود. در غیر این صورت الگوریتم خاتمه می یابد.



8267

abdollah_younesi
28-12-13, 10:16
با سلام
دوستان کسی یادگیری تقویتی را برای کنترل سیستم های قدرت اعمال کرده است؟

ravegoat
28-12-13, 19:50
با سلام
دوستان کسی یادگیری تقویتی را برای کنترل سیستم های قدرت اعمال کرده است؟
با سلام!

عضویت شما رو در شهر سخت افزار تبریک می گم.

به دو مقاله پیوست شده مراجعه بفرمایید.

موفق باشید
آرمین

ravegoat
26-07-14, 19:26
سورس پیوست شده پیاده سازی یک مربی فوتبال هوشمند تحت MATLAB (Only the registered members can see the link) است که براساس آن چه در پست های پیشین گفته شده بود قادر است توسط الگوریتم های Q-Learning و SARSA یک مهاجم فوتبال را برای تصمیم گیری درست در موقعیت حمله آموزش دهد.

Embedded
27-11-14, 11:15
با سلام خدمت ravegoat (Only the registered members can see the link) گرامی،
ابتدا لازم میدونم از تاپیک و آموزش مفیدتون تشکر کنم چون جای دیگه نظیرش رو ندیدم. چند سوال و البته در خواست دارم که ممنون میشم پاسخ بدید:

1. سیستم اخذ اطلاعات از محیط در عمل به چه صورت است؟ آیا تنها راه پردازش تصویر است؟
2. اگه امکان داره یکم در مورد ورودی ها و خروجی های کدی که اتچ کردید توضیح بدید ممنونتون میشم.
3. آیا این مباحثی که مطرح کردید در رشته ی خاص دانشگاهی تدریس می شود؟ به عنوان مثال گرایش هوش مصنوعی ...

تشکر مجدد

ravegoat
03-12-14, 20:54
با سلام خدمت ravegoat (Only the registered members can see the link) گرامی،
ابتدا لازم میدونم از تاپیک و آموزش مفیدتون تشکر کنم چون جای دیگه نظیرش رو ندیدم. چند سوال و البته در خواست دارم که ممنون میشم پاسخ بدید:

1. سیستم اخذ اطلاعات از محیط در عمل به چه صورت است؟ آیا تنها راه پردازش تصویر است؟
2. اگه امکان داره یکم در مورد ورودی ها و خروجی های کدی که اتچ کردید توضیح بدید ممنونتون میشم.
3. آیا این مباحثی که مطرح کردید در رشته ی خاص دانشگاهی تدریس می شود؟ به عنوان مثال گرایش هوش مصنوعی ...

تشکر مجدد
با سلام!

قبل از هر چیز عضویت شما در شهر سخت افزار تبریک میگم. همچنین به خاطر تاخیر در پاسخ گویی از شما عذر می خوام.

1- خیر. می تونه از راه های مختلفی صورت بگیره. مثلا" در پرنده های بدون سرنشین داده های سیستم ناوبری و GPS می تونند وضعیت پرنده رو مشخص کنند.
2- بله. ورودی سیستم موقعیت ربات فوتبالیست (در مرکز زمین حریف یا کنج آن) و خروجی سیستم تصمیم ربات است (شوت زدن یا پاس دادن)
3-بله. در درس یادگیری ماشین مربوط به مهندسی کامپیوتر برخی از دانشگاه ها تدریس میشه:
مکتب خونه | جایی برای یاد گرفتن و یاد دادن |یادگیری ماشین (Only the registered members can see the link)
Ceit home (Only the registered members can see the link)

موفق باشید
آرمین

SHABNAM.TAVARI
18-03-15, 09:13
با سلام
امکان داره الگوریتم eql بااستفاده از الگوریتم ژنتیک رو توضیح بدید و برای ژیاده سازی متلب راهنمایی کنید
مرسی

ravegoat
02-04-15, 10:56
با سلام
امکان داره الگوریتم eql بااستفاده از الگوریتم ژنتیک رو توضیح بدید و برای ژیاده سازی متلب راهنمایی کنید
مرسی
با سلام!

ضمن تبریک سال نو، عضویت تون رو در شهر سخت افزار تبریک می گم.

در یادگیری تقویتی تکاملی ما برای جست و جو در فضای سیاست ها به جای به کارگیری الگوریتم های تفاضلی (Temporal Difference یا TD) از الگوریتم های تکاملی نظیر الگوریتم ژنتیک (Only the registered members can see the linkالگوريتم-ژنتيك-ga-38599/) استفاده می کنیم. در TD برای هر سیاست پارامتری به عنوان کیفیت تعریف میشه که نشان دهنده ی میزان کارایی اون سیاست در یک حالت خاص هستش. بر اساس این الگوریتم کیفیت سیاست های مطلوب افزایش پیدا می کنه و به واسطه ی کیفیت هر پارامتر می تونیم به میزان مطلوب بودن اون سیاست پی ببریم.
در مقابل در یادگیری تقویتی تکاملی هر سیاست به صورت یک کروموزوم در میاد. این کرموزوم ها طی فرآیند های تولید مثل و جهش نسل های برتر رو تشکیل می دن. نسل های برتر شامل کروموزوم های برتر اند و چون هر کروموزوم نماینده ی یک سیاست منحصر به فرد است، رمز گشایی نسل های برتر ما رو به سیاست های مطلوب خواهند رساند. برخلاف روش TD در این روش سیاست های مطلوب براساس یک روند تکاملی شناسایی می شوند.

پیشنهاد میشه که دو مقاله ی زیر رو مطالعه بفرمایید:
Only the registered members can see the link
Only the registered members can see the link

در رابطه با پیاده سازی در MATLAB بنده جعبه ابزار اختصاصی ای رو برای EQL سراغ ندارم ولی می تونید از Toolbox زیر جهت این پیاده سازی ایده بگیرید:
ApproxRL: A Matlab Toolbox for Approximate RL and DP (Only the registered members can see the link)

موفق باشید
آرمین