در قسمت دوم این مجموعه در مورد هوش مصنوعی خودآموز، به شما نشان خواهیم داد که چگونه عوامل هوش مصنوعی یاد می گیرند در محیط هایی با فضاهای عمل مجزا، رفتار کنند.
در قسمت اول این مجموعه، فرآیندهای تصمیم مارکوف را معرفی کردیم که اساس یادگیری تقویتی عمیق است. قبل از اینکه وارد این مقاله شوید، توصیه می کنیم مقاله قبلی را بخوانید.
در بخش دوم، کیو-یادگیری عمیق ( Deep Q-Learning ) را مورد بحث قرار میدهیم، که از آن برای برنامهریزی عوامل هوش مصنوعی برای کار در محیط هایی با فضاهای عمل مجزا استفاده میشود. فضای عمل مجزا به اقداماتی اشاره دارد که خاص و به خوبی تعریف شده اند (مانند حرکت به چپ یا راست، بالا یا پایین).
فهرست مطالب
محیط بازی Breakout آتاری محیطی با فضای عمل مجزا را نشان می دهد. عامل هوش مصنوعی می تواند به چپ یا راست حرکت کند. حرکت در هر جهت با سرعت معینی انجام می شود.

اگر عامل هوش مصنوعی بتواند سرعت را تعیین کند، آنگاه میتواند فضای کنش پیوسته با تعداد بینهایت اعمال ممکن (از جمله حرکات با سرعت متفاوت) داشته باشد. کمی در این مورد بیشتر صحبت خواهیم کرد.
کیو-یادگیری عمیق چیست؟
ما از کیو-یادگیری عمیق برای راه اندازی عامل های هوش مصنوعی در محیط هایی با فضای عمل مجزا استفاده می کنیم. فضای عمل مجزا به اقداماتی اشاره دارد که خاص و به خوبی تعریف شده اند (مانند حرکت به چپ یا راست، بالا یا پایین).
تابع ارزش عمل
در مقاله قبلی، مفهوم تابع مقدار عمل Q(s,a) را معرفی کردیم (معادله ۱). به عنوان یادآوری، تابع action-value بازده مورد انتظاری است که عامل هوش مصنوعی با شروع در حالت s، انجام عمل a و سپس پیروی از یک خط مشی π دریافت می کند.
توجه: ما می توانیم خط مشی π را به عنوان استراتژی عامل برای انتخاب اقدامات خاص، بسته به وضعیت فعلی s توصیف کنیم.

Q(s,a) مقدار (یا کیفیت) یک عمل ممکن a در یک حالت خاص s را به عامل اعلام میکند. با توجه به وضعیت s، تابع action-value کیفیت/مقدار هر عمل ممکن a_i را در این حالت به عنوان یک مقدار اسکالر محاسبه می کند (شکل ۱). کیفیت بالاتر به معنای اقدام بهتر با توجه به هدف داده شده است.

اگر تابع انتظار E را در معادله ۱ اجرا کنیم، شکل جدیدی از تابع مقدار عمل به دست می آوریم که در آن با احتمالات سروکار داریم. Pss احتمال انتقال از حالت s به حالت بعدی s است که توسط محیط تعیین می شود. π(a’|s’) خط مشی یا، از نظر ریاضی، توزیع بر روی همه اقدامات با یک حالت s است.

