مارا دنبال کنید : 

تفاوت بین Q-Learning و SARSA
تفاوت بین Q-Learning و SARSAمروری بر Q-Learning

Q-learning یک الگوریتم یادگیری تقویتی خارج از سیاست (off-policy) است که ارزش بهترین عمل ممکن را مستقل از سیاستی که دنبال می‌شود، یاد می‌گیرد.

هدف این الگوریتم یادگیری تابع ارزش عمل بهینه Q∗(s,a) است که بیشترین پاداش مورد انتظار آینده را برای انجام عمل a  در حالت s می‌دهد. قانون به‌روزرسانی برای Q-learning به این صورت است:

The Q-Learning equation

مروری بر SARSA

در مقابل، SARSA یک الگوریتم یادگیری تقویتی روی سیاست (on-policy) است. این الگوریتم نیز یک تابع ارزش عمل را یاد می‌گیرد، اما تخمین‌های خود را براساس عملی که واقعاً توسط سیاست فعلی انجام شده، به‌روزرسانی می‌کند. قانون به‌روزرسانی برای SARSA به این صورت است:

The SARSA equation

در SARSA، مقدار Q(s,a)  با توجه به عمل واقعی a′  که در حالت بعدی s′ انتخاب شده است، به‌روزرسانی می‌شود. این تفاوت کلیدی بین SARSA و Q-learning است، زیرا SARSA وابسته به سیاست جاری است.

تفاوت‌های کلیدی بین Q-Learning و SARSA

1.اکتشاف در مقابل بهره‌برداری (Exploration vs. Exploitation)

  • Q-Learning: به‌عنوان یک روش خارج از سیاست (off-policy) است، Q-learning مقدارهای Q خود را با استفاده از بیشترین پاداش ممکن آینده به‌روزرسانی می‌کند، بدون توجه به اینکه کدام عمل انجام شده است. این ویژگی می‌تواند به جستجوی تهاجمی‌تر محیط منجر شود.

در واقع، Q-learning همواره به دنبال بیشترین پاداش مورد انتظار در حالت‌های بعدی است، حتی اگر این پاداش مربوط به عملی نباشد که سیاست فعلی انتخاب کرده است. به همین دلیل، Q-learning نسبت به SARSA تمایل بیشتری به کشف و آزمایش گزینه‌های جدید دارد.

  • SARSA: به‌عنوان یک روش روی سیاست (on-policy) است، SARSA مقدارهای Q خود را براساس اعمالی که واقعاً توسط سیاست انجام شده‌اند، به‌روزرسانی می‌کند. این ویژگی معمولاً به یک رویکرد محتاطانه‌تر منجر می‌شود که به شکل محافظه‌کارانه‌تری بین اکتشاف (exploration) و بهره‌برداری (exploitation) تعادل برقرار می‌کند.

به بیان دیگر، چون SARSA براساس اعمال واقعی و پاداش‌های دریافتی در مسیر سیاست فعلی خود عمل می‌کند، کمتر از Q-learning تمایل به انجام حرکات ریسکی و جستجوهای تهاجمی دارد و با احتیاط بیشتری به محیط پاسخ می‌دهد.

2.به‌روزرسانی قوانین (Update Rules)

  • Q-Learning: از عملگر بیشینه (max) برای به‌روزرسانی مقادیر Q استفاده می‌کند و روی بهترین عمل ممکن تمرکز دارد.

این به این معناست که در هر مرحله، Q-learning همواره مقداری را انتخاب می‌کند که بیشترین پاداش مورد انتظار را به همراه دارد، بدون توجه به اینکه سیاست فعلی چه عملی را انتخاب کرده است. این ویژگی باعث می‌شود Q-learning به دنبال بهینه‌ترین تصمیم‌ها باشد، حتی اگر این تصمیم‌ها با عمل واقعی گرفته‌شده توسط سیاست جاری متفاوت باشند.

  • SARSA: از عملی که توسط سیاست فعلی انتخاب شده است استفاده می‌کند، که باعث می‌شود فرآیند یادگیری بیشتر به رفتار سیاست وابسته باشد.

این بدان معناست که SARSA مقادیر Q را براساس عمل واقعی انجام‌شده طبق سیاست فعلی به‌روزرسانی می‌کند، و به همین دلیل، یادگیری آن به شدت به نحوه رفتار سیاست در محیط بستگی دارد. این وابستگی به سیاست باعث می‌شود SARSA به‌طور طبیعی تعادلی میان اکتشاف و بهره‌برداری برقرار کند، و در نتیجه رفتار محتاطانه‌تری را نسبت به Q-learning ارائه دهد.

3.یادگیری Off-Policy در مقابل On-Policy (On-policy vs. Off-policy Learning)

  • Q-Leaning: یک روش خارج از سیاست (off-policy) است، به این معنا که ارزش سیاست بهینه را به‌طور مستقل از اعمالی که عامل انجام می‌دهد، یاد می‌گیرد.

این یعنی Q-learning بدون توجه به این‌که عامل چه عملی را در هر حالت انتخاب می‌کند، همواره در پی یادگیری بهترین سیاست ممکن است. به دلیل این استقلال از سیاست فعلی عامل، Q-learning می‌تواند بدون تبعیت از سیاست جاری به بیشترین پاداش‌های ممکن دست یابد و ارزش‌های Q را بر اساس پاداش‌های بهینه‌سازی‌شده به‌روزرسانی کند.

  • SARSA: یک روش روی سیاست (on-policy) است، به این معنا که ارزش سیاستی را که عامل در حال دنبال کردن آن است، یاد می‌گیرد.

