پیاده سازی الگوریتم Q-Learning در پایتون
مرحله 1: تعریف محیط (Define the Environment)
پارامترهای محیط را تنظیم کنید، از جمله تعداد حالات و اقدامات، Q-table را مقدار دهی اولیه کنید. در این دنیای شبکهای، هر حالت نمایانگر یک موقعیت است و اقدامات عامل را در این محیط جابجا میکند.
import numpy as np
# Define the environment
n_states = 16
n_actions = 4
goal_state = 15
# Initialize Q-table with zeros
Q_table = np.zeros((n_states, n_actions))
مرحله 2: تنظیم هایپرپارامترها (Set Hyperparameters)
پارامترهای الگوریتم Q-Learning را تعریف کنید، از جمله نرخ یادگیری، عامل تخفیف، احتمال کاوش، و تعداد دورههای آموزشی.
# Define parameters
learning_rate = 0.8
discount_factor = 0.95
exploration_prob = 0.2
epochs = 1000
مرحله 3: پیادهسازی الگوریتم Q-Learning (Implement the Q-Learning Algorithm)
الگوریتم Q-Learning را در چندین دوره آموزشی اجرا کنید. هر دوره شامل انتخاب اقدامات بر اساس استراتژی ϵ-greedy، بهروزرسانی مقادیر Q بر اساس پاداشهای دریافتی، و انتقال به حالت بعدی است.
# Q-learning algorithm
for epoch in range(epochs):
current_state = np.random.randint(0, n_states)
while current_state != goal_state:
if np.random.rand() < exploration_prob:
action = np.random.randint(0, n_actions)
else:
action = np.argmax(Q_table[current_state])
next_state = (current_state + 1) % n_states
reward = 1 if next_state == goal_state else 0
Q_table[current_state, action] += learning_rate * \
(reward + discount_factor *
np.max(Q_table[next_state]) - Q_table[current_state, action])
current_state = next_state
مرحله 4: خروجی Q-table (Output the Learned Q-Table)
پس از آموزش، Q-table را چاپ کنید تا مقادیر Q یادگرفتهشده را بررسی کنید که نمایانگر پاداشهای مورد انتظار برای انجام اقدامات خاص در هر حالت هستند.
print("Learned Q-table:")
print(Q_table)
مرحله5: خرجی کد
Learned Q-table:
[[0.48767498 0.48751892 0.46816798 0. ]
[0.51334208 0.49211897 0.51330921 0.51333551]
[0.54036009 0.54035317 0.54036003 0.5403598 ]
[0.56880004 0.56880008 0.56880003 0.56880009]
[0.59873694 0.59873694 0.59873693 0.59873694]
[0.63024941 0.63024941 0.63024941 0.63024941]
[0.66342043 0.66342043 0.66342043 0.66342043]
[0.6983373 0.6983373 0.6983373 0.6983373 ]
[0.73509189 0.73509189 0.73509189 0.73509189]
[0.77378094 0.77378094 0.77378094 0.77378094]
[0.81450625 0.81450625 0.81450625 0.81450625]
[0.857375 0.857375 0.857375 0.857375 ]
[0.9025 0.9025 0.9025 0.9025 ]
[0.95 0.95 0.95 0.95 ]
[1. 1. 1. 1. ]
[0. 0. 0. 0. ]]
الگوریتم Q-Learning شامل آموزش تکراری است که در آن عامل محیط را کاوش کرده و Q-table خود را بهروزرسانی میکند. این فرایند از یک حالت تصادفی شروع میشود، اقدامات را از طریق استراتژی ϵ-greedy انتخاب میکند و حرکات را شبیهسازی میکند. یک تابع پاداش بهازای رسیدن به حالت هدف، مقدار ۱ را ارائه میدهد. مقادیر Q با استفاده از قاعده Q-Learning بهروزرسانی میشوند و پاداشهای دریافتی و مورد انتظار را ترکیب میکنند. این فرایند ادامه مییابد تا زمانی که عامل استراتژیهای بهینه را یاد بگیرد. Q-Learning نهایی نمایانگر مقادیر حالت-عمل بهدستآمده پس از آموزش است.
ترتیبی که هوشینو برای خواندن مطالب یادگیری تقویتی به شما پیشنهاد میکند:
10.الگوریتم Q-Learning بخش سوم