هوش مصنوعی
یادگیری تقویتی برای مبتدیان
یادگیری تقویتی شهرت دارد به اینکه گوشه ترسناک و پر از ریاضیات یادگیری ماشین است. بخشی از این در مرز پژوهش بهجاست، اما ایده اصلی واقعاً ساده و حتی شهودی است. اگر تا حالا یک حیوان خانگی را تربیت کردهاید یا یک بازی ویدیویی یاد گرفتهاید، عصارهاش را میفهمید: چیزها را امتحان کن، ببین چه چیزی پاداش میگیرد، بیشتر همان را انجام بده.
حلقه عامل-محیط
هر مسئله یادگیری تقویتی همان حلقه است. یک عامل وضعیت یک محیط را مشاهده میکند، یک عمل انجام میدهد و یک پاداش بهعلاوه یک وضعیت جدید دریافت میکند. هدف، یادگیری یک سیاست است — یک راهبرد برای انتخاب اعمال — که پاداش کل را در طول زمان بیشینه کند.
state = env.reset()
done = False
while not done:
action = policy(state)
next_state, reward, done = env.step(action)
state = next_state
یادگیری بانظارت از پاسخهای برچسبخورده یاد میگیرد. یادگیری تقویتی از پیامدها یاد میگیرد. این تفاوت همه چیز را درباره رفتارش شکل میدهد.
چرا یادگیری تقویتی متفاوت (و سختتر) است
دو چیز یادگیری تقویتی را در مقایسه با یادگیری بانظارت واقعاً پیچیده میکنند:
- پاداش تأخیری. عملی که بازی را برایتان برد شاید بیست حرکت پیش رخ داده باشد. اختصاص اعتبار در طول زمان چالش مرکزی است.
- اکتشاف در برابر بهرهبرداری. عملی را که میدانید قابلقبول است انجام میدهید، یا چیز جدیدی را امتحان میکنید که شاید بهتر — یا خیلی بدتر — باشد؟ موازنه این موضوع یک هنر است.
یک مدل ذهنی ملموس: دنیای شبکهای
یک دقیقه رباتها و بازیها را فراموش کنید. یک شبکه ۴×۴ تصور کنید. عامل از یک گوشه شروع میکند، یک پاداش در گوشه دیگر است و چند خانه گودالاند که باید از آنها اجتناب کرد. عامل میتواند بالا، پایین، چپ یا راست برود. هیچ نمیداند پاداش کجاست — باید مسیر را با آزمونوخطا کشف کند.
این دنیای کوچک همه چیز را در خود دارد: وضعیتها (خانهها)، اعمال (حرکتها)، پاداشها (+۱ در هدف، −۱ در گودالها) و یک سیاست برای یادگیری. تقریباً هر مفهوم یادگیری تقویتی را میتوان قبل از مقیاسدادن، اینجا نشان داد.
یادگیری Q: یادگیری ارزش اعمال
یادگیری Q نقطه ورود کلاسیک است. ایده: جدولی نگه دارید که برای هر وضعیت و عمل، پاداش آینده مورد انتظار — «مقدار Q» — را تخمین بزند. در طول اپیزودهای فراوان، این تخمینها را به سمت واقعیت بهروز میکنید.
Q[state, action] += alpha * (
reward + gamma * max(Q[next_state]) - Q[state, action]
)
بیایید این بهروزرسانی را رمزگشایی کنیم. alpha نرخ یادگیری است (چقدر سریع بهروز میکنید)، gamma عامل تخفیف است (چقدر به پاداش آینده در برابر آنی اهمیت میدهید) و جمله داخل پرانتز تفاوت بین آنچه انتظار داشتید و آنچه واقعاً رخ داد است. تخمینتان را به سمت حقیقت هل میدهید. این حلقه را بهاندازه کافی در دنیای شبکهای اجرا کنید و جدول Q بیسروصدا به یک نقشه بهینه همگرا میشود.
از جدولها به شبکههای عصبی
جدول Q وقتی وضعیتها کماند کار میکند. اما نمیتوانید برای هر صفحه ممکن یک بازی ویدیویی جدول بسازید — تعدادشان خیلی زیاد است. اینجاست که یادگیری تقویتی عمیق وارد میشود: جدول را با یک شبکه عصبی که مقادیر Q را تقریب میزند جایگزین کنید. اصل یکسان است؛ فقط ذخیرهسازی تغییر میکند. فهمیدن نسخه جدولی اول، نسخه عمیق را بسیار کمرازتر میکند.
اشتباهات رایج
- شروع با یادگیری تقویتی عمیق. یادگیری Q جدولی روی یک مسئله اسباببازی شهودی میسازد که نسخه عمیق فرض میکند از قبل دارید.
- شکلدهی غلط پاداش. پاداشهای بدطراحیشده عاملهایی میسازند که بهشکل پوچ و ناخواسته «میبرند». طراحی پاداش بیشتر کار است.
- اکتشاف بسیار کم. عاملی که هرگز اعمال جدید را امتحان نمیکند، تا ابد در عادتهای متوسط گیر میکند.
بهترین شیوهها
- در یک محیط کوچک و کاملاً درکشده مثل دنیای شبکهای یا یک کار کنترلی ساده شروع کنید.
- پاداش هر اپیزود را در طول زمان لاگ کنید؛ منحنی صعودی نشانه حیات شماست.
- هر بار یک ابرپارامتر را تغییر دهید — یادگیری تقویتی پرنوفه است و آزمایشهای درهمآمیخته هیچ نمیگویند.
جمعبندی
یادگیری تقویتی از دور ترسناک و از نزدیک قابلدسترس است. حلقه عامل-محیط را مسلط شوید، موازنه اکتشاف-بهرهبرداری را درونی کنید و قبل از سراغرفتن شبکههای عصبی، یادگیری Q جدولی را روی یک دنیای شبکهای پیاده کنید. ریاضیات سرانجام عمیق میشود، اما شهود — عمل کن، مشاهده کن، پاداش بگیر، تکرار کن — هرگز تغییر نمیکند. این هفته یک عامل دنیای شبکهای کوچک بسازید و صعود منحنی پاداشش را تماشا کنید؛ آن برد کوچک کل این حوزه را از رمز و راز درمیآورد.