این یعنی SARSA به‌طور مستقیم با استفاده از سیاست فعلی عامل، مقدارهای Q را به‌روزرسانی می‌کند. در نتیجه، یادگیری SARSA به اعمالی که عامل طبق سیاست جاری خود انجام می‌دهد، وابسته است. این ویژگی باعث می‌شود SARSA ارزش‌های Q را براساس سیاست جاری به دست آورد و به‌طور طبیعی میان اکتشاف و بهره‌برداری تعادلی ایجاد کند.

به طور خلاصه، Q-Learning بیشتر به کاوش تمایل دارد، در حالی که SARSA تلاش می‌کند یک تعادل بین کاوش و بهره‌برداری برقرار کند. این تفاوت‌ها تأثیر زیادی بر روی نحوه یادگیری و بهینه‌سازی در محیط‌های مختلف دارند.

ویژگیQ-LeaningSARSA
نوع سیاست (Policy Type)خارج از سیاست ( Off-policy)روی سیاست ( On-policy)
به‌روزرسانی قوانین (Update Rule)The Q-Learning equationThe SARSA equation
رویکرد یادگیری ( Learning Approach)ارزش سیاست بهینه را یاد می‌گیرد.ارزش سیاست فعلی را یاد می‌گیرد.
ثبات ( Stability)به‌خاطر به‌روزرسانی‌های خارج از سیاست، ممکن است کمتر پایدار باشد.به‌خاطر به‌روزرسانی‌های درون‌سیاست، پایدارتر است.
سرعت همگرایی ( Convergence Speed)معمولاً همگرایی سریع‌تری به سیاست بهینه دارد.معمولاً همگرایی کندتری به سیاست بهینه دارد.
تاثیر اکتشاف ( Exploration Impact)سیاست کاوش می‌تواند با سیاست یادگیری متفاوت باشد.کاوش به‌طور مستقیم بر به‌روزرسانی‌های یادگیری تأثیر می‌گذارد.
انتخاب اقدام برای بروزرسانی
( Action Selection for Update)
به‌روزرسانی‌ها بر اساس حداکثر پاداش آینده انجام می‌شوند.به‌روزرسانی‌ها بر اساس عملی که واقعاً انجام شده‌اند، صورت می‌گیرند.
کاربرد
(Use Case Suitability)
مناسب برای محیط‌هایی که کارایی حیاتی است.مناسب برای محیط‌هایی که ثبات حیاتی است.
سناریوهای نمونه
( Example Scenarios)
بازی‌سازی (Gaming)، رباتیک (robotics)، تجارت مالی (financial trading)بهداشت و درمان (Healthcare)، مدیریت ترافیک تطبیقی (adaptive traffic management)، یادگیری شخصی‌سازی‌شده (personalized learning)
رسیدگی به اقدامات اکتشافی
( Handling of Exploratory Actions)
بیشتر کارآمد است اما ممکن است با تجربیات واقعی کمتر هم‌راستا باشد.بیشتر محتاط و هم‌راستا با تجربیات واقعی است.
تمرکز الگوریتم

( Algorithm Focus)
بر روی یافتن بهترین اقدامات ممکن تمرکز دارد.بر روی اقداماتی که در حال حاضر توسط عامل انجام می‌شود تمرکز دارد.
تحمل ریسک
( Risk Tolerance)
تحمل بالاتری برای ریسک و بی‌ثباتی دارد.تحمل کمتری برای ریسک دارد و ایمنی را در اولویت قرار می‌دهد.

1.Q-Learning: کارایی حیاتی

Q-Learning یک الگوریتم یادگیری تقویتی غیرنظارتی است که هدف آن یادگیری یک سیاست بهینه برای انتخاب عمل‌ها در یک محیط است. در Q-Learning، عامل (Agent) به دنبال یادگیری بهترین عمل برای هر حالت است تا حداکثر پاداش را کسب کند.

کارایی حیاتی: در محیط‌هایی که کارایی (Performance) بالایی نیاز است، Q-Learning می‌تواند انتخاب‌های بهتری را انجام دهد زیرا از تجربیات گذشته‌اش برای بهبود تصمیمات آینده استفاده می‌کند. به عبارت دیگر، Q-Learning به عامل این امکان را می‌دهد که خود را سریعاً با تغییرات محیط سازگار کند و یادگیری سریعی داشته باشد.

مثال: فرض کنید که شما یک ربات در یک محیط پیچیده دارید که باید از میان موانع عبور کند. در اینجا، کارایی به معنای توانایی ربات برای حرکت سریع و بدون برخورد با موانع است. با استفاده از Q-Learning، ربات می‌تواند تجربیات خود را ذخیره کند و بهترین راه را برای عبور از موانع یاد بگیرد. اگر ربات به یک مانع برخورد کند، آن تجربه را ذخیره کرده و در دفعات بعدی از آن پرهیز می‌کند، بنابراین کارایی آن افزایش می‌یابد.

2.SARSA: ثبات حیاتی

SARSA (State-Action-Reward-State-Action) نیز یک الگوریتم یادگیری تقویتی است، اما تفاوت آن با Q-Learning در این است که SARSA از سیاست فعلی خود برای به‌روزرسانی Q-Values استفاده می‌کند. این به این معنی است که SARSA یاد می‌گیرد که چطور به‌طور پیوسته با سیاست فعلی‌اش عمل کند.

ثبات حیاتی: در محیط‌هایی که ثبات (Stability) مهم است، SARSA می‌تواند مفیدتر باشد. زیرا این الگوریتم در هنگام یادگیری به عمل‌هایی که بر اساس سیاست فعلی انتخاب می‌شوند، بیشتر توجه می‌کند و به همین دلیل، تغییرات شدید در یادگیری را کاهش می‌دهد. این باعث می‌شود که رفتار عامل در مواجهه با تغییرات ناگهانی محیط کمتر تحت تأثیر قرار گیرد و ثبات بیشتری داشته باشد.

