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

زنجیره مارکوف بخش دوم
روش‌های حل زنجیره مارکوف

روش‌های حل زنجیره مارکوف عبارتند از:

1.حل تحلیلی (Analytical Solution)

2.روش ماتریس انتقال (Transition Matrix Method)

3.شبیه‌سازی مونت کارلو (Monte Carlo Simulation)

4.روش مقدار ویژه (Eigenvalue Method)

5.روش گاوس-سایدل (Gauss-Seidel Method)

6.روش تکراری (Iterative Methods)

7.الگوریتم ول‌من (Value Iteration Algorithm)

8. روش برنامه ریزی پویا (Dynamic Programming – DP)

9.روش بلمن-فورد(Bellman-Ford Algorithm)

10.ارزش گذاری(Value Iteration)

11.سیاست گذاری تکراری (Policy Iteration)

12.الگوریتم سیاست ثابت (Policy Iteration Algorithm)

13.روش شبیه سازی و بهینه سازی (Simulation and Optimization)

14.روش های یادگیری تقویتی (Reinforcement Learning Methods)

15.روش زنجیره مارکوف پنهان (Hidden Markov Models – HMM)

1.حل تحلیلی(Analytical Solution)

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

Example_Analytical_Solution
تصویر1-ماتریس انتقال وضعیت آب و هوا

 

 

مثال:

فرض کنید ماتریس انتقال وضعیت آب و هوا به صورت روبرو است:

 

 

 

 

با استفاده از حل تحلیلی، می‌توانیم محاسبه کنیم که در بلندمدت چه درصد از روزها آفتابی، ابری، یا بارانی خواهد بود.

2.روش ماتریس انتقال (Transition Matrix Method)

این روش با استفاده از ماتریس انتقال احتمالات بین حالت‌ها حل می‌شود. هر ورودی ماتریس نشان می‌دهد که با چه احتمالی از یک حالت به حالت دیگر تغییر می‌کنیم.

به عنوان مثال، فرض کنید امروز آفتابی است. با استفاده از ماتریس انتقال مذکور، می‌توانیم بفهمیم فردا چه احتمالاتی برای وضعیت هوا وجود دارد. با تکرار این فرآیند، می‌توانیم وضعیت چند روز آینده را پیش‌بینی کنیم.

3.شبیه سازی مونت کارلو (Monte Carlo Simulation)

در این روش، ما رفتار زنجیره مارکوف را چندین بار شبیه‌سازی می‌کنیم تا الگوهای تکراری را مشاهده کنیم. این روش بیشتر برای مسائلی که محاسبات تحلیلی دشوار است، مورد استفاده قرار می‌گیرد.

به عنوان مثال، اگر بخواهیم بدانیم در طول ۱۰۰ روز وضعیت هوا چگونه خواهد بود، می‌توانیم چندین بار وضعیت‌ها را به‌صورت تصادفی شبیه‌سازی کنیم و ببینیم که مثلا، چه درصدی از روزها آفتابی، ابری یا بارانی بوده است.

4.روش مقدار ویژه (Eigenvalue Method)

در این روش، از مفهومی به نام مقادیر ویژه برای محاسبه حالت‌های پایدار یک زنجیره مارکوف استفاده می‌شود. این روش بیشتر در ریاضیات پیشرفته به کار می‌رود.

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

5.روش گاوس-سایدل (Gauss-Seidel Method)

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

به عنوان مثال، در محاسبات پیچیده، اگر بخواهیم به‌سرعت‌تر به پاسخ برسیم، این روش به ما کمک می‌کند تا وضعیت‌های آینده را پیش‌بینی کنیم.

6.روش تکراری (Iterative Methods)

در این روش، وضعیت‌های سیستم را به‌صورت تکراری محاسبه می‌کنیم و هر بار نتایج قبلی را به‌عنوان ورودی برای دفعه بعدی استفاده می‌کنیم تا در نهایت به یک جواب پایدار برسیم.

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

7.الگوریتم ول من (Value Iteration Algorithm)

این روش برای حل مسائل تصمیم‌گیری مارکوف (MDP) استفاده می‌شود. هدف این الگوریتم، یافتن بهترین سیاست (Policy) برای یک سیستم است که سود یا پاداش بلندمدت را بیشینه کند.

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

