کرج، انتهای ۴۵ متری گلشهر، جنب پمپ بنزین، خیابان حاتمی، پلاک ۳۵
پشتیبانی آکادمی 09015733293

یادگیری تقویتی (Reinforcement Learning) با پایتون: مبانی و مثال ساده

آموزش هوش مصنوعی در کرج

یادگیری تقویتی (Reinforcement Learning) با پایتون: مبانی و مثال ساده 🤖🧠

اگر هوش مصنوعی را به عنوان یک کودک در نظر بگیریم، یادگیری تقویتی (Reinforcement Learning – RL) شبیه به نحوه یادگیری آن کودک از طریق آزمون و خطا است. برخلاف یادگیری تحت نظارت (Supervised) که در آن داده‌ها از قبل برچسب‌گذاری شده‌اند، در RL عامل (Agent) در یک محیط (Environment) قرار می‌گیرد و با انجام اقدامات مختلف، پاداش (Reward) یا جریمه (Punishment) دریافت می‌کند. هدف عامل این است که سیاست (Policy) خود را طوری تنظیم کند که در طول زمان، بیشترین پاداش را به دست آورد. این شاخه از هوش مصنوعی، قلب تپنده رباتیک، بازی‌های ویدیویی (مانند AlphaGo) و سیستم‌های معاملاتی خودکار است و پایتون زبان پیش‌فرض برای پیاده‌سازی آن است.


مفاهیم اصلی در یادگیری تقویتی 🧱

RL بر اساس چهار عنصر اصلی بنا شده است که درک آن‌ها برای شروع کدنویسی ضروری است:

  • عامل (Agent): موجودیتی که تصمیم می‌گیرد و عمل می‌کند (مثلاً ربات، یا الگوریتم کنترل).
  • محیط (Environment): دنیایی که عامل در آن زندگی می‌کند و به اقدامات عامل واکنش نشان می‌دهد (مثلاً صفحه بازی شطرنج، یا بازار بورس).
  • حالت (State): وضعیت فعلی محیط (مثلاً موقعیت بازیکن در بازی).
  • اقدام (Action): حرکتی که عامل در یک حالت خاص انجام می‌دهد (مثلاً حرکت به راست، یا خرید سهام).
  • پاداش (Reward): بازخوردی که محیط پس از هر اقدام به عامل می‌دهد (مثلاً گرفتن امتیاز: +۱، یا باختن: -۱۰). هدف عامل، جمع‌آوری بیشترین پاداش کل در بلندمدت است.
  • سیاست (Policy): مغز عامل. این سیاست، نگاشتی بین حالت‌های مشاهده شده و اقداماتی است که باید در آن حالت‌ها انجام شود (مثلاً اگر در حالت A هستی، همیشه اقدام B را انجام بده).

الگوریتم Q-Learning: جدول جادویی 📊

یکی از ساده‌ترین و بنیادی‌ترین الگوریتم‌های RL برای شروع، Q-Learning است. این الگوریتم از یک جدول به نام Q-Table (جدول کیفیت) استفاده می‌کند.

نحوه کار Q-Table:

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


مثال ساده با پایتون: محیط Gym 🐍

برای اجرای پروژه‌های RL با پایتون، از کتابخانه استاندارد Gym (ساخته شده توسط OpenAI) استفاده می‌کنیم. Gym محیط‌هایی مانند بازی‌های ساده یا شبیه‌سازی‌های رباتیک را فراهم می‌کند. محیط مشهور **Taxi-v3** یک مثال عالی برای شروع Q-Learning است.

کد نمونه: پیاده‌سازی اولیه Q-Table در محیط Taxi-v3

import gym
import numpy as np

# 1. ایجاد محیط (Environment)
env = gym.make("Taxi-v3", render_mode="ansi")

# 2. تعریف اندازه جدول Q
state_size = env.observation_space.n # 500 حالت مختلف
action_size = env.action_space.n   # 6 اقدام مختلف
q_table = np.zeros((state_size, action_size))

# 3. پارامترهای یادگیری
learning_rate = 0.1  # نرخ یادگیری (آلفا)
discount_factor = 0.6 # فاکتور تخفیف (گاما)
episodes = 1000 # تعداد دفعات تکرار

# 4. حلقه آموزش (Simplified Training Loop)
for episode in range(episodes):
    state, info = env.reset()
    terminated = False
    truncated = False

    while not terminated and not truncated:
        # انتخاب اقدام (سیاست ساده: تصادفی)
        action = env.action_space.sample() 
        
        # اجرای اقدام
        new_state, reward, terminated, truncated, info = env.step(action)
        
        # بروزرسانی مقدار Q (فرمول Q-Learning)
        old_q_value = q_table[state, action]
        next_max = np.max(q_table[new_state, :])
        
        new_q_value = (1 - learning_rate) * old_q_value + learning_rate * (reward + discount_factor * next_max)
        q_table[state, action] = new_q_value

        state = new_state

print("Training finished.")
print("\nFinal Q-Table:\n", q_table)
        

در عمل، سیاست انتخاب اقدام (گام سوم در کد) باید به صورت Epsilon-Greedy باشد تا عامل بتواند بین کاوش (Exploration) و بهره‌برداری (Exploitation) تعادل برقرار کند.


آینده RL: Deep Q-Networks (DQN) 🌌

برای محیط‌های بسیار بزرگ (مانند بازی‌های ویدیویی یا رانندگی خودکار) که تعداد حالت‌ها به میلیون‌ها می‌رسد، نمی‌توان از Q-Table استفاده کرد. اینجا Deep Q-Networks (DQN) وارد عمل می‌شوند. DQNها از شبکه‌های عصبی (با استفاده از TensorFlow یا PyTorch در پایتون) برای تخمین زدن Q-Valueها به جای ذخیره آن‌ها در یک جدول استفاده می‌کنند. این همان روشی است که گوگل دیپ‌مایند برای شکست دادن قهرمانان بازی آتاری استفاده کرد.


جمع‌بندی ✅

یادگیری تقویتی یکی از جذاب‌ترین حوزه‌های هوش مصنوعی است که بر اساس فلسفه “نتیجه‌گرایی” بنا شده است. با استفاده از پایتون، کتابخانه Gym و درک مفاهیم Q-Learning و DQN، شما می‌توانید سیستم‌هایی بسازید که به طور مستقل و بهینه یاد می‌گیرند که چگونه وظایف پیچیده را انجام دهند. تسلط بر این حوزه، دروازه ورود به پروژه‌های نوآورانه در رباتیک، مالی و اتوماسیون است که به صورت عمیق در دوره‌های آموزش هوش مصنوعی با پایتون در آموزشگاه البرز تدریس می‌شود.

ماشین‌های یادگیرنده بسازید! 🚀

با یادگیری پایتون و RL، به توسعه‌دهنده سیستم‌های خودکار و تصمیم‌گیر تبدیل شوید و پروژه‌های پیشرفته هوش مصنوعی را رهبری کنید.

  • ✅ آموزش مفاهیم MDP و Q-Learning
  • ✅ کار عملی با کتابخانه Gym در پایتون
  • ✅ مقدمات Deep Q-Networks (DQN)

ثبت‌نام در دوره پایتون و هوش مصنوعی

Related Post