مثال: فرض کنید که در یک بازی ویدیویی، شخصیت شما باید در مقابل دشمنان متفاوت عمل کند. در اینجا، ثبات به معنای توانایی شخصیت برای حفظ یک استراتژی مشخص و قابل پیش‌بینی است. با استفاده از SARSA، شخصیت بازی به تدریج می‌آموزد که در شرایط خاص چگونه عمل کند و با استفاده از اطلاعات گذشته، رفتار خود را به تدریج بهبود می‌بخشد. این الگوریتم از انتخاب‌های فعلی خود استفاده می‌کند و این باعث می‌شود که تغییرات ناگهانی در رفتار شخصیت کمتر باشد.

بطور کلی Q-Learning برای محیط‌هایی که کارایی حیاتی است مناسب است زیرا به سرعت می‌تواند بهترین عمل‌ها را یاد بگیرد و بهینه‌سازی کند و SARSA برای محیط‌هایی که ثبات حیاتی است مناسب است زیرا از سیاست فعلی خود پیروی می‌کند و یادگیری تدریجی‌تری دارد که تغییرات را به حداقل می‌رساند.

نقاط قوت و ضعف (Strengths and Weaknesses)
Q-Learning

نقاط قوت (Strengths):

  • معمولاً سریع‌تر به سیاست بهینه همگرا می‌شود.

این سرعت همگرایی بیشتر به این دلیل است که Q-learning از عملگر بیشینه (max) استفاده می‌کند و همیشه به دنبال بهترین پاداش‌های ممکن در آینده است، حتی اگر سیاست فعلی این گزینه‌ها را انتخاب نکرده باشد. این ویژگی به آن کمک می‌کند تا به‌طور مؤثرتری از تجربیات قبلی استفاده کند و به سرعت به یک سیاست بهینه نزدیک شود.

  • Q-learning در اکتشاف محیط بسیار تهاجمی‌تر است که می‌تواند در سناریوهای پیچیده مفید باشد.

این رویکرد تهاجمی به این معناست که Q-learning تمایل دارد گزینه‌های بیشتری را آزمایش کند و به دنبال بیشترین پاداش‌ها باشد، حتی اگر این گزینه‌ها ریسک بیشتری داشته باشند. در محیط‌های پیچیده، جستجوی تهاجمی می‌تواند به شناسایی سریع‌تر بهترین استراتژی‌ها و بهینه‌سازی عملکرد کمک کند، زیرا عامل قادر است از تجربیات متنوع بیشتری برای یادگیری استفاده کند.

نقاط ضعف (Weaknesses):

  • Q-learning می‌تواند به دلیل اکتشاف تهاجمی، از نظر پایداری کمتر قابل اعتماد باشد.

این اکتشاف تهاجمی می‌تواند منجر به نوسانات بیشتری در مقادیر Q شود، زیرا عامل ممکن است به طور مکرر به حالت‌های جدید و ناشناخته وارد شود و از تصمیمات غیر بهینه تبعیت کند. این رفتار می‌تواند باعث شود که یادگیری در مراحل اولیه ناپایدار باشد و ممکن است زمان بیشتری طول بکشد تا به همگرایی برسد و عملکرد بهینه‌ای را پیدا کند.

  • Q-learning ممکن است به سیاست‌های زیر بهینه همگرا شود اگر اکتشاف به درستی مدیریت نشود.

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

SARSA

نقاط قوت (Strengths):

  • فرآیند یادگیری در SARSA به دلیل رویکرد روی سیاست (on-policy) پایدارتر است.

این ثبات به این دلیل است که SARSA مقادیر Q را براساس اعمال واقعی انجام‌شده طبق سیاست فعلی به‌روزرسانی می‌کند. به همین دلیل، یادگیری کمتر تحت تأثیر نوسانات ناشی از اکتشافات تهاجمی قرار می‌گیرد و معمولاً به تغییرات تدریجی‌تری در مقدارهای Q منجر می‌شود. این ویژگی به عامل کمک می‌کند تا به آرامی به یک سیاست بهینه نزدیک شود و در عین حال رفتار مطمئن‌تری را در محیط ارائه دهد.

  • SARSA در مدیریت محیط‌هایی با سطوح بالای عدم قطعیت بهتر عمل می‌کند.

این به این دلیل است که SARSA به‌طور مستقیم به سیاست فعلی وابسته است و مقادیر Q را براساس اعمال واقعی انجام‌شده به‌روزرسانی می‌کند. این رویکرد به آن اجازه می‌دهد تا به‌تدریج و با دقت بیشتری یاد بگیرد و به نوسانات غیرمنتظره در پاداش‌ها و وضعیت‌ها پاسخ دهد. در محیط‌های نامشخص، این ویژگی به SARSA کمک می‌کند تا به‌طور مؤثری به تغییرات پاسخ دهد و به سیاست‌های بهینه‌ای دست یابد که متناسب با شرایط پیچیده و متغیر محیط باشد.

نقاط ضعف (Weaknesses):

  • SARSA ممکن است به دلیل تعادل بین اکتشاف و بهره‌برداری، به آهستگی همگرا شود.

این تعادل به این معناست که SARSA همواره تلاش می‌کند تا بین آزمایش گزینه‌های جدید (اکتشاف) و استفاده از اطلاعات موجود برای بهینه‌سازی پاداش‌ها (بهره‌برداری) تعادل برقرار کند. این رویکرد محتاطانه می‌تواند به فرآیند یادگیری زمان بیشتری نیاز داشته باشد تا به یک سیاست بهینه نزدیک شود، زیرا عامل ممکن است زمان بیشتری را صرف آزمایش رفتارهای مختلف کند و به همین دلیل، سرعت همگرایی آن کمتر از الگوریتم‌های تهاجمی‌تر مانند Q-learning باشد.

  • SARSA ممکن است به اندازه Q-learning به‌طور کامل اکتشاف نکند و در نتیجه ممکن است سیاست‌های بهینه را از دست بدهد.