یادگیری تفاوت زمانی
هدف ما در کیو-یادگیری عمیق حل تابع ارزش عمل Q(s,a) است. چرا؟ اگر عامل هوش مصنوعی Q(s,a) را بداند، آنگاه هدف داده شده (مانند برنده شدن در یک بازی شطرنج در مقابل یک بازیکن انسانی یا بازی Breakout) را حل شده در نظر می گیرد زیرا دانش Q(s,a) عامل را قادر می سازد تا کیفیت هر اقدام ممکن در هر وضعیت معین را تعیین کند.با این دانش، عامل می تواند بر این اساس و به شکلی مستمر فتار کند.
معادله ۲ همچنین یک راه حل بازگشتی به ما می دهد که می توانیم از آن برای محاسبه Q(s,a) استفاده کنیم. اما از آنجایی که ما بازگشت و برخورد با احتمالات را در نظر می گیریم، استفاده از این معادله عملی نیست. در عوض، ما باید از الگوریتم یادگیری تفاوت زمانی (TD) برای حل تکراری Q(s,a) استفاده کنیم.
در یادگیری TD ما Q(s,a) را برای هر عمل a در حالت s به سمت بازده تخمینی R(t+1)+γQ(s(t+1)، a(t+1)) به روز می کنیم (معادله ۳) . بازده تخمینی همچنین TD-target نیز نامیده می شود. اجرای مکرر این قانون به روز رسانی برای هر حالت و عمل به دفعات، مقادیر تابع – Q(s,a) صحیح را برای هر حالت – جفت اقدام در محیط به دست می دهد.

میتوانیم الگوریتم TD-Learning را در مراحل زیر خلاصه کنیم:
- Q(s_t, a_t) را برای عمل a_t در حالت s_t محاسبه کنید
- به حالت بعدی s_(t+1) بروید، یک عمل a(t+1) را در آنجا انجام دهید و مقدارQ(s_(t+1)، a(t+1)) را محاسبه کنید.
- از Q(s_(t+1)، a(t+1)) و پاداش فوری R(t+1) برای عمل a_t در آخرین حالت s_t برای محاسبه TD-هدف استفاده کنید.
- Q(s_t, a_t) قبلی را با اضافه کردن Q(s_t, a_t) به تفاوت بین TD-target و Q(s_t, a_t) به روز کنید، α نرخ یادگیری است.
تفاوت زمانی
بیایید مفهوم الگوریتم TD را با جزئیات بیشتری مورد بحث قرار دهیم. در یادگیری TD ما تفاوت زمانی Q(s,a) را در نظر می گیریم – تفاوت بین دو “نسخه” Q(s, a) که یک بار قبل از انجام یک عمل a در حالت s و یک بار بعد از آن با زمان از هم جدا می شوند.
قبل از اقدام
به شکل ۲ نگاهی بیندازید. فرض کنید عامل هوش مصنوعی در حالت s است (فلش آبی). در حالت s، او می تواند دو عمل مختلف a_1 و a_2 را انجام دهد. بر اساس محاسبات برخی از مراحل زمانی قبلی، عامل هوش مصنوعی مقادیر عمل Q(s, a_1) و Q(s, a_2) را برای دو اقدام ممکن در این حالت می داند.

پس از اقدام
بر اساس این دانش، عامل تصمیم می گیرد تا اقدام a_1 را انجام دهد. پس از انجام این عمل، عامل در وضعیت بعدی قرار دارد. برای انجام عمل a_1، او پاداش فوری R را دریافت میکند. با قرار گرفتن در وضعیت، عامل دوباره میتواند دو عمل ممکن a’_1 و a’_2 را انجام دهد که برای آنها دوباره مقادیر عمل را از برخی محاسبات قبلی میداند.
اگر به تعریف Q(s,a) در معادله ۱ نگاه کنید، متوجه خواهید شد که در حالت s اکنون اطلاعات جدیدی داریم که میتوانیم از آن برای محاسبه یک مقدار جدید برای Q(s, a_1) استفاده کنیم. این اطلاعات پاداش فوری R برای آخرین اقدام در آخرین وضعیت و Q(s’,a’) برای اقدام a’ است که عامل در این حالت جدید انجام خواهد داد. میتوانیم مقدار جدید Q(s, a_1) را با توجه به معادله شکل ۳ محاسبه کنیم. سمت راست معادله نیز همان چیزی است که ما به آن TD-target میگوییم. تفاوت بین TD-target و مقدار قدیمی (یا نسخه زمانی) Q(s,a_1) تفاوت زمانی نامیده می شود.
توجه: در طول یادگیری TD، تفاوتهای زمانی را برای هر مقدار عمل-مقدار Q(s,a) محاسبه میکنیم و از آنها برای بهروزرسانی Q(s,a) همزمان استفاده میکنیم تا زمانی که Q(s,a) به سمت مقدار واقعی خود همگرا شود.