8.روش برنامه ریزی پویا (Dynamic Programming – DP)

این روش‌ها زمانی استفاده می‌شوند که مدل MDP و قوانین انتقال حالت‌ها مشخص باشند.

معادله بلمن (Bellman Equation)

معادله بلمن یکی از اصلی‌ترین روش‌های حل مسائل تصمیم‌گیری مارکوف (MDP) است. در این روش، هدف یافتن تابع ارزش (Value Function) برای هر حالت می‌باشد. این معادله یکی از پایه‌های یادگیری تقویتی (Reinforcement Learning) است و برای درک ارزش یک حالت در محیط استفاده می‌شود.

این تابع نشان می‌دهد که با شروع از یک حالت مشخص، چه ارزشی می‌توان از آن به دست آورد.

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

فرمول ساده آن برای هر حالت به شکل زیر است:

Bellman_Equation

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

حالا، شما می‌خواهید بدانید که ارزش رفتن به هر اتاق (یا همان حالت) چقدر است. ارزش یک اتاق (حالت) به دو چیز بستگی دارد:

1.پاداشی که در همان لحظه در آن اتاق دریافت می‌کنید R(s)

2.احتمال این که بعد از رفتن به آن اتاق، به اتاق‌های دیگری هم بروید و از آن‌ها هم پاداش بگیرید. (این همان بخشی است که داریم احتمال رسیدن به اتاق بعدی رو حساب می‌کنیم، که این را با P(s′,s,a) نشان می‌دهیم).

فرمول بلمن به شما می‌گوید که ارزش یک اتاق (یا همان حالت) برابر با جمع این دو چیز است:

1.پاداشی که همون لحظه دریافت میکنید R(s)

2.مجموع ارزش اتاق‌های بعدی که ممکن است به آن‌ها بروید، ضربدر احتمالی که به آنجا می‌روید.

اینکه جمع آن‌ها چقدر است، به مامی‌گوید که رفتن به آن اتاق (یا حالت) چقدر خوب است.

V(s) ارزش حالت فعلی است.

R(s,a, s′) پاداش دریافتی برای رفتن از حالت s به حالت s′ با اقدام a.

γ(گاما): ضریب تخفیف که اهمیت پاداش‌های آینده را مشخص می‌کند  . این عدد تعیین می‌کنه که چقدر به پاداش‌های آینده اهمیت دهیم. اگر γ زدیک ۰ باشه، یعنی فقط به پاداش‌های حال اهمیت دهیم؛ اگه نزدیک ۱ باشد، یعنی پاداش‌های آینده‌هم اهیمت دارند.

P(s′,s,a): احتمال رفتن به حالت s′ با انجام عمل a در حالت s

V(s′) ارزش حالت بعدی است.

این معادله را برای همه حالت‌ها حل می‌کنیم تا بهترین سیاست را پیدا کنیم.

مثال :

فرض کنید در هزارتو (Maze) هستید. وقتی در اتاق (حالت s) ایستادید :

  • می‌دانید که ۵ سکه در آنجا روی زمین است (این R(s) می‌شود)
  • اما از آن اتاق ممکن است به اتاق‌های دیگری بروید که در آن‌ها هم سکه وجود دارد. در این بخش، باید ببینید احتمال رسیدن به اتاق‌های دیگر چقدر است. (این همون P(s′,s,a) می‌شود) و اگر به آن اتاق‌ها برسید، چند سکه دیگر دریافت می‌کنید (این V(s′) است.)

کاربرد معادله بلمن کجاست؟

این معادله در جاهایی استفاده می‌شود که بخواهیم تصمیم بگیریم چگونه بهترین کار (action) را در هر موقعیت انجام دهیم تا به بهترین نتیجه برسیم. به عنوان مثال:

Example_Computer_games_Robotics-Markov_Chain
تصویر2-بازی‌های کامپیوتری
  • بازی‌های کامپیوتری: برای برنامه‌ریزی اینکه یک کاراکتر چگونه از موانع عبور کند و امتیاز بیشتری دریافت کند. (هوش مصنوعی در بازی‌ها می‌تواند با استفاده از این معادله تصمیم بگیرد که بهترین حرکت در هر لحظه چیست.)

 

 

 