این به این دلیل است که SARSA به طور مستقیم به رفتار سیاست فعلی وابسته است و بر اساس اعمال واقعی انجام‌شده، مقادیر Q را به‌روزرسانی می‌کند. این وابستگی می‌تواند به این معنا باشد که SARSA کمتر به سمت گزینه‌های جدید و ناشناخته می‌رود و ممکن است به نتایج زیر بهینه دست یابد. بنابراین، در برخی از سناریوها، SARSA ممکن است فرصت‌های بالقوه‌ای را برای بهبود عملکرد خود از دست بدهد.

نتیجه گیری

در نتیجه، Q-learning و SARSA الگوریتم‌های بنیادی یادگیری تقویتی هستند که رویکردهای متفاوتی دارند: Q-learning یک روش خارج از سیاست (off-policy) است، زیرا به دنبال یافتن مقادیر بهینه برای جدول Q است که در آینده بیشترین بازده را به همراه داشته باشد. این ویژگی آن را برای محیط‌های پویا مانند بازی‌ها و رباتیک مناسب می‌سازد. از سوی دیگر، SARSA یک روش روی سیاست (on-policy) است، زیرا از عمل فعلی عامل یاد می‌گیرد و به همین دلیل از نظر ایمنی و ثبات بیشتر، به‌ویژه در حوزه‌های مراقبت‌های بهداشتی، کنترل ترافیک و مدیریت، بهتر عمل می‌کند.

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

سوالات متدوال
تفاوت اصلی در قانون به‌روزرسانی بین Q-learning و SARSA چیست؟

به‌روزرسانی مقدار Q در Q-learning بر اساس حداکثر پاداش ممکن در حالت بعدی انجام می‌شود، نه بر اساس پاداشی که در عمل انتخاب شده است (روش خارج از سیاست یا off-policy)  این ویژگی اهمیت دارد زیرا SARSA مقدار Q را با استفاده از عملی که واقعاً توسط عامل انجام شده است، به‌روزرسانی می‌کند (روش روی سیاست یا on-policy)

این تفاوت بنیادی باعث می‌شود که Q-learning بتواند به‌طور تهاجمی‌تری به دنبال بهترین سیاست‌ها باشد، در حالی که SARSA از رویکردی محتاطانه‌تر استفاده می‌کند که به اعمال واقعی و پاداش‌های دریافتی وابسته است.

تفاوت از نظر یادگیری سیاست در Q-learning و SARSA.

Q-learning ارزش سیاست بهینه را یاد می‌گیرد و به اعمال عامل وابسته نیست. در مقابل، SARSA به یادگیری ارزش سیاستی که عامل در یک لحظه خاص دنبال می‌کند، متمرکز است.

این به این معناست که Q-learning می‌تواند بدون توجه به تصمیمات فعلی عامل، به دنبال بهترین نتایج ممکن باشد، در حالی که SARSA به طور مستقیم تحت تأثیر اعمال و پاداش‌هایی است که عامل در حین یادگیری دریافت می‌کند. این تفاوت در رویکرد یادگیری می‌تواند بر نحوه عملکرد و سرعت همگرایی هر الگوریتم تأثیر بگذارد.

در Q-learning، (off-policy) به موقعیت‌هایی اشاره دارد که یک عامل عملی را انتخاب می‌کند که توسط الگوریتم مشاهده نشده است.

روش خارج از سیاست (off-policy) به این معناست که مقدار Q به ارزش بهترین عمل ممکن در حالت بعدی به‌روزرسانی می‌شود، در حالی که به اعمالی که احتمالاً عامل انتخاب می‌کند، توجهی نمی‌شود.

این رویکرد به Q-learning اجازه می‌دهد تا از اطلاعات حداکثری برای یادگیری استفاده کند، حتی اگر عامل در حال حاضر اقداماتی غیر از بهترین عمل ممکن را انجام دهد. این ویژگی به Q-learning کمک می‌کند تا به سرعت به سیاست‌های بهینه نزدیک شود و از تجربیات متنوع برای بهبود یادگیری استفاده کند.

کدام الگوریتم به سرعت به سیاست بهینه همگرا می‌شود؟

الگوریتم Q-learning به طور کلی به سیاست بهینه نزدیک‌تر همگرا می‌شود، زیرا تمایل دارد از عملگر بیشینه (max) برای پاداش‌های آینده مورد انتظار استفاده کند. با این حال، این ویژگی ممکن است بر پایداری الگوریتم تأثیر بگذارد.

به این معنا که اگرچه Q-learning می‌تواند سریع‌تر به یک سیاست بهینه دست یابد، اما این فرآیند ممکن است با نوسانات و عدم ثبات همراه باشد. این ناپایداری می‌تواند در مراحل اولیه یادگیری و در نتیجه اکتشافات تهاجمی بیشتر ایجاد شود. بنابراین، در حالی که Q-learning سریع‌تر همگرا می‌شود، لازم است که مراقبت‌های لازم برای حفظ پایداری نیز لحاظ شود.


ترتیبی که هوشینو برای خواندن مطالب یادگیری تقویتی به شما پیشنهاد می‌کند:

1.یادگیری تقویتی بخش اول

2.یادگیری تقویتی بخش دوم

3.یادگیری تقویتی بخش سوم

4.زنجیره مارکوف بخش اول

5.زنجیره مارکوف بخش دوم

6.زنجیره مارکوف بخش سوم

7.زنجیره مارکوف بخش چهارم

8.الگوریتم Q-Learning بخش اول

9.الگوریتم Q-Learning بخش دوم

10.الگوریتم Q-Learning بخش سوم

11.الگوریتم SARSA-بخش اول

12.الگوریتم SARSA-بخش دوم