SARSA
الگوریتم یادگیری TD که برای Q(s,a) اعمال می شود معمولاً به عنوان الگوریتم SARSA (وضعیت-عمل-پاداش-حالت-عمل) شناخته می شود. SARSA نمونه خوبی از نوع خاصی از الگوریتم های یادگیری است که به عنوان الگوریتم های روی خط مشی نیز شناخته می شود.
قبلاً سیاست π(a|s) را به عنوان نگاشت از حالت s به عمل a معرفی کردیم. نکته ای که در این مرحله باید به خاطر بسپارید این است که الگوریتم های روی خط مشی از همان خط مشی برای به دست آوردن اقدامات برای Q(s_t, a_t) و همچنین اقدامات برای Q(s(t+1), a_(t+1)) در TD-targe استفاده می کنند. این بدان معناست که ما همزمان سیاست یکسانی را دنبال کرده و بهبود میدهیم.
Q-Learning
بالاخره به Q-learning رسیدیم. ابتدا باید نگاهی به دومین نوع خاص از الگوریتم ها به نام الگوریتم های خارج از خط مشی بیاندازیم. همانطور که قبلاً می دانید Q-learning به این دسته از الگوریتم ها تعلق دارد که از الگوریتم های مبتنی بر سیاست مانند SARSA متمایز است.
برای درک الگوریتم های خارج از خط مشی باید خط مشی رفتار μ(a|s) را معرفی کنیم. خط مشی رفتار، اقدامات a_t~µ(a|s) را برای Q(s_t,a_t) برای همه t ها تعیین می کند. در مورد SARSA، خط مشی رفتاری همان سیاستی است که ما دنبال می کنیم و در عین حال سعی در بهینه سازی آن داریم.
در الگوریتم های خارج از خط مشی ما دو خط مشی متفاوت داریم μ(a|s) و μ(a|s). π(a|s) رفتار و π(a|s) هدف است. در حالی که از خط مشی رفتار برای محاسبه Q(s_t, a_t) استفاده می کنیم، از خط مشی هدف برای محاسبه Q(s_t, a_t) فقط در TD-target استفاده می کنیم. (ما در بخش بعدی به این موضوع باز خواهیم گشت، جایی که محاسبات واقعی را انجام خواهیم داد.)
توجه: خطمشی رفتار اقداماتی را برای همه Q(s,a) انتخاب میکند. در مقابل، سیاست هدف اقدامات را فقط برای محاسبه TD-target تعیین می کند.
الگوریتمی که ما آن را الگوریتم یادگیری Q می نامیم یک مورد خاص است که در آن خط مشی هدف π(a|s) یک w.r.t حریصانه است. Q(s,a)، به این معنی که استراتژی ما اقداماتی را انجام می دهد که منجر به بالاترین مقادیر Q می شود. پیروی از خط مشی هدف، نتیجه می دهد:

در این حالت، سیاست هدف، سیاست حریص نامیده می شود. خطمشی حریصانه به این معنی است که ما فقط اقداماتی را انتخاب میکنیم که به بالاترین مقادیر Q(s,a) منجر میشوند. میتوانیم این خطمشی هدف حریصانه را در معادله مقادیر عمل Q(s,a) وارد کنیم، جایی که قبلاً یک خطمشی تصادفی π(a|s) را دنبال میکردیم:

خط مشی حریصانه مقادیر عمل بهینه Q*(s,a) را در اختیار ما قرار می دهد زیرا طبق تعریف Q*(s,a) Q(s,a) است که از خط مشی پیروی می کند که مقادیر کنش را به حداکثر می رساند:

آخرین خط در معادله ۵ چیزی نیست جز معادله بهینه بلمن که در قسمت اول این سری به دست آوردیم. ما از این معادله به عنوان یک قانون به روز رسانی بازگشتی برای تخمین تابع مقدار عمل بهینه Q*(s,a) استفاده می کنیم.
با این حال، یادگیری TD بهترین راه برای یافتن Q*(s,a) است. با سیاست هدف حریصانه، مرحله بهروزرسانی یادگیری TD برای Q(s,a) در معادله ۳ سادهتر میشود و به صورت زیر به نظر میرسد:

میتوانیم الگوریتم یادگیری TD را برای Q(s,a) با خطمشی هدف حریصانه در مراحل زیر خلاصه کنیم:
- Q(s_t, a_t) را برای عمل a_t در حالت s_t محاسبه کنید
- به حالت بعدی s_(t+1) بروید، عمل ‘a را انجام دهید که بالاترین مقادیر Q را به همراه دارد و Q(s_(t+1)، a’) را محاسبه کنید.
- از Q(s_(t+1)، a’) و پاداش فوری R برای عمل a_t در آخرین حالت s_t برای محاسبه TD-target استفاده کنید.
- Q(s_t, a_t) قبلی را با اضافه کردن Q(s_t, a_t) به تفاوت بین TD-target و Q(s_t, a_t) به روز کنید، α نرخ یادگیری است.
شکل ۳ را در نظر بگیرید، جایی که عامل در حالت s قرار گرفت و مقادیر عمل را برای اقدامات ممکن در آن حالت می دانست. با پیروی از سیاست هدف حریصانه، عامل هوش مصنوعی اقدامی را با بالاترین مقدار عمل انجام می دهد (مسیر آبی در شکل ۴). این خط مشی همچنین یک مقدار جدید برای Q(s, a_1) به ما می دهد (به معادله شکل ۴ در زیر مراجعه کنید)، که طبق تعریف، TD-target است.

کیو-یادگیری عمیق (Deep Q-Learning)
ما در نهایت آماده استفاده از یادگیری عمیق هستیم. اگر به قانون به روز شده برای Q(s,a) نگاه کنید، ممکن است متوجه شوید که اگر TD-target و Q(s,a) مقادیر یکسانی داشته باشند، هیچ به روز رسانی دریافت نمی کنیم. در این حالت Q(s,a) به ارزشهای عمل واقعی همگرا می شود و به هدف می رسد.
این بدان معناست که هدف ما به حداقل رساندن فاصله بین TD-هدف و Q(s,a) است که میتوانیم آن را با تابع از دست دادن خطا مجذور بیان کنیم (معادله ۱۰). ما این تابع از دست دادن را با استفاده از الگوریتمهای شیب نزولی معمول به حداقل میرسانیم.

هدف و Q-Network
در کیو-یادگیری عمیق ، ما TD-target y_i و Q(s,a) را به طور جداگانه توسط دو شبکه عصبی مختلف که اغلب شبکه های هدف و کیو-شبکه نامیده می شوند، تخمین می زنیم (شکل ۴). پارامترهای θ(i-1) (وزنها، سوگیریها) شبکه هدف با پارامتر θ(i) شبکه Q در زمان قبلی مطابقت دارد. به عبارت دیگر، پارامترهای شبکه هدف در زمان ثابت می شوند و پس از n تکرار با پارامترهای شبکه Q به روز می شوند.
توجه: با توجه به وضعیت فعلی s، کیو-شبکه مقادیر عمل Q(s,a) را محاسبه می کند. در همان زمان، شبکه هدف از حالت بعدی s برای محاسبه Q(s’,a) برای TD-target استفاده می کند.

