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

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

ساخت محیط با پایتون
برای ساخت عامل یادگیری تقویتی، از بسته OpenAI Gym استفاده خواهیم کرد که با اجرای دستور زیر قابل نصب است −
pip install gym
محیطهای مختلفی در OpenAI Gym وجود دارند که میتوان از آنها برای اهداف گوناگون استفاده کرد. برخی از آنها عبارتاند از Cartpole-v0، Hopper-v1 و MsPacman-v0. این محیطها به موتورهای متفاوتی نیاز دارند.
کد زیر نمونهای از کد پایتون برای محیط cartpole-v0 را نشان میدهد −
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample())

میتوانید محیطهای دیگر را نیز به روشی مشابه ایجاد کنید.
ساخت عامل یادگیرنده با پایتون
برای ساخت عامل یادگیری تقویتی، همانطور که در ادامه نشان داده شده است، از بسته OpenAI Gym استفاده خواهیم کرد −
import gym
env = gym.make('CartPole-v0')
for _ in range(20):
observation = env.reset()
for i in range(100):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(i+1))
break

مشاهده کنید که میله متصل به ارابه میتواند تعادل خود را حفظ کند.
پیشرفت مطالعه: وضعیت خواندهشدن این درس فقط در همین مرورگر ذخیره میشود؛ بدون نیاز به حساب کاربری.