13. تفاوت بین Q-Learning و SARSA

الگوریتم (SARSA)-بخش دوم
پیاده‌سازی الگوریتم SARSA (Implementing SARSA in Gymnasium’s Taxi-v3 Environment)

ما قصد داریم مراحل راه‌اندازی محیط، تعریف و پیاده‌سازی یک عامل یادگیری با الگوریتم SARSA، آموزش آن و تحلیل نتایج یادگیری‌اش را بررسی کنیم. هر یک از این مراحل کمک می‌کنند تا بهتر درک کنیم که SARSA، به عنوان یک الگوریتم درون‌سیاستی (on-policy)، چگونه سیاست خود را با توجه به اقداماتی که انجام می‌دهد و پاداش‌هایی که دریافت می‌کند، به‌روزرسانی می‌کند. این در حالی است که الگوریتم‌هایی مثل Q-learning که برون‌سیاستی (off-policy) هستند، تأثیر سیاست فعلی بر نتایج را در نظر نمی‌گیرند.

گام1: راه‌اندازی و مقداردهی (Setup and Initialization)

ابتدا، با وارد کردن کتابخانه‌های ضروری شروع می‌کنیم و یک تابع رسم (plotting function) تعریف می‌کنیم که بعداً برای تجسم عملکرد عامل در طول اپیزودهای آموزشی از آن استفاده خواهیم کرد.

				
					import gymnasium as gym
import numpy as np
from collections import defaultdict
import matplotlib.pyplot as plt

def plot_returns(returns):
    plt.plot(np.arange(len(returns)), returns)
    plt.title('Episode returns')
    plt.xlabel('Episode')
    plt.ylabel('Return')
    plt.show()
				
			

گام2: تعریف محیط (Define the SARSA Agent)

در مرحله بعد، کلاس SARSAAgent را تعریف می‌کنیم. این عامل با مجموعه‌ای از پارامترها اولیه‌سازی می‌شود که فرآیندهای یادگیری و تصمیم‌گیری آن را تعیین می‌کند. همچنین شامل متدهایی برای انتخاب اقدامات، به‌روزرسانی مقادیر Q و تنظیم نرخ کاوش (exploration rate) است.

				
					class SARSAAgent:
    def __init__(self, env, learning_rate, initial_epsilon, epsilon_decay, final_epsilon, discount_factor=0.95):
        self.env = env
        self.learning_rate = learning_rate
        self.discount_factor = discount_factor
        self.epsilon = initial_epsilon
        self.epsilon_decay = epsilon_decay
        self.final_epsilon = final_epsilon
        self.q_values = defaultdict(lambda: np.zeros(env.action_space.n))

    def get_action(self, obs) -> int:
        if np.random.rand() < self.epsilon:
            return self.env.action_space.sample()  # Explore
        else:
            return np.argmax(self.q_values[obs])  # Exploit

    def update(self, obs, action, reward, terminated, next_obs, next_action):
        if not terminated:
            td_target = reward + self.discount_factor * self.q_values[next_obs][next_action]
            td_error = td_target - self.q_values[obs][action]
            self.q_values[obs][action] += self.learning_rate * td_error

    def decay_epsilon(self):
        self.epsilon = max(self.final_epsilon, self.epsilon - self.epsilon_decay)
				
			

گام3: آموزش عامل (Training the Agent)

با تعریف عامل SARSA، به آموزش آن در چندین اپیزود می‌پردازیم. تابع آموزش بر روی هر اپیزود تکرار می‌شود و به عامل این امکان را می‌دهد که با محیط تعامل کند، از اقدامات یاد بگیرد و به تدریج سیاست خود را بهبود بخشد.

				
					def train_agent(agent, env, episodes, eval_interval=100):
    rewards = []
    for i in range(episodes):
        obs, _ = env.reset()
        terminated = truncated = False
        total_reward = 0

        while not terminated and not truncated:
            action = agent.get_action(obs)
            next_obs, reward, terminated, truncated, _ = env.step(action)
            next_action = agent.get_action(next_obs)
            agent.update(obs, action, reward, terminated, next_obs, next_action)
            obs = next_obs
            action = next_action
            total_reward += reward

        agent.decay_epsilon()
        rewards.append(total_reward)

        if i % eval_interval == 0 and i > 0:
            avg_return = np.mean(rewards[max(0, i - eval_interval):i])
            print(f"Episode {i} -> Average Return: {avg_return}")

    return rewards
				
			

گام4: پیشرفت تجسم (Visualization of Learning Progress)

پس از آموزش، تجسم پیشرفت یادگیری مفید است. ما از تابع plot_returns برای نمایش بازده‌ها در هر اپیزود استفاده می‌کنیم که بینش‌هایی در مورد اثربخشی رژیم آموزشی ما ارائه می‌دهد.

				
					env = gym.make('Taxi-v3', render_mode='ansi')
episodes = 20000
learning_rate = 0.5
initial_epsilon = 1
final_epsilon = 0
epsilon_decay = (final_epsilon - initial_epsilon) / (episodes / 2)
agent = SARSAAgent(env, learning_rate, initial_epsilon, epsilon_decay, final_epsilon)

returns = train_agent(agent, env, episodes)
plot_returns(returns)
				
			

گام5: اجرای عامل آموزش دیده (Running the Trained Agent)

در نهایت، برای مشاهده عملکرد عامل آموزش‌دیده‌مان، می‌توانیم آن را در محیط اجرا کنیم. در این مرحله، نرخ کاوش (exploration rate) را کاهش می‌دهیم زیرا عامل باید سیاست تقریباً بهینه‌ای را یاد گرفته باشد.

				
					def run_agent(agent, env):
    agent.epsilon = 0  # No need to keep exploring
    obs, _ = env.reset()
    env.render()
    terminated = truncated = False

    while not terminated and not truncated:
        action = agent.get_action(obs)
        next_obs, _, terminated, truncated, _ = env.step(action)
        print(env.render())  
				
			