تحقیقات نشان می دهد که استفاده از دو شبکه عصبی مختلف برای محاسبه TD-target و Q(s,a) منجر به پایداری بهتر مدل می شود.
خط مشی ε-Greedy
در حالی که خط مشی هدف π(a|s) خط مشی حریصانه باقی می ماند، خط مشی رفتار μ(a|s) اقدام a_i را که عامل هوش مصنوعی انجام می دهد، تعیین می کند، بنابراین مدل Q(s,a_i) باید آن را در تلفات مربعی خطا وارد کند. تابع (محاسبه شده توسط کیو-شبکه).
ما معمولاً ε-Greedy را برای خط مشی رفتار انتخاب می کنیم زیرا با خط مشی ε-Greedy، عامل هوش مصنوعی یک عمل تصادفی با احتمال ثابت ε را در هر مرحله زمانی انتخاب می کند. اگر ε مقدار بیشتری نسبت به عدد p تولید شده به طور تصادفی داشته باشد، ۰ ≤ p ≤ ۱ باشد، عامل هوش مصنوعی یک عمل تصادفی را از فضای عمل انتخاب می کند. در غیر این صورت، عمل مطابق با مقدار عمل متمایل Q(s,a) حریصانه انتخاب می شود:

انتخاب خط مشی ε-Greedy به عنوان خط مشی رفتار μ معضل مبادله کاوش/بهره وری را حل می کند.
کاوش / بهره برداری
تصمیم گیری برای اینکه کدام اقدام انجام شود شامل یک انتخاب اساسی است:
- بهره برداری: با توجه به اطلاعات فعلی بهترین تصمیم را بگیرید
- کاوش: اطلاعات بیشتری جمع آوری کنید، مسیرهای جدید احتمالی را کشف کنید
از نظر بهره برداری، عامل هوش مصنوعی بهترین اقدام ممکن را با توجه به خط مشی رفتار μ انجام می دهد. اما این کار ممکن است منجر به یک مشکل شود. ممکن است یک اقدام (جایگزین) دیگری وجود داشته باشد که عامل می تواند انجام دهد که منجر به (در دراز مدت) در مسیر بهتری از طریق توالی حالت ها شود. با این حال، اگر از خط مشی رفتار پیروی کنیم، عامل هوش مصنوعی نمی تواند این اقدام جایگزین را انجام دهد. در این مورد، ما از سیاست فعلی استفاده می کنیم، اما سایر اقدامات جایگزین را بررسی نمی کنیم.
خط مشی ε-Greedy این مشکل را با اجازه دادن به عامل هوش مصنوعی برای انجام اقدامات تصادفی از فضای عمل با احتمال مشخص ε حل می کند. به این می گویند کاوش(اکتشاف). طبق رابطه ۱۲ معمولاً مقدار ε در طول زمان کاهش می یابد. در اینجا n برابر است با تعداد تکرارها. کاهش ε به این معنی است که در ابتدای آموزش، سعی میکنیم مسیرهای جایگزین بیشتری را کشف کنیم، اما در پایان، به سیاست اجازه میدهیم در مورد کدام اقدام تصمیم بگیرد.

تکرار را تجربه کنید
در گذشته، رویکرد شبکه عصبی برای تخمین TD-هدف و Q(s,a) پایدارتر می شود اگر مدل کیو-یادگیری عمیق بازپخش تجربه را اجرا کند. بازپخش تجربه چیزی نیست جز حافظه ای که <s, s’, a’, r > tuple را ذخیره می کند.
- s=وضعیت عامل هوش مصنوعی
- a’=عملی که در حالت s توسط عامل انجام می شود
- r = پاداش فوری دریافت شده در حالت s برای اقدام a
- s’= حالت بعدی عامل بعد از حالت s
هنگام آموزش شبکه عصبی، ما معمولاً از جدیدترین <s, s’, a’, r> استفاده نمی کنیم. در عوض، دستههای تصادفی <s, s’, a’, r> را از بازپخش تجربه برای محاسبه TD-target, Q(s,a) میگیریم و در پایان نزول گرادیان را اعمال میکنیم.
الگوریتم شبه بازی Q-Learning عمیق با تجربه
شبه الگوریتم زیر، کیو-یادگیری عمیق را با بازپخش تجربه پیاده سازی می کند. تمام موضوعاتی که قبلاً در مورد آن ها صحبت کردیم به ترتیب درست در این الگوریتم گنجانده شده اند، دقیقاً چگونه آن را در کد پیاده سازی می کنید.

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