عامل هوشمند
عامل هوشمند ، در مبحث هوش مصنوعی به موجودی گفته می‌شود که در یک محیط، اطراف خود را شناخته و اعمالی را روی محیط انجام می‌دهد و کلیه اعمالی که انجام می‌دهد در جهت نیل به اهدافش می‌باشد. این سیستم‌ها امکان یادگیری دارند و سپس از دانش اکتسابی خود برای انجام اهداف خود استفاده می‌کنند. این کنشگرها ممکن است بسیار ساده یا پیچیده باشند. به‌طور مثال ماشین‌های کوکی که با برخورد به دیوار، راه خود را عوض می‌کنند یا یک ترموستات که با تغییر دما واکنش نشان می‌دهد نمونه‌هایی از کنشگرهای هوشمند هستند.
کنشگر هر چیزی است که می‌تواند محیطش را از طریق حسگرها درک کند و بر روی محیطش از طریق عمل‌کننده‌ها تأثیر گذارد. یک کنشگر انسانی دارای حس‌کننده‌هایی از قبیل چشم، گوش، لامسه و امثال آن می‌باشد؛ و می‌توان از دست، پا، صحبت کردن و اعمال ارادی به عنوان عمل‌کننده‌ها نام برد. ورودی یک کنشگر نرم‌افزاری می‌توانند چندین متغیر باشد که مقدار آن‌ها را کنشگر می‌خواند سپس بر اساس مکانیزم تصمیم‌گیری یک تصمیم اخذ می‌کند و عملگرهای آن می‌توانند دستورهای مقداردهی چند متغیر دیگر باشد. به عنوان مثال فرض کنید یک کنشگر قرار است متغیر x را بخواند و توان دوم آن را حساب کند و در y قرار دهد. این کنشگر x را می‌خوانند و سپس توان دوم آن را حساب می‌کند و در y قرار می‌دهد.
تعاریف متفاوتی از کنشگر یا عامل هوشمند ارائه شده‌است. بر اساس تعریفی از نیکولا کاسابو یک سیستم هوشمند مصنوعی لازم است که ویژگی‌های زیر را داشته باشد::
یک کنشگر چگونه باید بفهمد که بهترین عمل ممکن چیست؟ عمل درست عملی است که باعث شود کنشگر موفق‌ترین باشد. این امر ما را با مسئله تصمیم‌گیری در مورد چگونگی و زمان ارزیابی کردن موفقیت کنشگر روبرو می‌کند. اصطلاح میزان کارایی برای موفقیت کنشگر تعریف می‌کنیم. گفتنی است که میزان کارایی برای کنشگرهای مختلف متفاوت می‌باشد. نکته خیلی مهم این است که میزان کارایی یک کنشگر باید بر اساس محیط تعریف شود. به عنوان مثال فرض کنیم که یک کنشگر کارش جمع‌آوری آشغال‌ها از یک اتاق و دفع آن‌ها باشد، اگر کنشگر میزان کارایی اش بر حسب اشغال جمع شده تعریف شود آنگاه کنشگر می‌تواند آشغال‌ها را جمع کند و سپس دوباره در اتاق بریزد تا بهترین کارایی را کسب کند. اما اگر میزان کارایی بر اساس محیط تعریف شود آنگاه کنشگر یک بار کار تمیز کردن را انجام می‌دهد. پس یک کنشگر محیطش را حس می‌کند و سپس بر اساس آن تصمیم می‌گیرد. این مستلزم آن است که با کنشگر خودمختار و انواع محیط‌ها آشنا شویم.
به کنشگری خودمختار می‌گوییم که تصمیم‌گیری اش بر اساس ادراکاتش باشد نه بر اساس دانش تزریق شده به آن. در واقع هر چه دانش قبلی یک کنشگر بیشتر باشد از خودمختاری آن کاهش می‌یابد و هر چه دانش قبلی کمتر باشد و مکانیزم یادگیری کنشگر قوی تر باشد، آن کنشگر خودمختارتر است.
اگر کنشگر به کل محیط دسترسی داشته باشد و بتواند آن را حس کند می‌گوییم محیط قابل مشاهده است، در غیر این صورت آن را غیرقابل مشاهده یا تا حدودی قابل مشاهده می‌نامیم. مثلاً در محیط کنشگر شطرنج باز کل محیط قابل مشاهده است. طبیعی است که یک مسئله با محیط قابل مشاهده برای طراحان کنشگرها مطلوب تر می‌باشد.
اگر بتوان حالت بعدی را از حالت فعلی، عمل فعلی و کنشهایی که تاکنون انجام شده به دست بیاوریم، می‌گوییم که محیط قطعی است. بازهم می‌توان از بازی شطرنج برای محیط قطعی مثال زد، چون با محیط فعلی و حرکت فعلی می‌شود حالت بعدی را به صورت دقیق یافت. قابل توجه است که بدانیم اگر محیط کاملاً قابل مشاهده نباشد آنگاه قطعی نخواهد بود. اما اگر با یک حرکت ممکن باشد به چندین حالت برویم محیط غیر قطعی است.
اگر هر دوره از دوره‌های دیگر مستقل باشد می‌گوییم محیط دوره‌ای است. مانند دوره‌های مختلف در مذاکرات چند کنشگره. محیط‌های غیر دوره‌ای به عنوان محیط‌های ترتیبی نیز یاد می‌شوند.
اگر محیط در زمان تصمیم‌گیری کنشگر تغییر کند آنگاه محیط پویا است؛ و در غیر آن صورت محیط ایستا است. اما اگر محیط در زمان تصمیم‌گیری ثابت بماند اما زمان، کارایی کنشگر را کاهش دهد، محیط را نیمه پویا می‌نامیم.
اگر مشاهدات و کنش‌های مختلف مجزا و تعریف شده باشند، محیط پیوسته‌است. مانند شطرنج. اما یک کنشگر بهینه‌ساز معادلات در محیط پیوسته کار می‌کند.
تا کنون در مورد محیط‌ها و کلیات مربوط به کنشگرها صحبت کردیم. حال نوبت بررسی ساختارهای مختلف کنشگرها است. مهم‌ترین وظیفه ما طراحی برنامه کنشگر است. برنامه کنشگر تابعی است که ادراکات را به یک عمل‌ها نگاشت می‌کند. معماری کنشگر ساختاری است که برنامه محاسباتی کنشگر تر روی آن پیاده‌سازی می‌شود. پس در کل معماری از طریق حسگرها ورودی را می‌گیرد، توسط برنامه تصمیم می‌گیرد و در نهایت با عملگرها عمل می‌کند و روی محیط تأثیر می‌گذارد.
برنامه یک عامل ساده می‌تواند به عنوان یک تابع ریاضی f (به نام "تابع عامل ") تعریف شود که هر دنباله از ادراکات ممکن را به یک دنباله از کنش‌های ممکن (که عامل قادر به انجام آنها است)، یا به یک ضریب (به عنوان المان بازخوردی) عملکرد یا ثابت می‌نگارد::
formula_1
برنامه عامل، در عوض، هر ادراک ممکن را به یک عمل می‌نگارد.
از واژه ادراک به منظور اشاره به ورودی‌های ادراکی عامل از محیط استفاده شده‌است. در شکل‌های که در ادامه خواهد آمد، یک عامل هر ماهیتی از محیط در نظر گرفته شده که می‌تواند محیط را از طریق حسگرهایش ادراک کرده و با استفاده از کنشگرهایش بر روی محیط اثر می‌گذارد.
چهار کلاس برای معماری عامل ها پیشنهاد می کند : در این گونه کنشگرها سعی بر این است که به ازای هر حالت ممکن در دنیا یک عمل مناسب انجام دهیم. برای این کار می‌توانیم حالت محیط را در ستون اول یک جدول قرار دهیم و عمل مربوط به آن را در ستون دوم نکه داری کنیم. به چنین کنشگری وابسته به جدول نیز می‌گویند؛ و به این جدول، جدول حالت-قانون نیز می‌گویند. در همان ابتدا مشخص می‌شود که برای طراحی چنین کنشگری محیط باید کاملاً قابل مشاهده باشد. مهم‌ترین مشکلی که در راه طراحی این کنشگر به وجود می‌آید این است در مسائل دنیای واقعی پر کردن چنین جدولی غیرممکن است. مثلاً برای شطرنج ۳۵۱۰۰ حالت مختلف برای محیط وجود دارد. حال اگر فرض کنیم توانایی پر کردن جدول را داشته باشیم، آنگاه اولاً حافظه (رایانه) لازم را نخواهیم داشت و ثانیاً جستجو جهت یافتن جواب زمان زیادی خواهد گرفت. ساختار این کنشگر در شکل زیر دیده می‌شود.
Artificial Intelligence, A Modern Approach, Russel & Norvige, Printice Hall, 2003, 2nd edition