خروجی:

Code output_SARSA

توضیح خروجی:

خروجی کد شامل دو بخش اصلی است:

  1. نمودار پیشرفت آموزش و بازده‌های اپیزود (Training Progress and Episode Returns Plot):
  • در طول آموزش، عملکرد عامل SARSA به‌صورت دوره‌ای ارزیابی می‌شود و میانگین بازده در هر eval_interval اپیزود چاپ می‌شود.
  • پس از آموزش، نموداری از بازده‌های اپیزود در طول زمان نمایش داده می‌شود که نشان می‌دهد عملکرد عامل چگونه با یادگیری از اپیزودهای بیشتر تغییر می‌کند.
  1. نمایش رفتار عامل (Agent’s Behavior Demonstration):
  • پس از آموزش، تابع run_agent رفتار عامل را در محیط ” Taxi-v3″ نشان می‌دهد. وضعیت محیط در هر مرحله در کنسول چاپ می‌شود و تصمیمات و حرکات عامل را نمایش می‌دهد.

نمودار بازده در برابر اپیزود (Returns vs Episode Plot): در پایان آموزش، تابع plot_returns نموداری ایجاد می‌کند که بازده کل برای هر اپیزود را نشان می‌دهد. محور x شماره اپیزود و محور y بازده (پاداش کل) آن اپیزود را نمایش می‌دهد. این نمودار به تجسم منحنی یادگیری عامل کمک می‌کند و روندهایی مانند بهبود، ثبات یا نوسانات در عملکرد را نشان می‌دهد.

نمایش خروجی شبکه (Demonstration of the Output Grid:):

  • سری نمودارها نشان می‌دهد که چگونه عامل در شبکه حرکت می‌کند، به‌طوری‌که هر مرحله نمایانگر یک حرکت یا چرخش است.
  • مسیر عامل با تغییرات حرکتی و جهت‌گیری آن تعریف می‌شود و هدف آن رسیدن به یک نقطه هدف (G) یا نقاط مهم دیگر (R و B) در شبکه است.
  • جهت‌گیری‌های خاص (شمال، شرق و غیره) برای درک استراتژی یا الگوریتم عامل در حرکت در شبکه بسیار حائز اهمیت هستند.

نتیجه‌گیری (Conclusion)

پیاده‌سازی یک عامل SARSA در محیط Taxi-v3 از Gymnasium یک رویکرد عملی برای درک الگوریتم‌های یادگیری تقویتی درون‌سیاستی ارائه می‌دهد. با راه‌اندازی محیط، تعریف عامل، آموزش و تجزیه و تحلیل پیشرفت آن، بینش‌های ارزشمندی در مورد چگونگی به‌روزرسانی سیاست‌های SARSA بر اساس اقدامات فعلی و نتایج آن‌ها به‌دست می‌آوریم.


ترتیبی که هوشینو برای خواندن مطالب یادگیری تقویتی به شما پیشنهاد می‌کند:

1.یادگیری تقویتی بخش اول

2.یادگیری تقویتی بخش دوم

3.یادگیری تقویتی بخش سوم

4.زنجیره مارکوف بخش اول

5.زنجیره مارکوف بخش دوم

6.زنجیره مارکوف بخش سوم

7.زنجیره مارکوف بخش چهارم

8.الگوریتم Q-Learning بخش اول

9.الگوریتم Q-Learning بخش دوم

10.الگوریتم Q-Learning بخش سوم

11.الگوریتم SARSA-بخش اول

12.الگوریتم SARSA-بخش دوم

13. تفاوت بین Q-Learning و SARSA

الگوریتم (SARSA)-بخش اول
مقدمه

الگوریتم (State-Action-Reward-State-Action) SARSA در یادگیری تقویتی بر اساس سیاست، به عامل (Agent) کمک می‌کند تا بهینه عمل کند. این الگوریتم مقادیر ارزش (Q-Values) را برای هر ترکیب حالت-عمل به‌روزرسانی می‌کند. SARSA بر اساس حالت فعلی، عمل فعلی، پاداش دریافتی، حالت بعدی و عمل بعدی که از سیاست فعلی انتخاب شده، عمل می‌کند و با این روش، سیاست خود را به‌روزرسانی می‌کند.

یادگیری SARSA 

الگوریتم SARSA نوعی روش یادگیری تفاوت زمانی (TD) است که ایده‌های برنامه‌ریزی پویا و روش‌های مونت‌کارلو را با هم ترکیب می‌کند. ویژگی اصلی SARSA این است که مقادیر Q را بر اساس اقدامات موجود در سیاست فعلی یاد می‌گیرد، یعنی عامل (agent) در هر مرحله هم از سیاست فعلی پیروی می‌کند و هم مقادیر Q را براساس آن به‌روزرسانی می‌کند.

مفاهیم کلیدی در SARSA 

1.وضعیت (State) (s): وضعیتی است که عامل (Agent) در آن قرار دارد.

2.اقدام (Action) (a): عملی است که عامل (Agent) در حالت فعلی خود انجام می‌دهد

3.پاداش (Reward) (r): پاداشی است که عامل بعد از انجام یک عمل در یک حالت خاص دریافت می‌کند.

4.وضعیت بعدی (Next State) (s’): وضعیت جدیدی که عامل (Agent) پس از انجام یک عمل به آن منتقل می‌شود.

5.اقدام بعدی (Next Action) (a’): عملی که عامل (Agent) در حالت بعدی بر اساس سیاست (Policy) خود انجام می‌دهد.

6.تابع ارزش (Q-Value): نشان‌دهنده ارزش یک جفت حالت-عمل است و به عامل کمک می‌کند تصمیم بگیرد کدام عمل در هر حالت سودمندتر است.