Robotics-Robotics-Markov_Chain
تصویر3-رباتیک
  • رباتیک: برای اینکه ربات‌ها بتوانند راه‌هایی را انتخاب کنند که سریع‌تر به مقصد برسند و انرژی کمتری مصرف کنند. (همچنین در طراحی ربات‌ها برای یادگیری راه‌های بهینه، مانند پیدا کردن مسیر بهینه در یک محیط پیچیده.)

 

 

 

Finance-amico_Robotics-Markov_Chain
تصویر4-اقتصاد و مالی

اقتصاد و مالی: برای تصمیم‌گیری‌های سرمایه‌گذاری که کدام سهام یا دارایی بیشترین سود را در طول زمان دارد.

 

 

 

 

Flying around the world-Robotics-Markov_Chain
تصویر5-کنترل هوشمند
  • کنترل هوشمند: در سیستم‌های کنترل، مانند هواپیماها یا خودروهای خودران، معادله بلمن کمک می‌کند تا سیستم بهترین تصمیم‌ها را بگیرد و بهینه‌ترین مسیرها را انتخاب کند.

 

 

چرا معادله بلمن خوب است؟

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

کاربرد در الگوریتم‌ها :

معادله بلمن در چندین الگوریتم و روش‌های مختلف یادگیری تقویتی (Reinforcement Learning) به کار می‌رود. این معادله پایه‌ای برای محاسبه ارزش حالت‌ها (state values) و تصمیم‌گیری در محیط‌های مختلف است.

1.برنامه ریزی پویا (Dynamic Programming)

  • الگوریتم Policy Iteration :

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

1.Evaluation: ارزش هر حالت (value) با استفاده از معادله بلمن محاسبه می‌شود.

2.Improvement: با استفاده از این ارزش‌ها، سیاست (policy) بهبود داده می‌شود تا انتخاب عمل‌هایی (actions) که به حالت‌های بهتر منجر می‌شوند، تقویت شوند.

  • از معادله بلمن استفاده می‌شود تا بفهمیم در هر مرحله کدام حالت بهتر است و چگونه باید سیاست را تغییر دهیم.
  • الگوریتم Value Iteration:

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

معادله بلمن در اینجا برای به‌روزرسانی مکرر ارزش‌ها استفاده می‌شود تا به مجموعه‌ای از ارزش‌های بهینه برسیم.

2.Q-Learning:

معادله بلمن Q

در Q-Learning، به جای اینکه فقط ارزش حالت‌ها را بذانیم ، می‌خواهیم بدانیم هر عمل (action) در هر حالت چقدر خوب است. در اینجا به جای ارزش حالت، ارزش Q  (ا Q-value) داریم که نشان می‌دهد هر حالت و عمل چقدر بهینه است.

فرمول Q-Learning هم از معادله بلمن مشتق شده و به شکل زیر است  :

Q-Learning از معادله بلمن استفاده می‌کند تا با به‌روزرسانی Q-value‌ها بفهمیم کدام عمل بهترین نتیجه را به همراه دارد.

3.SARSA (State-Action-Reward-State-Action):

معادله بلمن برای به‌روزرسانی Q-value :

SARSA هم مثل Q-Learning کار می‌کند ولی به جای اینکه از بیشترین Q-value استفاده کند، از سیاستی که همان لحظه در اختیار دارد پیروی می‌کند ، استفاده می‌کند. معادله SARSA مشابه Q-Learning است اما با استفاده از معادله بلمن به صورت متفاوتی به‌روزرسانی می‌شود.

4.DQN (Deep Q-Networks):

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

چرا از معادله بلمن استفاده می‌کنند؟

1.مدل‌سازی تصمیم‌گیری بهینه: معادله بلمن به ما کمک می‌کند تا بدانیم چه تصمیمی در هر حالت از یک محیط بهتر است. این موضوع توی خیلی از مسائل کاربرد دارد، مثل بازی‌های کامپیوتری، رباتیک و حتی تصمیم‌گیری‌های اقتصادی.

2.رویکرد بازگشتی (Recursive) : معادله بلمن به شکل بازگشتی کار می‌کند و این باعث می‌شود به راحتی ارزش حالت‌ها را در طول زمان و با تکرار به‌روزرسانی کنیم. این تکرار باعث می‌شود که ارزش بهینه رو پیدا کنیم.