نحوه کارکرد الگوریتم SARSA

SARSA به صورت گام‌به‌گام به این صورت عمل می‌کند:

1.انتخاب عمل (Action): عامل یک حالت اولیه (s) را انتخاب می‌کند و بر اساس یک سیاست (معمولاً

ϵ-greedy) عمل (a) انجام می‌دهد.

2.گرفتن پاداش و انتقال به حالت جدید: عامل با انجام این عمل، به حالت جدید (s′) می‌رود و پاداش (r) دریافت می‌کند.

3.انتخاب عمل بعدی: عامل در حالت جدید (s′) بر اساس همان سیاست یک عمل جدید (a′) را انتخاب می‌کند.

4.به‌روزرسانی Q-Value: سپس عامل از معادله زیر برای به‌روزرسانی Q-Value استفاده می‌کند:

Q-value update equation

که درآن:

s: وضعیت فعلی عامل (Agent) است.

a: عملکرد فعلی که بر اساس یک سیاست خاص انتخاب شده است.

s’: حالت بعدی که عامل (Agent) به آن منتقل می‌شود.

a’: بهترین اقدام بعدی که باید با استفاده از تخمین فعلی مقدار Q انتخاب شود، به این معنی که اقدام با حداکثر مقدار Q در حالت بعدی انتخاب شود.

r: پاداش فعلی که از محیط به عنوان پاسخ به عمل کنونی مشاهده می‌شود.

α: نرخ یادگیری (Learning Rate) که مشخص می‌کند عامل تا چه حد تغییرات را در Q-Value لحاظ کند. و مقدار آن بین 0 و 1 قرار دارد.

γ: ضریب تنزیل (Discount Factor) که نشان می‌دهد اهمیت پاداش‌های آینده به چه اندازه است که معمولا بین 0 و 1 است.

Q(s,a): مقدار Q فعلی برای حالت s و عمل a.

Q(s′,a′): مقدار Q برای حالت بعدی s′ و عمل بعدی a′ است که توسط سیاست فعلی انتخاب می‌شود.

این فرمول مقدار Q را براساس پاداش دریافت‌شده و مقدار Q آینده به‌روزرسانی می‌کند.

در واقع، در  SARSA، سیاست جاری تصمیم می‌گیرد که در حالت بعدی کدام عمل a′  انجام شود و سپس مقدار Q(s,a)  بر این اساس به‌روزرسانی می‌شود. این وابستگی به سیاست جاری همان چیزی است که SARSA را به یک الگوریتم یادگیری روی سیاست (on-policy) تبدیل می‌کند.

5.تکرار مراحل: این فرآیند تا زمانی که عامل به حالت پایانی برسد، تکرار می‌شود.

در SARSA، برخلاف برخی الگوریتم‌های دیگر مانند Q-Learning که بر اساس بهترین عمل ممکن عمل می‌کند، به خاطر استفاده از همان سیاست (ϵ-greedy) که عامل عمل‌ها را انتخاب می‌کند، الگوریتم ارزش حالت و عمل آینده‌ای که احتمالاً عامل برمی‌گزیند را لحاظ می‌کند.

 

در تصویر زیر، شخصیتی به نام “عامل” (Agent) در دنباله‌ای از حالات (S و S’) اقداماتی (A و A’) انجام می‌دهد و پاداش‌هایی (R) دریافت می‌کند. فلش‌ها انتقال بین حالت‌ها، اقدامات و پاداش‌ها را نشان می‌دهند و مفهوم به‌روزرسانی مقادیر Q (Q-values) در هر مرحله را به تصویر می‌کشند.

Performance of the SARSA algorithm
تصویر1-نحوه کارکردالگوریتم SARSA
مزایا SARSA

1.طبیعت الگوریتم‌های On-Policy:

SARSA یک الگوریتم on-policy است، به این معنی که بر اساس سیاستی که خود در حال دنبال کردن آن است، ارزیابی می‌کند. این ویژگی باعث می‌شود SARSA به سیاست فعلی حساس باشد و در محیط‌هایی که نیاز به کاهش ریسک دارند، عملکرد بهتری داشته باشد.

2.ایمنی بیشتر در محیط‌های تصادفی:

از آن‌جایی که SARSA به‌روزرسانی‌های خود را بر اساس اقداماتی که واقعاً انجام می‌دهد و جوایز واقعی که دریافت می‌کند، انجام می‌دهد، معمولاً در مقایسه با الگوریتم‌های off-policy مانند Q-learning محتاط‌تر عمل می‌کند. در محیط‌هایی که رفتارها تصادفی و غیرقابل پیش‌بینی هستند، این احتیاط باعث می‌شود که SARSA گزینه بهتری باشد.

3.فرآیند یادگیری ساده‌تر و روان‌تر:

از آن‌جایی که SARSA به‌طور میانگین بر اساس اقداماتی که طبق سیاست فعلی انجام می‌دهد به‌روزرسانی می‌کند، فرآیند یادگیری معمولاً روان‌تر پیش می‌رود. این ویژگی به‌ویژه در محیط‌هایی که جوایز نوسانات زیادی دارند، مفید است.

4.تعادل میان کاوش و بهره‌برداری:

چون SARSA از اقداماتی که واقعاً انجام می‌دهد (که ممکن است شامل اقدامات کاوشی نیز باشد) استفاده می‌کند، به‌طور ذاتی بین کاوش (exploration) و بهره‌برداری (exploitation) تعادل برقرار می‌سازد. این ویژگی باعث می‌شود که SARSA برای محیط‌هایی که نیاز به آزمایش استراتژی‌های مختلف دارند، بسیار مناسب باشد.

معایب SARSA

1.همگرایی کندتر در محیط‌های قطعی:

از آن‌جایی که SARSA به‌روزرسانی‌های خود را بر اساس سیاست فعلی (که ممکن است شامل اقدامات کاوشی باشد) انجام می‌دهد، معمولاً در محیط‌های قطعی که نیاز به همگرایی سریع به سیاست بهینه دارند، نسبت به الگوریتم‌های off-policy مانند Q-learning کندتر عمل می‌کند.

2.حساسیت به سیاست کاوش:

عملکرد SARSA به شدت به استراتژی کاوش (مانند ε-greedy) وابسته است. اگر نرخ کاوش به‌درستی انتخاب نشود، ممکن است سیاست بهینه پیدا نشود و برای رسیدن به عملکرد مطلوب نیاز به تنظیمات بیشتری باشد.

3.محدودیت‌ الگوریتم‌های On-Policy:

به‌عنوان یک الگوریتم on-policy، SARSA تنها از اقداماتی که واقعاً انجام می‌دهد یاد می‌گیرد. اگر سیاستی که دنبال می‌کند بهینه نباشد، یادگیری SARSA نیز بهینه نخواهد بود. این ویژگی اجازه نمی‌دهد که SARSA از استراتژی‌های off-policy بهره‌برداری کند، استراتژی‌هایی که می‌توانند بر اساس بهترین اقدام ممکن به‌روزرسانی شوند.

4.سیاست‌های محتاطانه‌تر:

روش محتاطانه SARSA در به‌روزرسانی سیاست‌ها (با استفاده از اقدامات واقعی به جای اقدامات بهینه) می‌تواند منجر به سیاست‌هایی شود که محتاطانه‌تر عمل می‌کنند و در بلندمدت نتایج بهینه‌ای به همراه نداشته باشند.

5.حساسیت بالا به تنظیمات در محیط‌های پیچیده:

اگرچه SARSA نسبتاً ساده است و نیاز به تنظیمات کمتری دارد، در محیط‌های پیچیده و پرچالش، تنظیمات پارامترهای یادگیری، نرخ تنزیل و پارامترهای کاوش نیاز به دقت بیشتری دارند تا از ناپایداری یا یادگیری کند جلوگیری شود.

کاربردهای SARSA

SARSA به‌ویژه در سناریوهایی که نیاز به اتخاذ تصمیمات محتاطانه و پرهیز از ریسک‌های زیاد وجود دارد، مفید است. برخی از کاربردهای رایج SARSA عبارتند از:

1.یافتن مسیر و ناوبری در محیط‌های پیچیده:

SARSA در وظایف ناوبری، مانند یافتن مسیر در یک محیط پیچیده یا متغیر، جایی که ممکن است موانع داینامیک وجود داشته باشد، کاربرد دارد. در این‌گونه محیط‌ها، روش محتاطانه SARSA کمک می‌کند تا تصمیمات امن‌تری اتخاذ شود و از اشتباهات پرهزینه جلوگیری گردد.

Robot control management in SARSA
تصویر1-مدیریت کنترل ربات‌ها

2.مدیریت کنترل ربات‌ها:

در کنترل ربات‌ها، به‌ویژه در محیط‌هایی که با خطرات واقعی مواجه هستند، روش محتاطانه SARSA بسیار ارزشمند است. ربات‌ها ممکن است در محیط‌های دنیای واقعی که ریسک بالاست، نیاز به استفاده از مسیرها و اقدامات امن‌تری داشته باشند.

 

 

 

finance in sarsa
تصویر2-کاربردهای مالی

3.کاربردهای مالی:

SARSA در زمینه‌های مالی، مانند معاملات، می‌تواند برای کاهش ریسک استفاده شود. در این محیط‌ها، هدف این است که در عین جستجوی سود، از ریسک‌های غیرضروری اجتناب گردد.

 

 

4.بازی‌های با المان‌های تصادفی و غیرقابل پیش‌بینی

SARSA معمولاً در بازی‌هایی که نتایج تصادفی دارند (مانند بازی‌هایی که در آن‌ها تاس انداخته می‌شود یا رویدادهای تصادفی در جریان هستند) استفاده می‌شود. در این‌گونه محیط‌ها، حساسیت SARSA به سیاست کاوش می‌تواند آن را نسبت به دیگر روش‌ها، مانند Q-learning، بهتر کند.

5.سیستم‌های مدیریت انرژی:

در سیستم‌های مدیریت انرژی، مانند شبکه‌های هوشمند یا سیستم‌های ذخیره‌سازی باتری، SARSA می‌تواند به مدیریت توزیع انرژی کمک کرده و از مصرف منابع اضافی یا ناکافی جلوگیری کند.

6.برنامه‌ریزی درمانی در حوزه مراقبت‌های بهداشتی:

در حوزه مراقبت‌های بهداشتی، به‌ویژه در برنامه‌ریزی درمانی که نیاز به تعادل بین اثربخشی و عوارض جانبی داروها دارد، SARSA می‌تواند به ایجاد استراتژی‌هایی کمک کند که از اقدامات افراطی جلوگیری نمایند.


ترتیبی که هوشینو برای خواندن مطالب یادگیری تقویتی به شما پیشنهاد می‌کند:

 

1.یادگیری تقویتی بخش اول

2.یادگیری تقویتی بخش دوم

3.یادگیری تقویتی بخش سوم

4.زنجیره مارکوف بخش اول

5.زنجیره مارکوف بخش دوم

6.زنجیره مارکوف بخش سوم

7.زنجیره مارکوف بخش چهارم

8.الگوریتم Q-Learning بخش اول

9.الگوریتم Q-Learning بخش دوم

10.الگوریتم Q-Learning بخش سوم

11.الگوریتم SARSA-بخش اول

12.الگوریتم SARSA-بخش دوم

13. تفاوت بین Q-Learning و SARSA