3.فاکتور کردن پاداش‌های آینده: یکی از ویژگی‌های مهم این معادله، استفاده از فاکتور تخفیف (γ) برای محاسبه پاداش‌های آینده است. این یعنی می‌توانیم تصمیمات حال را نه فقط بر اساس پاداش لحظه‌ای بلکه با در نظر گرفتن پاداش‌های آینده بگیریم.

در نهایت، معادله بلمن کمک می‌کند که در مسائل پیچیده، بهترین و بهینه‌ترین تصمیم رو بگیریم.

9.روش بلمن-فورد(Bellman-Ford Algorithm)

این روش بیشتر برای مسائل گراف‌ها استفاده می‌شود و کمک می‌کند تا کوتاه‌ترین مسیر یا کمترین هزینه را در گراف‌هایی که دارای وزن‌های منفی هم هستند پیدا کنیم.

مثال:

فرض کنید در یک شبکه ارتباطی، می‌خواهید کمترین هزینه انتقال داده را پیدا کنید. این الگوریتم به شما کمک می‌کند.

10.ارزش گذاری(Value Iteration)

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

مراحل کار:

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

مثال:

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

11.سیاست گذاری تکراری (Policy Iteration)

در این روش به‌جای تمرکز بر ارزش حالت‌ها، سیاست (Policy) را بهبود می‌دهیم. سیاست یعنی “برای هر حالت چه عملی انجام دهیم؟”. این روش شامل دو مرحله است:

1.ارزیابی سیاست: ابتدا ارزش حالات را با سیاست فعلی محاسبه می‌کنیم.

2.بهبود سیاست: سپس سیاست را طوری تغییر می‌دهیم که پاداش بهتری بگیریم.

این فرآیند تکرار می‌شود تا به یک سیاست بهینه برسیم.

مثال:

در بازی‌ها، سیاست شما می‌تواند این باشد که مثلاً همیشه به جلو بروید. سپس بررسی می‌کنید که این سیاست چقدر خوب است و با تغییر سیاست به “گاهی به جلو و گاهی به عقب بروید”، پاداش بهتری بگیرید.

12.الگوریتم سیاست ثابت (Policy Iteration Algorithm)

این روش مشابه الگوریتم ول‌من است، با این تفاوت که ابتدا یک سیاست اولیه را انتخاب می‌کنیم و سپس آن را تکرار می‌کنیم تا به بهترین سیاست برسیم. این روش برای حل MDP استفاده می‌شود.

مثال:در یک سیستم اتوماتیک، می‌خواهید بدانید در هر وضعیت چه تصمیمی بگیرید تا بیشترین سود را کسب کنید. این الگوریتم کمک می‌کند سیاست‌های مختلف را بررسی و بهینه کنید.

13.روش شبیه سازی و بهینه سازی (Simulation and Optimization)

این روش با شبیه‌سازی وضعیت‌های مختلف سیستم و پیدا کردن بهترین حالت ممکن، بهینه‌سازی می‌کند. این روش معمولاً برای مسائل پیچیده‌ای که تحلیل دقیق آن‌ها سخت است استفاده می‌شود.

مثال:

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

14.روش های یادگیری تقویتی (Reinforcement Learning Methods)

در این روش‌ها، یک عامل (Agent) با تعامل با محیط یاد می‌گیرد که با انجام کارهای مختلف، بیشترین پاداش را کسب کند. این روش برای مسائل تصمیم‌گیری و مارکوف استفاده می‌شود.

مثال:

یک ربات را در نظر بگیرید که در حال یادگیری است که چگونه از یک مسیر پر از موانع عبور کند. ربات با آزمون و خطا یاد می‌گیرد که بهترین تصمیم‌ها چیست.

15.روش زنجیره مارکوف پنهان (Hidden Markov Models – HMM)

این روش برای مسائلی استفاده می‌شود که حالت واقعی سیستم قابل مشاهده نیست و فقط اطلاعات محدودی از وضعیت داریم. با HMM می‌توانیم پیش‌بینی کنیم که سیستم در چه حالتی است.

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

 

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

 


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

 

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

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

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

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

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

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

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

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

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

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

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

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

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