X
تبلیغات
مباحث ویژه

مباحث ویژه

برنامه نویسی

 

برنامه نویسی  (انجام پروژه های دانشجویی ، اداری، شرکتها )

طراحی سایت  

با ما تماس بگیرید 

تلفن :  ۵۲۲۲۳۰۷- ۰۵۱۱

  

+ نوشته شده در  پنجشنبه نهم آبان 1387ساعت 0:21  توسط محمد رضا  | 

شبکه های عصبی - قسمت پنجم

یادگیری نورون ها

 

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

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

بقیه لایه ها – غیر از ورودی و خروجی -  لایه های پنهان  نام دارند . به طور کلی فرآیند  یادگیری را می توان  به 3 دسته تقسیم کرد :

1-    یادگیری نظارت شده  supervised learning  در این روش همان طور که قبلا اشاره شد  یک مجموعه ی  آموزشی در نظر گرفته می شود و یادگیرنده  بر اساس  یک ورودی عمل کرده  و یک خروجی  به دست می آورد . سپس این خروجی  توسط یک معلم که می تواند  خروجی  مورد نظر ما باشد  مورد ارزیابی  قرار می گیرد  و بر اساس  اختلافی  که با خروجی  مطلوب دارد یک سری  تغییرات  در عملکرد  یادگیرنده  به وجود  می آید . این تغییرات  می تواند  ، وزن های اتصالات  باشد . یک مثال برای این روش الگوریتم  ((پس انتشار خطا)) Back Propagation error  می باشد که در شبکه های پرسپترون برای آموزش ، مورد استفاده قرار می گیرد .

 

2-    یادگیری نظارت نشده  Unsupervised learning  در این روش ، حین فرآیند  یادگیری از مجوععه های آموزشی استفاده نمی شود و به اطلاعات  در مورد خروجی مطلوب نیاز ندارد .  در این روش معلمی وجود ندارد  و معمولا برای دسته بندی و فشرده سازی اطلاعات  استفاده نمی شود . یک مثال برای این روش الگوریتم kohonen می باشد.

 

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

 

یک دیدگاه دیگر نسبت به یادگیری می تواند به تقسیم بندی زیر منجر شود :

1-    یادگیری OffLine : در این روش وزن ها طی زمانی که سیستم در حال اجرای کار اصلی خودش می باشد ، ثابت هستند و تغییرات وزن ها در طول یادگیری صورت می پذیرد .

2-    یادگیری On Line : در این روش وزن ها در دوره عملکرد واقعی سیستم نیز تغییر می کنند و دوره یادگیری و عملکرد سیستم از یکدیگر جدا نیستند . بدین ترتیب این سیستم دارای قابلیت بیشتری برای مقابله با تغییرات دینامیک محیط است . اما منجر به شبکه هایی با ساختار پیچیده  تر می شود.

 

چند نکته :

ابتدا این که تعداد بهینه ی نورون های لایه های مخفی همچنین تعداد لایه های مخفی چقدر است ؟ باید گفت به طور کلی برای این مسئله  ، یک جواب تئوریک  وجود ندارد  بلکه به صورت تجربی و با توجه  به کاربرد  آن  می توان به یک ساختار مناسب رسبد .

البته  می توان  از روش های بهینه سازی مانند ژنتیک الگوریتم  برای حل این مسئله  استفاده کرد . مسئله ی مهم  دیگر بحث  Overtraining می باشد  که از اهمیت  زیادی برخوردار است  . این مورد بیان می کند  که اگر تعداد  داده های  آموزش  بسیار  زیاد  باشد  شبکه  بیشتر  به  عنوان حافظه عمل خواهد کرد و نمی تواند  پاسخ مناسبی برای مدل سیستم ما باشد  . از سوی دیگر  اگر داده های آموزشی ما در تمام  فضای  مسئله پراکنده نباشد یا تعداد  آنها کافی نباشد  یا تعداد  آنها کافی نباشد ، شاید شبکه ی ما همگرا باشد .

 

شبکه های عصبی در مقابل کامپیوتر های معمولی :

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

 

 ادامه دارد......................

 

 

 

 

+ نوشته شده در  شنبه بیستم مهر 1387ساعت 22:21  توسط محمد رضا  | 

ساختار مغز

 

هر چند مغز يک ساختار پردازشی توزيع شده است٬ ليکن اين ساختار به مرور زمان انجام وظايف را تقسيم نموده و هر قسمت آن وظيفه ای را بر عهده گرفته است. در شکل وظيفه بعضی از قسمتهای مختلف آن آمده است.

قسمت نارنجی مربوط به اطلاعات بصري٬ قسمت زرد اعمال صوتی٬ قسمت نيلی و قرمز برای اعمال حسی و حرکتی و ...

البته اين تقسيم کار لطمه ای به اينکه اين سيستم يک ساختار پردازش موازی بزرگ است نمی زند و همچنان اين ويژگی و ساير خواص بر آن مترتب است.

شکل زير ساختار مغز را زير ميکروسکوپ نشان می دهد.

 

مغز انسان حاوی بيش از ۱۰ بيليون سلول عصبی ‌(nerve cells) يا نورون (neuron) است. بطور متوسط هر نورون بوسيله حدود ۱۰.۰۰۰ سيناپس به نورونهای اطراف خود متصل شده است. اين ساختار شبکه ای نورونهای مغز يک ساختار پردازش موازی اطلاعات بسيار گسترده را ايجاد می کند. (در برابر يک کامپيوتر شخصی که با استفاده از يک پردازنده تکی می خواهد همه چيز را پردازش کند.)

در مجموع با اينکه هر يک از سلولهای مغز انسان با فرکانسی در حدود ۱۰۰هرتز کار می کنند و پردازنده های کامپيوتری با سرعتهايی در حدود مگاهرتز کار می کنند٬ بازهم پردازنده های ساخت بشر در مقايسه با مغز انسان از توانايی های پايينی برخوردازند.

از ويژگی های چشمگير شبکه عصبی مغز می توان به موارد ذيل اشاره نمود:

۱-  خرابی آبرومندانه: در اين سيستمها ميزان خرابی خروجی سيستم بستگی مستقيم به ميزان آسيب وارده به سيستم عصبی دارد و آسيب به قسمتی از مغز مانع از اشکال در عملکرد کل آن نمی شود.

۲- امکان يادگيری و تجربه کردن: بهبود عملکرد خودش با استفاده از تجربيات بدست آمده.

۳- انجام محاسبات سنگين بسيار زياد بصورت موازی

۴- پشتيبان هوشمندی و خودآگاهی فرد است.

در نهايت شبکه های عصبی مصنوعی با تقليد از شبکه های عصبی واقعی سعی در تقليد از عملکرد مغز انسان دارد.

خیلی خوب خسته نباشید .

فکر کنم مطالب یکم سنگین شد زیاده روی کردم ببخشید .

موفق و پیروز باشید .

 

+ نوشته شده در  چهارشنبه دهم مهر 1387ساعت 5:7  توسط محمد رضا  | 

ربات سخن گو

 

سر سخن گو
روبات سخنگوي واسه دا با راندن هوا به درون يك محفظه صوتي مصنوعي، شبيه انسان حرف مي زند. موتورهاي الكتريكي به وسيله ميله و سيم، لب ها، زبان و تارهاي صوتي را حركت مي دهند تا شكل و حالت كلي دهان را كنترل كنند.

صداي روبات ها، بيشتر از هر چيز ديگر، ظاهرشان را غيرانساني مي كند. اما اين يكي هم درحال تغيير است.
سر موقع به آزمايشگاه دانشگاه توكيو رسيدم تا موضوع مصاحبه ام را پيدا كنم. روبات سخنگوي واسه دا در گوشه آزمايشگاه منتظرم بود. نزديك رفتم، تركيب ناهمگونش توي ذوقم زد: صورت كوچك و بيني و لب هاي ظريفي كه به انبوهي از سيم و فلز متصل مي شد.
سخن گوي واسه دا ، يك روبات است، البته يك روبات خاص. همان طور كه از اسمش برمي آيد، مي تواند حرف بزند. ممكن است بگوييد كارمهمي نمي كند. چون ماشين هاي الكترونيك سخن گو با آن صداي فنري و منقطع، چندين دهه است كه اعصاب آدم ها را خط خطي كرده اند. اما در اين يك مورد، پژوهشگران دانشگاه واسه دا كه سابقه اي 30ساله در زمينه روباتيك دارد، توانسته اند آن صداي مصنوعي را به يك كلام آدم وار تبديل كنند.
وقتي كورتارو فوكويي ، دانشجوي كارشناسي ارشد روباتيك، روي يكي از آيكون هاي صفحه نمايش كامپيوتر كليك مي كند، WT-5 (پنجمين نمونه از روبات سخنگوي واسه دا) به كار مي افتد. ديافراگم هايي كه با موتور به حركت درمي آيند، هوا را در دواستوانه پلاستيكي مشابه به بالا مي رانند. هوا از يك  حنجره مصنوعي مي گذرد. از روي زبان رد مي شود و از دهان و بيني بيرون مي آيد. همزمان با اين اتفاق، دهان WT-5 حيات پيدا مي كند. لب هايش باز مي شوند، بسته مي شوند، كشيده و جمع مي شوند و پنج حرف صدادار را به اين ترتيب ادا مي كنند a/i/u/e/o/ . آن هم با صدايي كه چيزي بين صداي يك مرد و يكي از همان ماشين هاي سخن گوي مصنوعي است. فوكويي روي يك آيكون ديگر كليك مي كند. روبات مي گويد: da/di/du/de/do و اين بار من ياد معلم ابتدايي پيري مي افتم كه هجي كردن ياد مي دهد.
ماساكي هوندا ، خالق اين ماشين، يك متخصص دانش كامپيوتر در واسه دا است كه علاقه اش به بيومكانيك،  او را به ساخت يك روبات سخن گوي متفاوت واداشته است. او مي خواست بفهمد وقتي ما حرف مي زنيم چه اتفاقي در سرمان مي افتد. چنين ساخته هايي مي تواند براي كمك به كساني كه معلوليت تكلمي  دارند به كار گرفته شود يا به ساخت ابزارهايي براي آموزش حرف زدن و يادگيري زبان بينجامد.
اما تا همين جاي كار هم روبات سخن گو به مذاق پژوهشگران خوش آمده است. تكومش فيچ ،  متخصص ارتباطات كلامي دانشگاه سنت آندروز در انگلستان مي گويد: به نظرم جالب مي آيد، بدم نمي آيد يك ميمون يا سگ سخن گو با همين فن آوري بسازند.
ولي WT-5 چيزي بيش تر از يك اسباب بازي است و درواقع نخستين گام براي ساخت روبات هايي به شمار مي رود كه بتوانند به شكلي طبيعي تر، با مردم رابطه برقرار كنند. در اين زمينه، WT-5 با ماشين هايي مثل روبات سخن گو و آوازخوان هيده يوكي ساوادا در دانشگاه كاگاواي ژاپن، رقابت مي كند. ماساكي هوندا معتقداست اين تحقيقات مي تواند به ساخت تلفن هاي همراهي منجر  شود كه حركات صوتي كاربررا تشخيص بدهند و به جاي صوت، اين اطلاعات را به طرف ديگر بفرستند تا در آن جا به صدا تبديل شود و به اين ترتيب پهناي باند مورد نياز براي ارتباط، كاهش پيدا كند. همين طور پيدا شدن راه هاي بهتر كنترل حنجره هاي مصنوعي براي استفاده آدم هايي كه در حال حاضر قادر به سخن گفتن نيستند، از كاربردهاي ديگر اين پروژه هاست.
چيزي كه هوندا و ديگران براي فهميدنش تلاش مي كنند، اين است كه مغز انسان چه گونه ابزارهاي تكلمي يعني لب ها، زبان و تارهاي صوتي را در هنگام حرف زدن كنترل مي كند. آن ها مي دانند كه وقتي ما حرفي براي زدن داريم، پيام هاي عصبي، سيگنال هايي را در قسمت حركتي مغز ـ بخشي كه ماهيچه هاي ارادي ما را كنترل مي كند ـ به وجود مي آورند. نكته مبهم، جزييات اين فرآيند است. يعني اين كه چه طور مدارهاي مختلف در مغز با هم كار مي كنند تا اصوات كلامي از دهان خارج شود. چيزي كه به نظر مي رسد براي روشن شدنش بايد بخش هاي عصبي و مكانيكي اين فرآيند را بازسازي كرد.
براي اين كه پيچيدگي اين فرآيند كمي دستتان بيايد، به اتفاقاتي كه موقع حرف زدن مي افتد فكركنيد. اول شش ها هوا را به طرف ناي و تارهاي صوتي هل مي دهند. وقتي تارها، زير تنش باشند، جريان هوا باعث ارتعاش آن ها و توليد صدا مي شود. اصوات باصدا مثل د ، ب و و به اين ترتيب تلفظ مي شوند. اما وقتي اصوات بي صدا يي مثل ت ، پ و ف را ادا مي كنيم، يا به نجوا، چيزي مي گوييم، تارهاي صوتي كاري نمي كنند و ما فقط هوا را از لابه لاي زبان و دندان ها و لب ها بيرون مي دهيم.
حالا نوبت يك روبات است تا تلاشش را براي تقليد اين فرآيندها بكند. كيوشي هوندا مي گويد: سازندگان روبات سخنگوي واسه دا، يك سيستم مكانيكي براي شبيه سازي فرآيندهاي فيزيولوژيكي تكلم ابداع كرده اند. يعني كاري كه تا به حال كسي سراغش نرفته بود. البته همين حالا مدل هايي هست كه مي گويد تارهاي صوتي براي توليد اصوات معني دار به الگوي مشخصي از پيام هاي عصبي نيازمندند، اما هوندا اميدوار است پروژه واسه دا ، نظريه هاي تازه اي به اين مجموعه اضافه كند.
ماجرا به 1998 برمي گردد؛ يعني زماني كه ماساكي هوندا و گروهي از مهندس ها، پزشكان و متخصصان آكوستيك تصميم گرفتند يك ماشين سخن گوي مكانيكي بسازند. گروه، با استفاده از تصاوير MRI اندام هاي تكلمي انسان در وضعيت هاي مختلف، يك سر سخن گو ساخت كه مجهز به تارهاي صوتي، زبان، دندان، لب و حفره بيني بود و هركدام از اين  اجزا چندين درجه آزادي حركتي داشت. به ويژه زبان اين موجود كه مثل لب هايش از لاستيك صنعتي نرم ساخته شده بود.
اعضاي گروه، درمرحله بعد، حركات هر يك از اين اجزا را آن قدر تغييردادند تا روبات بتواند حروف صدادار قابل تشخيص توليدكند. حروفي كه البته به اعتراف خود هوندا ، در ابتدا خيلي هم طبيعي و آدم وار نبودند. يكي از دلايل اين نقص، وضعيت لب هاي روبات بود كه به رغم قابليت كشش و بازوبسته شدن، امكان ارتعاش و لرزش نداشتند؛ يعني همان كاري كه لب هاي ما موقع توليد صداهاي او يا و مي كند. تارهاي صوتي روبات از ورقه هاي لاستيكي ساخته شده بود كه هوا مي توانست از فضاي ميانشان بگذرد و يك موتور آن ها را مي كشيد يا رها مي كرد تا بتوانند در وضعيت هاي مختلف اصوات باصدا يا بي صدا توليدكند.
طرح اوليه گروه، خيلي ساده تر از آن بود كه بتواند با غنا و تنوع اصوات سيستم صوتي انسان رقابت كند. اما درسال هاي بعد، محققان با طراحي مجدد زبان كوچك، زبان و لب ها و انعطاف پذيرتركردن آن ها، اين طرح ساده را بهتر و بهتركردند. يك روش جديد هم براي كنترل تارهاي صوتي با استفاده از دو موتور ابداع شد. مجموعه اين ايده ها و طرح ها به روبات كمك كرد تا اصوات را طبيعي تر ادا  كند و صداهايي مثل س و م را هم به دايره اصواتش بيفزايد. تا سال۲۰۰۴ روبات مي توانست تمام 50 صوت كلامي زبان ژاپني را ادا كند.
گروه تحقيقاتي هوندا، همچنين سيستمي را طراحي كرد كه روبات را قادر مي كرد چند واژه  ژاپني مثل هاسه اي (به معني كلام ) را تلفظ كند. هاسه اي بين دو سيلابش يك مكث كوتاه دارد. سيلاب اولش باصدا و سيلاب دوم آن بي صدا است و بنابراين مي تواند واژه خوبي براي امتحان قابليت هاي كلامي يك روبات باشد. روبات با تقليد از حرف زدن يك انسان، تلفظ را ياد مي گيرد و بنابراين كمي به كمك نيازدارد. ابتدا نرم افزار تحليل صدا، كلمه تلفظ  شده به وسيله انسان را به مولفه هاي  آكوستيكي اش ـ مثل شدت، حجم و تن ـ تجزيه مي كند. روبات به كمك اين مولفه ها، كلمه را تكرار مي كند و نرم افزارتحليل صدا، تلفظ روبات را با نسخه اصلي و انساني اش مقايسه مي كند. بعد محققان وارد عمل مي شوند و سعي مي كنند با تنظيم دقيق كنترل لب ها، زبان و تارهاي صوتي، اين اختلاف را به حداقل برسانند.بعد از تنظيمات بسيار، نتيجه چيزي شبيه يا بسيار نزديك به تلفظ انساني است. تنظيمات نهايي منجر به اين نتيجه، ذخيره مي شود تا درآينده براي تلفظ آن واژه مورد استفاده قرارگيرد.
اما اين فرآيند آن قدر طاقت فرسا بود كه محققان را وادار كرد به  ساخت يك مدل رايانه اي براي آن رو بياورند. مدلي كه روبات به كمك آن بتواند واژه هاي جديد را خودش به طور مستقل تقليد و تلفظ كند. البته اين پروژه هنوز از يك تمرين مهندسي فراتر نرفته است.
انتظار من اين است كه آن ها از نظر نوزادي كه حرف زدن ياد مي گيرد به قضيه نگاه كنند و آن را جلو ببرند. اين ها را مي نورو آسادا متخصص روباتيك دانشگاه اوزاكا مي گويد.
به اين ترتيب، ماجرا لااقل يك دهه ديگر طول مي كشد. يك دهه، تا داشتن روباتي كه بتواند جمله ها را با رعايت قواعد دستوري و آوايي بسازد و مثل انسان تلفظ و ادا كند. اما وقتي به WT-5 كه ساكت و آرام در گوشه سالن نشسته نگاه مي كنم، بخشي از وجودم از اين قضيه خوشحال است؛ اين كه روبات هاي سخن گو حالا حالاها با واقعيت فاصله دارند و بنابراين فعلا مي شود از اين آرامش و سكوت انساني لذت برد!


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

موفق و پیروز باشید.

 

 

+ نوشته شده در  چهارشنبه دهم مهر 1387ساعت 4:44  توسط محمد رضا  | 

هوش مصنوعی - عامل ها

مقدمه
 
نگاهی به تعاریف رایج در مورد عامل ها (Agents)
امروزه بکارگیری هوش مصنوعی (AI:Artificial Intelligence) در سیستمهای تجاری امری مرسوم و پرکاربرد است (هر چند در ایران هنوز این مساله به شکلی جدی مطرح نشده ، اما نمونه هایی مشاهده می شود).   عاملهای هوشمند (IA:Inteligent Agent) نیز  به عنوان یک جزء از  هوش مصنوعی توزیع شده، باعث شده است که در شبکه ها و یا رویداد های مربوط به گروه های افراد، استفاده از عاملها و عاملهای هوشمند رواج بیشتری نسبت به سایر موارد داشته باشد، به شکلی که امروزه بحث مهندسی نرم افزاری مبتنی بر عامل ها (Agent Based Software Engineering) و روشهای تجزیه تحلیل، چارچوب های برنامه سازی و محیط های توسعه آن بیشتر مورد توجه قرار گرفته است.
در فرهنگ لغات  Agent چنین معنی می شود :"فاعل ، نماینده ، گماشته ، وکیل ، مامور ، عامل ، مباشر، واسطه ، پیشکار ، امین و کارگزار ". بدین ترتیب به عنوان یک تعریف پایه می توان Agent   را کسی دانست که به جای شخص یا چیز دیگری عمل می کند.
یک عامل دارای خصوصیات مختلفی است ؛ داشتن برخی از این خصوصیات برای یک عامل اجباری و بقیه اختیاری است. از جمله خصوصیات اجباری می توان به خواص autonomous (خودمختار بودن) ، interactive (دارای عمل متقابل بودن) و reactive (واکنش دار بودن )اشاره كرد.ازجمله خصوصیات اختیاری میتوان به خواص mobility (متحرک بودن ) ، ntelligence (هوش )وtrustworthiness (قابلیت اعتماد)اشاره کرد.این خصوصیات  عبارتند از :
-خودمختار بودن (Autonomous) : بتواند بدون دخالت یک محرک خارجی کارکند و تاحدی با استفاده از تجربه های شخصی بر حالات درونی و رفتارهای خود کنترل داشته باشد.
- دارای عمل متقابل بودن (Interactive) : با محیط و سایر عامل ها رابطه داشته باشد.
- سازگاری (Adaptive) : قابلیت پاسخگویی به محیط یا سایر عامل ها در درجات مختلف (بیشترین سازگاری زمانی است که عامل اجازه داشته باشد رفتار خود را بر اساس تجربیاتش تغییر دهد).
- اجتماعی بودن (Sociable) : با سایر عامل های دوست یا همکار تعامل خوب، دوستانه و اجتماعی داشته باشد.
- متحرک بودن (Mobile) : بتواند از یک محیط به یک محیط دیگر برود.
- وکالت (Proxy) : بتواند به عنوان وکیل شخص یا چیز دیگر عمل کند. بدین شکل که مطابق میل آن رفتار کند. یا مسئولیت های آن را قبول کند و یا برای بدست آوردن منافع او تلاش کند.
-کنشگرا(Proactive): هدفمند وبا قصدمشخص،به عبارت دیگرصرفا درمقابل محیط واکنش های ساده نمی کند.
- هوشمند(Intelligent) :حالتها با دانشهایی شکل رسمی گرفته (مانند اعتقادات ، اهداف ، برنامه ها و فرضیات) و عامل با سایر عاملها با یک زبان سمبولیک تعامل می کند.
-منطقی (Rational) : قابلیت عام را داشته باشد که کاری را بر اساس اهداف داخلی خود انجام دهد که وی را به این اهداف نزدیک سازد.
-غیرقابل پیش بینی (Unpredictable) : بتواند به نوعی رفتار کند که کاملا قابل پیش بینی نباشد حتی اگر شرایط آغازین کار کاملا شناخته شده باشد. به عبارت دیگر بتواند به طور غیرقطعی رفتار کند.
-پیوسته زمانی (Temporally Continuous) : فرآیند اجرای پیوسته ای داشته باشد.
-شخصیت (Character) : شخصیت و احساس قابل باوری داشته باشد.
-شفاف و قابل حساب (Transparent and Accountable) : به اندازه کافی شفاف باشد و درموقع نیازگزارش فعالیت های خود را ثبت کند .
- هماهنگ (Coordinative) : بتواند فعالیتهایی را با سایر عاملها دریک محیط مشترک انجام دهد.این فعالیت ها اغلب در قالب یک برنامه، جریان کار و یا یک مکانیسم دیگر مدیریت پردازش ها هماهنگ شده اند.
- همکاری(Cooperative) :بتواندباسایرعاملها برای رسیدن به یک هدف مشخص هماهنگ عمل کند بطوری که شکست یاموفقیت عامل به این رابطه وابسته باشد.(مفهموم Collaboration نیزمفهومی نزدیک به این رابطه دارد.)
-رقابت (Competitive) : با سایر عاملهای دیگر چنان هماهنگ باشد که موفقیت یک عامل سبب شکست دیگری باشد . (مخالف همکاری)
-نیرومند (Rugged) : بتواند با خطاها و یا اطلاعات ناقص رفتار محکم و درستی داشته باشد.
-تقابل اعتماد (Trustworthy) : به قوانین موجود وفادار بوده، راستگو باشد.
در منابع مختلف بسته به دیدگاه نویسنده تعاریف مختلفی برای عامل ارائه شده است در زیر به برخی از این تعاریف اشاره می کنم:
عامل Mubot : "لغت عامل برای نشان دادن دو مفهوم متعامد به کار می رود. اولین مفهوم قابلیت اجرای خودکار عامل می باشد و دومین مفهوم قابلیت انجام دادن تصمیم گیری های مبتی بر دامنه است ."
عامل AIMA : "یک عامل چیزی است که می تواند محیط را از طریق حسگر هایش درک کند و با کمک عملگرهایش بر روی محیط تاثیر بگذارد."
عامل Maes : "عامل خودکار یک سیستم محاسباتی است که در یک محیط پیچیده پویا ساکن است. در این محیط به صورت خودکار حس می کند و بر اساس آن عمل می کند و بدین ترتیب اهدافی که بر اساس آن طراحی شده است را محقق می سازد."
عامل KidSim : "عامل بدین صورت تعریف می شود : یک موجودیت نرم افزار پایدار که برای یک هدف خاص در نظر گرفته شده است. پایداری عامل را از زیربرنامه ها متمایز می سازد؛ عاملها نظرات خاص خود را در مورد انجام یک عمل دارند . هدف خاص آنها را از سایر برنامه های چند کاره جدا می سازد؛ عاملها بسیار کوچک ترند. "
عامل Hayes-Roth : "عاملهای هوشمند به طور پیوسته سه عمل را انجام می دهند: استنباط شرایط پویا در محیط ، استدلال برای تفسیر این استنباط ها، حل مساله، ترسیم نتیجه گیری ها و تعیین اعمال ."
عامل IBM : "عاملهای هوشمند موجودیت های نرم افزاری هستند که یک سری عملیات را به عنوان نماینده یک کاربر یا یک برنامه دیگر و با درجه خاصی از استقلال یا خودمختاری برعهده دارند و برای انجام چنین کاری بخشی از دانش و یا نمایش اهداف و امیال کاربر را به کار می گیرند."
عامل Wooldridge : " سیستم کامپیوتری مبتنی بر سخت افزار و یا به طور معمول تر نرم افزاری که مشخصات زیر را داشته باشد :
• خودمختاری : عامل بدون دخالت مستقیم انسان و یا دیگران عمل می کند و تا حدودی بر عملکرد و حالات درونی خود کنترل دارد.
•قابلیت اجتماعی : عاملها با سایرعاملها (وحتی انسانها) بوسیله انواع زبانهای ارتباطی عاملها در تعامل می باشند.
•واکنش پذیری : عامل محیط خود را درک می کند (ممکن است یک کلمه باشد ، یک کاربر از طریق یک واسط کاربری باشد، مجموعه ای از عاملهای دیگر باشد ویا ترکیبی از همه اینها ) و به موقع در مقابل تغییرات اعمال شده در آن واکنش نشان می دهد.
•Pro-activeness: عاملها تنها به واسطه پاسخ به محیط عمل نمی کنند بلکه خود می توانند به واسطه اهداف خود آغاز گر یک عمل باشند. "
عامل SodaBot :"عامل های نرم افزاری ،برنامه هایی هستند که دریک گفتگو شرکت می کنند، مذاکره می کنند و تبادل اطلاعات را هماهنگ می کنند. "
عامل Brustoloni : "عاملهای خودمختار سیستمهایی هستند که می توانند در دنیای واقعی خودمختار و هدفمند عمل کند. "
عامل Jennings : "يك عامل يك سيستم كامپيوتري كپسوله است كه در يك محيط قرار دارد و قادر به انجام عمليات خودكار و قابل انعطاف در اين محيط براي رسيدن به اهداف طراحي آن مي باشد."
تعریف اخیر تعریفی است که در عین سادگی به نظر می رسد نمایانگر مشخصات اصلی یک عامل است.
با طرح تعاریفی درموردعاملها(Agents)می خواهيم نگاهی به سیستمهای چند عامله،Multi Agent System،  داشته باشيم.بسیاری ازسیستم های تجاری اولیه عامل رابرای هدف جستجومورداستفاده قراردادند.دراین سیستم ها عاملهای منفرد به مراکزمعینی متصل می شدند،اطلاعات لازم راجمع آوری میکردندودرنهایت به نزدکاربردرخواست کننده برمی گشتند.به عبارت دیگرعاملها یک کار انفرادی داشتندودرمقیاس بسیار کمی (اگر بود) با عاملهای دیگرتعامل داشتند.این روش باوجودیکه کاربردهای زیاد خاص خود را داردنمی تواند به تنهایی یک اجتماع یا یک سازمان ایجادکندکه بتواند نیازهای دیگرکاربران رابرآورده سازد.درعوض درمحیط های انسانی ما یک شبکه از افرادرا داریم که برای منظورهای مختلف بایکدیگردرتعامل می باشند.بدین ترتیب برای ایجاد یک جامعه از عاملها نه تنها نیازاست که بین آنها ارتباط برقرارکردبلکه عاملها باید بتوانند با یکدیگرهماهنگ هم باشند.این هماهنگی می تواند جنبه های مختلف همکاری و یا رقابتی داشته باشد.این جوامع، سیستمهای چند عامله (MAS) نامیده می شوند.
به عبارت دیگر "یک سیستم چند عامله یک  پیاده سازی با تاکید بر همکاری از برنامه ها (عاملها) است که با یکدیگر هماهنگ شده اند برای رسیدن به همگرایی روی  پاسخ یک یا چند وظیفه".
سیستم های چندعامله،سیستم هایی هستندکه ازجمع شدن عاملهای هماهنگ شده با هم و روابط بین آنها تشکیل شده اند.دراین سیستم هرکس وظیفه خود را می داندومیجداندکه چه زمانی بادیگری بایدارتباط برقرار کند.
سيستم هاي چندعاملي (MAS)  روش نويني براي حل مسائل و پياده‌سازي پروژه‌هاي نرم‌افزاري رايانه‌اي است.
با اينكه زمان زيادي ازپيدايش اين گونه سيستم‌ها نمي‌گذرد ولي استفاده از روش‌هاي طراحي بر اساس عامل يكي از موفق‌ترين راه‌حل‌هاي موجود بوده و حاصل اين شيوه طراحي يعني سيستم‌ حل مسائل به صورت توزيع‌شده از بهترين سيستم‌ها به شمار مي‌آيد و به عنوان ابزار جديدي براي حل انواع فرآيندهاي انساني شناخته مي‌شود. اين نوع سيستم‌ها نسبت به سيستم‌هاي معمولي و تك‌عاملي، مزاياي زيادي دارند؛ از جمله اينكه در اكثر شرايط كار مي‌كنند. به اين معنا كه چون مغز متفكر واحد ندارند و تصميم‌گيري در آنها به صورت توزيع‌شده است، چنانچه حتي بخشي از آنها نيز از كار بيفتد باز هم به كار خود ادامه مي‌دهند.
 همچنين اين نوع سيستم‌ها براي محيط‌هايي با مقياس وسيع(Large Scale)  و محيط‌هاي ناشناخته نيز گزينه مناسبي نسبت به سيستم‌هاي تك‌عاملي به شمار مي‌آيند.
سيستم‌هاي مبتني بر عامل، پردازش موازي را آسان كرده و به راحتي موازي مي‌شوند. منظور از پردازش موازي اين است كه به جاي انجام يك پروژه با محاسبات زياد و پردازش‌هاي سنگين توسط يك پردازشگر، همان پروژه را به پردازش‌‌هاي كوچكتر با حجم محاسبات كمتر شكسته و آن را توسط چندين عامل انجام دهيم. مثلاً ميزي را تصوركنيد كه براي بلند كردنش به 100 نيوتن نيرو احتياج داريم،حال هم مي‌توانيم آن را توسط يك نفر كه توانايي اعمال 100 نيوتن نيرو را دارد، بلندكنيم و هم اين كار را به كمك چهارنفركه هركدام25 نيوتن نيرو به اشتراك مي‌گذارند، انجام دهيم.درنتيجه،هزينه‌ها درچنين سيستمي پايين مي‌آيدونيازي به صرف هزينه كلان جهت ايجادامكان پردازش سنگين براي يك عامل نيست. در اين صورت، چندين عامل با قدرت پردازشي كمتر همان كار را حتي سريع‌تر انجام مي‌دهند.البته اين نوع سيستم‌ها به نوبه خودمعايبي نيزدارندكه استفاده از آنها را محدود مي‌كند.مهمترين عيب اين سيستم‌ها،كندي اندك دركارطراحي آنها و موازي‌سازي است كه به نتيجه رساندن پروژه را به تعويق مي‌اندازد.
برخی دلایل منطقی وجودی سیستم های چند عامله عبارتند از:
- یک عامل می تواند همه چیز را بسازد اما عاملهای چاق (!) باعث بروز نارسایی هایی در سرعت،قابلیت اطمینان ، قابلیت نگهداری و نظایر آن می شوند.(به عبارت دیگر عامل همه کاره وجود ندارد.) تقسیم کارکرد ها بین عاملهای مختلف مزایای واحدبندی شدن ،قابلیت انعطاف، قابلیت تغییرپذیری وقابلیت توسعه را فراهم می سازد.
- دانش های تخصصی اغلب ازیک عامل بدست نمی آیند(به عبارت دیگر عامل عالم مطلق وجود ندارد )دانشی که در بین منابع (عاملهای) مختلف گسترده شده است می تواند درهنگام نیاز دریک دیدگاه بسیارکاملتر جمع گردد.
- کاربردهایی که به محاسبات توزیع شده نیاز دارند بهترتوسط MAS حمایت می شوند.در اینجا عاملها می توانند به صورت مولفه های خودمختار ریز شده ای طراحی شوند که به صورت موازی عمل می کنند. پردازش همزمان و حل مساله می تواند برای بسیاری از مسائل که تاکنون به صورت خطی حل می شدند راه حل های مناسب تری ارائه کند. بدین ترتیب فن آوری عاملها نهایی ترین حد را در فن آوری مولفه های توزیع شده فراهم می سازد.
- MAS برای کاربردهایی که ذات توزیع شده و غیرهمگن دارند مانند تجارت الکترونیک و نظایر آن مناسب ترین گزینه است. در این گونه محیط ها , عاملها می توانند مستقل از یکدیگر و توسط توسعه دهندگان مختلف طراحی و تولید شوند و با وضع قوانین تعامل با یکدیگر هماهنگ گردند واهداف طراحی را برآورده سازند.
عامل‌ها و سيستم‌هاي خبره  (Expert Systems)
سئوالي كه مطرح مي‌شود اين است كه آيا عامل‌ها همان سيستم خبره هستند ولي با نامي متفاوت؟ ابتدا ببينيم سيستم خبره چيست؟ سيستم خبره، يك برنامه كامپيوتري است كه عمليات مربوط به تصميم‌گيري و استدلال و اظهار نظر در رابطه با يك موضوع را با تركيبي از اطلاعات، تعقل و دانش و همچنين با در دست داشتن دانش و تجربه يك متخصص انجام مي‌دهد و بر اين اساس، وظيفه حل مشكلات يا ارائه مشاوره را بر عهده دارد.
 سيستم‌هاي خبره به طور معمول بدون بدنه و ساختاري بيروني هستند كه در يك زمينه خاصي متخصص و يا به اصطلاح خبره مي‌شوند. براي مثال سيستم MYCIN نمونه‌اي از يك سيستم خبره است كه مطالب زيادي درباره بيماري‌هاي خوني انسان‌ها مي‌داند. در اين سيستم، اطلاعات بسيار وسيعي در مورد بيماري‌ها و امراض خوني به فرم يك سري قاعده و دستورات ذخيره شده كه مي‌تواند با گرفتن مشخصات بيمار و شرايط موجود، نوع بيماري را تشخيص دهد. يك پزشك به راحتي مي‌تواند با دادن واقعيت‌هاي موجود به سيستم، توصيه‌هاي تخصصي و در اكثر مواقع قابل‌اعتمادي را از اين ماشين دريافت كند.
 تفاوت اصلي سيستم‌هاي خبره با سيستم‌هاي چندعاملي را مي‌توان در دو مورد زير بيان كرد:
1- عامل‌ها در محيطي قرار مي‌گيرند كه مي‌توانند روي آن تاثيرگذار باشند و از آن تاثير بپذيرند؛ در حالي كه عملكرد سيستم‌هاي خبره مانند MYCIN  كاملاً مستقل از محيط بوده و از دنياي اطراف آگاه نيست و اطلاعات به دست آمده از سيستم خبره مبتني بر پايگاه دانش‌اش و سئوالاتي است كه از كاربر مي‌پرسد.
2- عامل به عنوان نماينده‌اي از طرف كاربر، عملي را انجام مي‌دهد ولي سيستم خبره مانند MYCIN  هيچ عملي در محيط يا روي بيمار انجام نمي‌دهد.
يك سيستم خبره به جاي انجام عمليات رياضي و استدلال، بر پايه دانش انساني تعقل مي‌كند. در اين روش، دانش در لفاف يك زبان مخصوص، درون برنامه نگهداري مي‌شود كه به عنوان پايگاه دانش سيستم خبره شناخته مي‌شود. پس به زباني ساده، يك سيستم خبره را مي‌توان به صورت زير تعريف كرد:
سيستم خبره  يك برنامه كامپيوتري است كه  با استفاده  ازپايگاه  دانش  و  موتور استنتاج  يا  نتيجه‌گيري خود،دانش و تجربه لازم درمورديك موضوع مشخص را دركناردريافت اطلاعات درموردمسئله ياموقعيت كنوني(كه مربوط به دانش خودش است)به كارمي‌گيردوتصميم‌گيري يا نتيجه‌گيري درستي را كه از يك انسان خبره انتظار مي‌رود، انجام مي‌دهد.در حالي كه عامل يك سيستم كامپيوتري است كه قادر به انجام اعمال مستقل و اتوماتيك ازطرف كاربر يا صاحب خود است.
پس با مقايسه تعاريف و نحوه عمل و طراحي هر كدام متوجه مي‌شويم كه اين دو سيستم متفاوت‌اند و نبايد آنها را درهم آميخت.
عامل‌هاي هوشمند و هوش مصنوعي (AI)
سؤالي كه در مورد سيستم‌هاي چندعاملي و هوش مصنوعي به ذهن مي‌آيد اين است كه آيا طراحي سيستم‌هاي چندعاملي همان پروژه‌هاي مطرح در هوش مصنوعي است؟ آيا ساختن يك عامل تماماً همان موضوعات مورد بحث در هوش مصنوعي نيست؟
در جواب بايد گفت، هدف هوش مصنوعي، ساختن سيستم‌هاي هوشمندي است كه بتوانند به خوبي زبان طبيعي را بفهمند، احساس را درك كنند و قادر به استفاده از حواس پنج‌گانه انساني بوده، داراي فكر خلاق باشند و ... كه كار بسيار مشكلي است. پس آيا ساخت يك عامل توسط الگوريتم‌هاي هوش مصنوعي كه بتواند همه اين كارها را انجام دهد، نيازمند حل همه اين الگوريتم‌ها نيست؟ مسلماً جواب مثبت است.
ولي ما درهنگام ساخت يك عامل،به طورساده سيستمي مي‌خواهيم كه بتوانددريك محيط محدودعمل مناسب و درست را انتخاب كرده و انجام دهد.بنابراين براي ساخت يك عامل ما ملزم به حل همه مسائل موجود در هوش مصنوعي نيستيم.
همانطور كه گفته شد با وجود عمر كم سيستم‌هاي مبتني بر چندعامل، به دليل قابليت بالا در موازي‌سازي، روش طراحي براساس عامل و حل مسائل به صورت توزيع‌شده جزء موفق‌ترين روش‌هاي حل مسئله است و اين سيستم‌ها ابزار بسيار بديعي براي شبيه‌سازي كامپيوتري فراهم آورده‌اند كه مي‌تواند نور اميدي براي روشن شدن انواع مسائل مربوط به انسان و زندگي او باشد.
عامل
عامل هر چیزی است که قادر به درک محیط پیرامون خود از طریق حس گر ها (sensor) و اثر گذاری بر روی محیط از طریق اثر کننده ها (effectors) باشد. عامل انسانی اندام هایی مانند گوش ها ، چشم ها و دیگر ارگان ها برای حس کردن و دست ها،پاها، بینی و دیگر اندام ها برای اثر گذاری دارد. عامل رباتیک دوربین ها و یابنده های مادون قرمز را به جای حس گر ها و انواع موتور ها را به جای اثر کننده ها جایگزین کرده است. عامل نرم افزاری رشته های بیتی را به عنوان درک محیط و عمل ، کدگذاری می کند.

عامل ها چگونه باید عمل کنند؟
عامل منطقی چیزی است که کار درست انجام می دهد . آشکارا ، این بهتر از آن است که کار نادرست انجام گیرد. اما این چه معنی می دهد؟ به عنوان اولین تخمین می گوییم عمل درست آن است که باعث موفق ترین شدن عامل گردد. اما این بیان مسئله ، تصمیم گیری درباره چگونگی و زمان محاسبه موفقیت عامل را نادیده می گیرد.
نمی توان عاملی را برای چیزی که قابل درک نیست یا به علت عدم انجام عمل غیر قابل انجامی سرزنش نمود. تنها یک معیارثابت برای تمامی عامل ها وجود ندارد. برای مثال اگر عاملی بخواهد زمینی را تمیز کند معیار هایی چون میزان تمیزی دریک بازه زمانی معین، مصرف برق و سروصدای تولید شده درهمان بازه زمانی،تمیزکردن زمین درزمانی کوتاه وجود دارند.
دانش کل و منطق
عامل دانای کل معنی خروجی واقعی اعمال خود را دانسته و بر پایه آن عمل می کند، اما دانش کل در واقعیت غیر ممکن است. برای مثال : فردی می خواسته از خیابان رد شود . ترافیکی هم نبوده که به او آسیبی برسد. پس منطقی است که از خیابان رد شود. ولی هنگامی که داشته از خیابان رد می شده ، هواپیمایی در همان جا سقوط می کند و او کشته می شود. آیا می توان گفت که او برای رد شدن از خیابان عملی غیر منطقی انجام داده؟ خیر، چون رد شدن از خیابان اکثرا موفقیت آمیز است و منطقی بودن بر امید موفقیت که درک می شود متمرکز است.
به طور خلاصه آنچه در هر در هر زمانی منطقی است به چهار چیز وابسته است:
معیار کارایی که درجه موفقیت را تعیین می کند.
هر چیزی که تا کنون عامل ادراک نموده است. ما این تاریخچه کامل ادراکی را دنباله ادراکی می نامیم.
آنچه که عامل درباره محیط خود می داند.
اعمالی که عامل می تواند صورت دهد.
از آنجا که  دریافتیم  رفتارعامل وابسته  به  دنباله  ادراکی  تاحال است می توان هرعامل خاصی را بوسیله ساخت جدولی از عمل آن درپاسخ به هردنباله ادراکی توصیف كرد چنین لیستی نگاشت(mapping)دنباله های ادراکی نامیده میشود.
این عوامل راهنمای تعریف یک عامل منطقی ایده آل هستند :«برای هردنباله ادراکی ممکن،عامل منطقی ایده آل بایدهرکاری را که انتظار می رود باعث حداکثر سازی معیار کارایی می شود،انجام دهد و این عمل بر پایه شواهدی که ازطریق دنباله ادراکی آماده شده وهر آنچه که دانش درونی عامل است ، انجام می گردد.» ابتدا به نظر می رسد که یک عامل منطقی ایده آل می تواند دربعضی موارد نیمه هوشمند،زیاده روی کند. مثال: عاملی برای رد شدن از یک خیابان شلوغ،به خیابان نگاه نمی کند.آنگاه دنباله ادراکی او به او نمی گوید که کامیونی با سرعت زیاد در حال نزدیک شدن است.طبق تعریف،همه چیز برای ردشدن ازخیابان درست است.ولی این تفسیر ازدونظراشتباه است.
1.   منطقی نیست که بدون نگاه کردن از خیابان رد شویم.
2.   عامل منطقی واقعی باید نگاه کردن به خیابان برای رد شدن از آن را انتخاب کند. زیرا نگاه کردن به حداکثر سازی کارایی مورد انتظار کمک می کند.
خودمختاری (Autonomy)
مورد دیگری که درتعریف عامل منطقی ایده آل بایدلحاظ شود،بخش دانش درونی است.اگر اعمال عامل ها کاملا بر پایه دانش درونی باشد، چنان چه هیچ توجهی به ادراک خود نکنند ، می گوییم که عامل فاقد خود مختاری است. مثال : اگر سازنده ساعتی پیش بینی کند که صاحب ساعت در چه تاریخی از کالیفرنیا به استرالیا سفر می کند و مکانیزمی درساعت تعبیه کند که درآن تاریخ 6 ساعت جا به جا شود،این رفتار به طورعمومی موفقیت آمیز است. اماهوشمندیجمتعلق به ساعت ساز است.عاملی که برمفروضات درونی خودجعمل میکندجتنها زمانی میتواند موفق باشد که مفروضات درونی او برقرارباشندواین یعنی فقدان انعطاف پذیری.مثال: اگرچنین عاملی را که آن راA می نامیم برای کارلوله گذاری تعیین کنندوA شامل سه قسمت حفاری، لوله گذاری وخاکریزی باشد.هنگامی که قسمت لوله گذاری ازکاربیافتد،عاملAبه کارخود ادامه میدهد.درنتیجه کاری انجام نمی شود.عامل هوشمند واقعا خودمختارباید قادر به عمل موفقیت آمیز در دامنه وسیعی از محیط ها باشد و البته باید زمان کافی برای تطبیق نیز به آن داده شود.
اگراعمال  عاملها برپایه دانش درونی باشد,چنانچه توجهی به ادراک خودنکنند,گوییم  عامل فاقدجخودمختاری است.
وظیفه هوش مصنوعی طراحی برنامه عامل است,تابعی که نگاشت عامل از ادراک به عملیات را پیاده سازی می کند.
ساختار عاملهاي هوشمند
تاكنون درباره عامل ها از طريق توصيف رفتارشان بحث شد، عملي كه بعد از هر دنباله ادراكي داده شده انجام مي گيرد.حال  زمان آن رسيده كه به اصل مطلب بپردازيم و درباره چگونگي كاركرد داخلي آن گفتگو كنيم. وظيفه هوش مصنوعي طراحي برنامه عامل است، تابعي كه نگاشت عامل از ادراك به عمليات را پياده سازي مي كند. فرض مي كنيم اين برنامه بر روي نوعي ابزار محاسبه گر اجرا مي گردد كه آن را معماري مي ناميم.
بديهي است، برنامه اي كه انتخاب مي كنيم بايد آن برنامه اي باشد كه توسط معماري قابل پذيرش واجرا باشد.
معماري ممكن است يك كامپيوتر يا سخت افزارها ي خاص براي مقاصد معين باشد، به عنوان مثال دوربين هاي پردازش تصوير يا ورودي فيلتر شده صدا. همچنين ممكن است شامل نرم افزاري گردد كه درجه اي از پوشش بين كامپيوتر به عنوان سخت افزار صرف و برنامه عامل را ايجاد نمايد وبنابراين برنامه نويسي در سطح بالا تري صورت مي گيرد. عموماً، معماري ادراك از طريق حس گر ها را براي برنامه آماده ساخته، برنامه را اجرا نموده و اعمال انتخابي برنامه را به عمل كننده هاي سيستم منتقل خواهد كرد. ارتباط ما بين عامل ها، معماري هاوبرنامه ها را مي توان  به صورت ذيل جمع بندي نمود:
برنامه + معماري = عامل
قبل از آنكه به طراحي عامل بپردازيم، ابتدا بايد تصوير خوبي از ادراكات وعمليات ممكن، اهداف يا معيار كارآيي عامل كه مي خواهد به آن برسد و نوع محيطي كه در آن فعاليت مي كند،را داشته باشيم.اين مباحث عناوين گسترده اي را شامل مي گردد.شكل زير عناصر پايه براي انتخاب انواع عامل را نشان مي دهد.
 
محيط   اهداف   عمليات   ادراكات   نوع عامل     
بيمار، بيمارستان   بيمارسالم، حداقل هزينه   سؤالات،
آزمونها،
رفتارها   علائم،
يافته ها، پاسخهاي بيمار   سيستم تشخيص پزشكي     
تصاوير  ماهواره اي   طبقه بندي
صحيح   چاپ يك صحنه طبقه بندي شده   پيكسل هاي با شدت متفاوت،
رنگ   سيستم تحليل تصويرماهواره اي     
تسمه حمل كننده اجزاء   قرار دادن اجزاء در دسته
صحيح   برداشتن اجزاء
و مرتب سازي آنها به صورت دسته اي   پيكسلها با شدت
متفاوت   روبات جابه جا كننده اشياء     
پالايشگاه   افزايش خلوص،
محصول،ايمني   بازو بسته كردن
سوپاپها،
تعديل دما   دما، فشارسنجها   كنترل كننده
پالايشگاه     
مجموعه     دانش آموزان   افزايش نمرات
دانش آموزان در آزمونها   تمرينهاي
چاپ شده،پيشنهادات،
اصلاحات   كلمات تايپ شده   آموزش دهنده زبان انگليسي
با ارتباط متقابل   

شايد براي برخي از خوانندگان تعجب آور باشد كه ما درليست انواع عامل ها برخي برنامه ها را ذكر كرده ايم كه در محيط كاملاً مصنوعي كه به وسيله ورودي صفحه كليد و خروجي كاراكتربر روي صفحه نمايش تعريف مي شود، مطرح مي گردند مطمئناًبرخي خواهند گفت، «آيا اين يك محيط واقعي است؟» در حقيقت مسئله مهم تمايز محيط هاي« واقعي » و «مصنوعي » نيست، بلكه مسئله اصلي پيچيدگي ما بين ارتباط رفتار عامل، دنباله ادراكي توليد شده بوسيله محيط، و اهدافي است كه عامل قصد حصول آن را دارد،مي باشند. برخي محيط هاي « واقعي » در عمل بسيار ساده هستند.براي مثال،روباتي كه براي بازرسي قطعاتي كه بر روي تسمه نقاله مي آيند، طراحي شده مي تواند فرضيات ساده كننده اي را در نظر گيرد: اين فرض كه روشنايي همواره وجود دارد،اين فرض كه فقط قطعات خاصي بر روي تسمه نقاله انتقال مي يابند و اينكه تنها دو عمل اعريف شده است،قبول قطعه يا علامت گذاري روي آن براي رد قطعه.
در مقابل برخي عامل هاي نرم افزاري (Software agents) در دامنه هاي نا محدود و غني وجود دارند (به اين نرم افزار ها ،روبات هاي نرم افزاري يا( softbots ) نيز مي گويند). روبات نرم افزاري را تصور كنيد كه براي شبيه سازي پرواز 747 طراحي شده است. شبيه ساز دراي محيطي پيچيده و بسيارجزيي است و عامل نرم افزاري بايدازميان طيف گسترده اي  از عمليات در شرايط بلاد رنگ انتخابي را انجامدهد. و يا عامل نرم افزاري را تصور كنيد كه براي مرور منابع اخبار و نمايش اقلام مورد توجه مشتريان طراحي شده است.براي انجام درست كار، بايد قابليت پردازش زبان طبيعي را داشته باشد، نيازمند يادگيري علايق  مشتريان خواهد بود و مي بايست توانايي تغيير پوياي برنامه خود را براي زماني داشته باشد كه براي مثال اتصال به يك منبع خبري از بين رود و يا يك منبع جديد خبريروي خط بيايد.
برخي محيط ها تمايز بين « واقعي » و« مصنوعي » را محو مي كنند.در محيط  ALIVE (Maes  et al.1994)، عامل هاي نرم افزاري داده شده ناد كه قادر به درك تصاوير دوربين ديجيتال اتاقي هستند كه انساني گرداگرد آن قدم ميزند. عامل، عامل تصوير دوربين را پردازش كرده و عملي را انتخاب مي كند.محيط همچنين تصوير دوربين را بر روي پرده نمايش بزرگي كه انسان قادربه ديدن آن باشد نمايش مي دهد تا بتواند بر روي تصوير افكت هاي گرافيك كامپيوتري را اضافه كند.چنين تصويري مي تواند سگ كارتوني باشد كه برناوه ريزي شده تا بسوي انسان حركت كند (مگر اينكه فرد به جايي اشاره كند تا سگ دور شود) و يا دست خود را تكان داده و يا مشتاقانه بپرد زماني كه انسان اداهاي خاصي از خود در آورد.
سیستم رانندگی هوشمند
برای ملموس ترشدن بحث برنامه ها،یک محیط خاص رادرنظرمی گیریم.نقش رانندگی ماشین را به راحتی می توان درک کرد.بنابر این این محیط را مورد مطالعه قرار می دهیم. راننده به طور کلی نیازمند دانستن موارد زیر است:
·   در کجا قرار دارد.
·   سرعت او چقدر است.
·   چه افراد و اجسام دیگری در خیابان هستند.
·   اجسام و افراد دیگر با چه سرعتی حرکت می کنند.
اعمالی که باید راننده انجام بدهد:
·   کنترل فرمان (وضعیت چرخ ها)
·   کنترل سرعت
·   کنترل وضعیت ماشین (گرمای موتور،·    روغن،·    دور موتور و ...)
معیار هایی که راننده نیازمند دانستن آن ها است :
·   صحیح و سالم به مقصد رسیدن
·   حداقل سازی مصرف سوخت
·   حداقل سازی زمان
·   حداقل سازی تخلفات رانندگی
مکانیزم های مورد نیاز برای انجام فعالیت های فوق:
·   سیستم مکان یابی جهانی (GPS=Global Positioning System)
·   دوربین های تصویر برداری دیجیتالی
·   سنسورهای مادون قرمز و رادار
·   میکروفون یا صفحه کلید برای دریافت مقصد توسط مسافران
·   کیلومتر سنج،·    شمارش دور موتور و ...
·   و...
در نهایت اگر این یک پروژه واقعی باشد، باید محیط های رانندگی متفاوت را برای برنامه تعیین کرد. (آیا در شهر رانندگی می کند یا در آزاد راه؟ در مناطق قطبی رانندگی می کند یا در مناطق استوایی؟ و ...)
برای ساخت برنامه عامل واقعی از چهار نوع برنامه عامل می توان استفاده کرد:
·   عامل های واکنشی ساده
·   عامل هایی که اثرات دنیا را حفظ می کنند.
·   عامل های هدف گرا
·   عامل های سودمند
عامل های واکنشی ساده
در ماشین هنگامی که ماشین جلویی ترمز می کند و چراغ ترمز های آن روشن گردد، آن گاه راننده باید متوجه آن شده و ترمز کند. به عبارت دیگر هنگامی که شرایطی که ما آن را ترمز کردن ماشین جلویی می نامیم روی دهد، پردازش هایی که روی تصویر انجام می گیرد متوقف می شود، سپس این رویداد باعث فعال شدن برخی موارد در برنامه عامل خواهد شد که عمل اقدام به ترمز را فعال می سازد. چنین اقدامی را یک قانون شرط-عمل (Condition-Action Rule) می نامیم. این چنین عامل هایی می توانند کاملا کارا پیاده سازی شوند، ولی محدوده کاربردی آن ها بسیار محدود هستند.
عامل هایی که اثرات دنیا را حفظ می کنند
راننده ها برای تغییر لاین نیازمند استفاده از آینه ها برای تشخیص جای ماشین های دیگر هستند. ولی سنسور ها نمی توانند دسترسی کامل به وضعیت دنیا داشته باشند. عامل نیازمند دستکاری برخی از اطلاعات وضعیت داخلی است تا از طریق آن تمایز بین وضعیت های دنیا (که در ظاهر ورودی ادراکی یکسانی می کنند) را میسر سازد. عامل به دو نوع دانش کد شده در برنامه نیاز دارد تا اطلاعات وضعیت داخلی را به هنگام کند. اول نیازمند آن است که برخی اطلاعات درباره چگونگی تغییرات جهان مستقل از عامل را داشته باشد.(مثلا ماشین جلويی چند لحظه قبل نزدیک شده است.) دوم نیازمند اطلاعاتی درباره اعمال خود عامل است که بر دنیا اثر می گذارند. (مثلا وقتی ماشین لاین خود را تغییر می دهد، حداقل برای مدت کمی فاصله ای در لاین قبلی ایجاد می شود.)
عامل های هدف گرا
دانستن وضعیت کنونی همواره برای تصمیم گیری نمیتواندکافی باشد.برای مثال در یک چهارراه،ماشین می تواند به چپ یا راست و یا مستقیم برود. تصمیم صحیح بستگی به مقصد ماشین دارد. بنابراین همانگونه که عامل نیازمند دانستن وضعیت جاری است، نیازمند اطلاعات هدف ،که ما آن را Goal می نامیم، است. گاهی عامل باید دنباله های طولانی را در نظر بگیرد تا راهی برای دستیابی به هدف پیدا کند. جستجو و برنامه ریزی(Planning) برای یافتن دنباله اعمال برای حصول اهداف عامل استفاده می شوند.
نکته: تصمیم گیری های این عامل با قوانین شرط-عمل متفاوت هستند.
زیرا در قوانین شرط-عمل ، طراح برای حالات متفاوت ، عملی درست را پیش بینی کرده است. عامل هدف گرا بسیار انعطاف پذیر می باشد. اگر باران شروع شود، این عامل می تواند دانش خود را در مورد چگونگی کیفیت ترمز به هنگام سازی کند. این فرآیند به طور خودکار باعث می شود که تمامی رفتار های مربوط برای وفق دادن با شرایط جدید ، تغییر پیدا کنند. درحالی که برای عامل واکنشی ما مجبور به نوشتن دوباره بسیاری از قوانین خواهیم بود. عامل های واکنشی برای زمانی تنها برای یک مقصد کار می کنند، عکس العمل نسبتا خوبی دارند. ولی با تغییر شرایط و یا هدف باید تغییر پیدا کنند. این در حالی است که عامل های هدف گرا برای رسیدن به مقاصد متفاوت و شرایط متفاوت بسیار انعطاف پذیرند و به سادگی به رفتار تازه ای می رسند.
عامل های سودمند
اهداف به تنهایی برای تولید رفتاری با کیفیت بالا کافی نیستند. برای مثال ، دنباله های عملیات زیادی وجود دارند که ماشین را به هدف می رسانند. اما برخی سریع تر ، امن تر ، مطمئن تر یا ارزان تر از دیگران هستند. عامل سودمند بر اساس رضایت عامل در صورت حصول هدف، مقایسه و تصمیم گیری می کند. به دلیل اینکه رضایت صحت علمی زیادی ندارد، بهتر است بگوییم هنگامی که یک وضعیت به دیگری ترجیح داده می شود ، آن گاه آن برای عامل سودمند است.بنابراین سودمندی تابعی است که یک وضعیت را به عددحقیقی تبدیل می کند (که درجه رضایت مربوطه را تعیین می کند). تابع سودمندی امکان تصمیم گیری های منطقی در دو حالت را ایجاد می کند.
·   زمانی که اهداف متناقض وجود دارد،·    تنها برخی از آن ها قابل حصول خواهد بود،·    تابع سودمندی مورد مناسب را تعیین می کند.
·   زمانی که چندین هدف وجود دارند که عامل می تواند آن ها را هدف قرار دهد و هیچ کدام از آن ها با قطعیت قابل حصول نیست،·    تابع سودمندی راهی را ایجاد می کند که در آن احتمال موفقیت در مقابل اهمیت هدف باید مقایسه شوند.
محيط ها
 اعمال بوسيله عامل بر محيط انجام مي شود، كه خود ادراك عامل را مهيا مي سازد. اول، انواع متفاوت محيط ها وچگونگي اثر آنها بر طراحي عامل را تشريح نموده و سپس برنامه هاي محيطي را تشريح خواهد كرد كه مي تواند به عنوان بستر آزمون برنامه هاي عامل مورد استفاده قرار گيرد.


خواص محيط ها
 محيط ها از چند منظر مورد توجه قرار مي گيرند. تمايز هاي پايه به قرار زير ايجاد مي شوند:
قابل دسترسي در مقابل غيرقابل دسترسي
اگر ابزارحس كننده عاملي امكان دسترسي به وضعيت كامل محيط را بدهد،آنگاه مي گوئيم محيط براي عامل قابل دسترسي است.محيط مؤثرقابل دسترسي است.اگرحس گرها تمامي جنبه هايي را كه براي انتخاب عمل لازم است شناسايي كنند. محيط قابل دسترسي راحت است زيرا عامل نيازمند دستكاري هيچ وضعيت داخلي براي حفظ دنيا را نخواهد داشت.
قطعي در مقابل غير قطعي
اگروضعيت بعدي محيط به وسيله وضعيت كنوني و اعمالي كه با عامل انتخاب گردد، تعيين شود،مي گوئيم محيط قطعي است. به طور كلي، عامل نبايد درباره عدم قطعيت در محيط قطعي وقابل دسترسي نگران باشد. اگر محيط قابل دسترسي نباشد، ممكن است غير قطعي به نظر برسد. اگر محيط پيچيده باشد اين مطلب به طور اخص صحيح است،  كه نگهداري تمامي جنبه هاي غيرقابل دسترسي را دشوار مي سازد. بنابراين، بهتر است به قطعي يا غير قطعي بودن محيط از ديدگاه عامل نگاه كنيم.
اپيزوديك در مقابل غير اپيزوديك
در محيط اپيزوديك(episodic)، تجربه عامل به اپيزود هايي تقسيم مي گردد. هر اپيزود شامل درك و عمل عامل است.كيفيت اعمال ان تنها به خود اپيزود وابسته است، زيرا اپيزود هاي بعدي وابسته به اعمالي كه در اپيزود هاي قبلي صورت مي گيرد نيستند. محيط هاي اپيزودي بسيار ساده ترند زيرا عامل نبايد به جلو تر فكر كند.
ايستا در مقابل پويا
اگر محيط درحين سنجيدن عامل تغيير كند، مي گوئيم محيط براي عامل پويا است، در غير اين صورت پويا است. محيط هاي ايستا براي كار ساده هستند زيرا عامل نيازمند نگاه كردن به دنيا درحين تصميم گيري عملي نداشته و همچنين در مورد گذرزمان نيز نگران نمي باشد. اگر محيط با گذر زمان تغيير نيابد اما امتياز كارايي تغيير كند، مي گوئيم محيط نيمه پويا (semidynamic ) است.
گسسته در مقابل پيوسته
اگر تعداد محدود و مجزا از ادراك و اعمال بوضوح تعريف شده باشد، مي گوئيم محيط گسسته است. بازي شطرنج گسسته است، تعداد ثابتي در هر نوبت بازي وجود دارد. رانندگي تاكسي پيوسته است، سرعت و محل تاكسي و ديگر مشخصات خودرو در بازده مقادير پيوسته تغيير مي كنند. مشاهده خواهيم كرد كه انواع متفاوت محيط ها نياز مند برنامه هاي عامل تا حدودي متفاوت هستند تا قادر به عملكرد كارا باشند. بعداً روشن خواهد شد كه سخت ترين حالت، همانطور كه شما ممكن است حدس زده باشيد، غير قابل دسترسي، غير اپيزوديك، پويا و پيوسته است. همچنين خواهيم ديد كه اكثريت وضعيت هاي واقعي چنان پيچيده هستند كه اگرواقعاً قطعي باشند، براي اهداف عملي، غير قطعي در نظر گرفته مي شود.
برنامه محيط
شبيه ساز يك يا چند عامل را به عنوان ورودي گرفته و بگونه اي عمل مي كند كه هر عامل ادراك درست و نتيجه بازگشتي عمل خود را بدست آورد. سپس شبيه ساز محيط را بر اساس اعمال و احتمالاً ديگر فرايند هاي پوياي محيط كه به عنوان عامل ها در نظر گرفته نمي شوند(مثل باران)، بهنگام مي سازد. بنابراين محيط با وضعيت آغازين و تابع بهنگام سازي تعريف مي گردد. البته، عاملي كه در شبيه ساز كار مي كند بايد قادر به كار كردن در محيط واقعي باشد كه همان انواع ادراك را ايجاد نموده و همان انواع اعمال را قبول كند
به طور كلي، ملاك كارايي وابسته به كل دنباله وضعيت هاي محيط است كه در حين عمل برنامه توليد مي گردد. معمولاً، ملاك كارايي با يك تجمع ساده مثل جمع، ميانگين يا حداكثر كار مي كند. براي مثال، اگر ملاك كارايي براي عامل vaccum-cleaning  جئع كل زباله هايي باشد كه در يك شيفت كاري تميز كرده باشد، scores تنها مقدار زباله تميز شده تا كنون را نگهداري مي كند. RUN-EVAL - ENVIRONMENT ملاك كارايي براي محيط واحدي برمي گرداند كه به وسيله وضعيت آغازين واحد وتابع بهنگام سازي ويژه تعريف مي گردد. معمولاًعامل براي كار در يك دسته محيط (environment class) طراحي شده است، مجموعه جامعي ازانواع محيط ها. براي مثال،ما برنامه شطرنج را براي بازي در رقابت با رقباي متفاوت ماشيني و انساني طراحي ميجكنيم. اگرآن را براي يك رقيب واحدطراحي كنيم،ممكن است قادربه استفاده ازضعف خاص آن رقيب باشيم، اما اين طرح نمي تواند برنامه خوبي براي نرم افزار بازي عمومي باشد.به بيان دقيق تر،براي اندازه گيري كارايي يك عامل،نيازمندتوليد كننده محيطي هستيم كه محيط هاي خاص (با احتمالات كلي) را براي اجراي عامل انتخاب كند سپس ما علاقه مند به ميزان كارايي متوسط عامل بر روي كلاس محيط هستيم.
يك اشتباه رايج بين دو مفهوم متغير وضعيت درمحيط شبيه ساز و متغير در خود عامل (مراجعه شود به REFLEX-AGENT-WITH-STATE) ممكن است روي دهد. به عنوان برنامه نويسي كه هر دو محيط شبيه ساز و عامل را پياده سازي مي كند، اغوا برانگيز خواهد بود كه عانل قادر به دسترسي متغير وضعيت شبيه ساز محيط باشد. اين فريفتگي بايد به هر قيمتي سركوب شود! نسخه عامل وضعيت تنها بايد از روي ادراك آن ساخته شود، بدون آنكه دسترسي به اطلاعات كامل وضعيت داشته باشد.
مذاكره بين عاملها
در تعريف مذاكره آمده است:
 ” نوعي از تصميم گيري كه در آن دو يا چند طرف مشتركا و با هدف رسيدن به يك اجماع به دنبال يك راه حل احتمالی مي گردند“
بدین ترتیب،  دلیل اینکه یک مذاکره اتفاق می افتد چنین بیان شده است :
"مذاکره به یکی از دو دلیل ذیل رخ می دهد :
1-برای ایجاد چیز جدیدی که هیچکدام از طرفین نمی توانند آن را به تنهایی بسازند.
2-برای حل مساله یا مشاجره بین طرفین"
با این تعاریف عمومی از مذاکره می توان مذاکره را با توجه به دیدگاههای مختلف تعریف نمود :

-در تئوری بازیهاو حراجها : دراین تئوری مذاکره را معادل معامله در نظرگرفته اند و آن راچنین تعریف می کنند : "بوسیله معامله ما مذاکره بین دو یا چند طرف را در مورد یک همکاری احتمالی را در نظر می گیریم که شامل مبادله ، استخدام .... و نظایر آن می شود "
-در تحلیل های تصمیم گیری و مذاکره : یک تعریف در این دیدگاه چنین است :" مذاکره نوعی تصمیم گیری است که دو یا چند عامل به صورت فعال که خود نمی توانند به صورت مستقل تصمیم بگیرند ، در آن شرکت دارند و بنابراین باید بپذیرند که روی این تصمیم با یکدیگر مصالحه کنند."
در این دیدگاه مشخصات عمومی یک مذاکره چنین آمده است:
1-در مذاکره دو یا چند طرف شرکت می کنند. این طرفین می توانند افراد مستقل، گروهها و با سازمانها باشند.
2-بین علاقه های دو یا چند طرف یک تضاد وجود دارد. بدین معنی که چیزی که یکی می خواهد لزوما جیزی نیست که دیگری نیز بخواهد و طرفین بایستی به دنبال راه حلی بگردند که این تضاد را برطرف کنند.
3- طرفین مذاکره می کنند چون آنها فکر می کنند می توانند از شکلی از تاثیر استفاده کنند تا معامله بهتری نسبت به زمانی که به سادگی هر چیزی که طرف مقابل داوطلبانه به آنها می دهد، قبول کنند، داشته باشند.
4-طرفین مذاکره حداقل برای یک لحظه ترجیح می دهند که دنبال یک توافق جستجو کنند تا اینکه آشکار مبارزه کنند، تسلیم طرف مقابل شوند، به طور همیشگی قرار داد را فسخ کنند، یا بحث خود را به حدی بالاتری از اقتدار خود برای حل آن ببرند. مذاکره زمانی رخ می دهد که هیچ سیستم و هیچ مجموعه قواعد یا روالهای مشخص ثابت برای رفع اختلاف وجود نداشته باشد.
5-زمانی که مذاکره می کنیم ما فرض می کنیم که می دهیم و می گیریم.
6-مذاکره موفق شامل مدیریت نامحسوسها به همان خوبی محسوسات است (برای مثال قیمت یا عبارات توافق)"
-تحقیقات سیستم های اطلاعاتی : و در این دیدگاه : "فرآیند مذاکره می تواند در شکل های زیادی صورت گیرد، از یک معامله غیرساختیافته بین دو طرف تا یک محیط بازار سریع از مبادلات سهام تا تمامی روال های حراج"
همچنین تعریف دیگری که محدود به عاملهای خودمختار نرم افزاری است ارائه شده است :"مذاکره در تجارت الکترونیک به عنوان پردازشی تعریف می شود که دو یا چند طرف به صورت چندجانبه و با استفاده از تکنیک ها و ابزارهای تجارت الکترونیک برای بدست آوردن سود متقابل به داد و ستد منابع می پردازند. [...] پردازشی که در آن دو عامل نرم افزاری هوشمند روی یک راه حل به صورت الکترونیکی مذاکره می کنند و سپس نتیجه را برای مدیر خود آماده می کنند."
-تحقیقات هوش مصنوعی :به جز تعریفی که در ابتدا آورده شد، تعریف دیگری که تمرکز به "مذاکره خودکار " در زمینه هوش مصنوعی توزیع شده دارد چنین است : در مذاکره خودکار ، عاملهای محاسباتی قراردادهایی را به عنوان نمایند طرفین دنیای واقعی خود پیدا و آماده می کنند.این خودکاری زمان مذاکره انسانی را ذخیره می کند و عاملهای محاسباتی اغلب در دادوستد های ترکیبی و باتنظیمات پیچیده سوق الجیشی بهترعمل می کنند."
و نیز در یک چشم انداز تکاملی محاسباتی :"مذاکره یک فرآیند جستجو است . برای مثال دو بازیکن ، معامله جامع را می توان به شکل دو مذاکره کننده که مشترکا یک فضای چندبعدی را جستجو می کنند و سپس روی یک نقطه یکتا در فضا توافق می کنند مشاهده کرد. "
-‌ سيستم هاي چند عامله : و بدین ترتیب می توان در این دیدگاه مذاکره را چنین تعریف کرد : ”مذاكره پردازشي است كه گروهي از عامل ها در يك موضوع مشخص به يك توافق قابل قبول براي همه دست يابند“.
مذاكره همواره به عنوان يكي از بخش هاي اساسي سيستم هاي چند عامله اي (Multi Agent System) كه شامل عامل هاي خودمختار ، تصميم گيرنده و داراي منافع شخصي مي باشند مطرح مي شود و با توجه به تعريف هر مساله، طراحي روشي كارا براي مذاكره بين عاملها در آن اهميت ويژه اي دارد.
همانگونه که در داد و ستدها، قراردادها و روابط انسانی (نظیر آنچه در مذاکرات اتمی ایران مشهود است) مذاکره مهم ، حساس و پیچیده است، در سیستمهای چند عامله نیز این مطلب به همین گونه است.

خسته نباشید .

+ نوشته شده در  چهارشنبه دهم مهر 1387ساعت 4:35  توسط محمد رضا  | 

تکنیک ها و زبان های برنامه نویسی هوش مصنوعی

ما در عصري زندگي مي كنيم كه جامعه شناسان آن را عصر انقلاب كامپيوتر نام نهاده اند و مانند هر انقلاب واقعي ديگر، انقلابي است گسترده و فراگير و تأثير پايداري برجامعه خواهد داشت.

اين انقلاب در اقتصاد امروز و نظم جامعه، به همان ميزان  انقلاب صنعتي در قرن 19 تأثير دارداين تحولات قادر است الگوي فكري و فرم زندگي هر فرد را تغيير دهد.

انقلاب كامپيوتر توان ذهني ما را گسترش مي دهد.

عملكرد اولية برنامه نويسي هوش مصنوعي (AI) ايجاد ساختار كنترلي مورد لزوم براي محاسبه سمبوليك است خصوصيات اين ساختارها به مقدار زيادي موجب تشخيص خصوصياتي مي شود كه يك زبان كاربردي مي بايستي فراهم كند.

در اين مقدمه به يك سري خصوصيات مورد نظر براي زبان برنامه نويسي سمبوليك مي پردازيم و زبانهاي برنامه نويسي LISP و PROLOG را معرفي خواهيم كرد.

اين دو زبان علاوه بر اين كه از مهمترين زبانهاي مورد استفاده در هوش مصنوعي هستند، خصوصيات semantic و syntactic آنها نيز باعث شده كه آنها شيوه ها و راه حل هاي قوي براي حل مسئله ارئه كنند.

تأثير قابل توجه اين زبانها بر روي توسعه AI از جمله توانائي آنها به عنوان «ابزارهاي فكر كردن» مي باشد كه از جمله نقاط قوت آنها در زبانهاي برنامه نويسي مي باشد.

همان طور كه هوش مصنوعي مراحل رشد خود را طي مي كند زبانهاي LISP و PROLOG بيشتر مطرح مي شوند.

اين زبانها كار خود را در محدودة توسعه و prototype سازي سيستم هاي AI در صنعت و دانشگاهها دنبال مي كنند.

اطلاعات در مورد اين زبانها به عنوان بخشي از مهارت هر برنامه نويس AI مي باشد ما به بررسي اين دو زبان در هوش مصنوعي مي پردازيم.

آنــــچه را كـــه نمي دانيم موجب دردسر و گرفتاري ما نخواهد شد، بلكه دردسرها از دانسته ها سرچشمه مي گيرند.
W.ROGERS


 

زبان ، شناخت و خلاصه پردازي

توانايي شكل گيري خلاصه برداري از تجربيات از توانمند ترين و اساسي ترين توانائي هاي ذهن انسان است خلاصه پردازي به ما اين اجازه را مي دهد كه به فهم جزئيات از يك محدوده ي كلي اطلاعات مربوط به يك خصوصيت كلي سازمان و رفتار برسيم . اين خلاصه ها به ما اجازه شناخت و درك كامل موارد دريافت شده در حوزه خاص را مي دهند . اگر ما وارد يك خانه شويم كه به خوبي ساخته شده باشد ، راههاي خود را به اطراف پيدا خواهيم كرد . ساختار خصوصيات اطاق نشيمن ، اطاق خواب ،‌آشپزخانه و حمام عموماً از ويژگيهاي يك مدل خانة استاندارد مي باشد .

خلاصه پردازي به ما حس شناخت خانه هاي متفاوت را مي دهد . يك تصوير ممكن است بياني قوي تر از هزاران كلمه داشته باشد ، اما يك خلاصه مشخصاً بيان كنندة خصوصيات مهم يك كليت از نوع تصوير است .

وقتي كه ما به تئوري براي توصيف كلاس هاي يك پديده مي پردازيم ، خصوصيات و ويژگيهاي كمي و كيفي مربوط به كلاس از كل جزئيات خلاصه مي شود .

كه اعضاء به خصوص خود را مشخص مي كند . اين كاهش جزئيات به وسيله قدرت توصيف و پيش بيني يك نظريه ارزشمند جبران مي شود .

خلاصه سازي يكي از ابزارهاي اساسي شناخت و ارزيابي كليت هاي جهان اطراف ما و همچنين ساختار ذهني ما است . در حقيقت اين پروسه به طور مداوم براساس دانش و اطلاعات صورت مي گيرد . دانش و اطلاعا نيز در لايه ها و بخش هايي از خلاصه پردازي ساخته مي شود كه از مكانيسم هايي كه ساختار را فشرده ساخته و از حس اوليه به سمت يك سري تئوري هاي علمي سوق داده مي شود و در نهايت بيشتر اين ايده ها دربارة ايده هاي ديگر و نشأت گرفته از آنها مي باشد .

خلاصه پردازي طبقه بندي شده (سلسله مراتبي ) :

ساختار و سازمان آزمايش و تجربه در ارتباط با توصيفات كلاس هاي خلاصه سازي يكي از ابزارهاي شناخت رفتار و ساختار سيستم هاي مركب است كه شامل برنامه هاي كامپيوتر مي شوند .

همانند رفتار يك حيوان كه ممكن است بدون توجه به فيزيولوژي سيستم عصبي نهفته در پشت آن مورد مطالعه قرار گيرد .

يك الگوريتم داراي خصوصيات مربوط به خود مي باشد كه كاملاً آن را از برنامه اي كه آن را به كار مي برد جدا مي سازد .

به عنوان مثال دو نوع كاربر متفاوت جستجوي باينري را در نظر بگيريد .

يكي از آنها يعني Fortran از محاسبات و طبقه بندي استفاده مي كند و ديگري يعني Ctt از Pointer استفاده مي كند كه بتواند در جستجوي درون شاخه هاي binary كاربرد داشته باشد .

اگر دقيق تر نگاه كنيم اين برنامه ها مثل هم مي باشند چون اگر جز اين باشد كاربردهاي آنها نيز تفاوت خواهد شد . جداسازي الگوريتم از كه مورد استفاده در كاربرد آن يكي از نمونه هاي خلاصه سازي سلسله مراتبي مي باشد .

Allen   New ell بين سطح دانش و سطح نشانه ها براي توصيف يك سيستم هوشمند تفاوت قائل شده است.

سطح نشانه ها همراه سازماندهي به خصوصي مورد توجه قرار گرفته كه براي بيان اطلاعات حل مسئله مورد استفاده قرار مي گيرد. بحث مربوط به توجه به منطق به عنوان يك زبان يك نمونه از مواردي است كه به سطح نشانه پرداخته است.

علاوه بر سطح نشانه سطح دانش است كه توجه آن به مقدار و محتوي اطلاعات يك برنامه و شيوه استفاده از آن اطلاعات مي باشد.

اين نوع تمايز در ساختار و معماري سيستم هايي كه بر اساس دانش و اطلاعات و سبك توسعه اي كه آن را پشتيباني مي كتد منعكس مي گردد.

به دليل اينكه كاربرها برنامه ها را در قالب دانش و توانايي خودشان مي شناسند بنابراين حائز اهميت است كه برنامه هاي AI داراي يك سطح خصوصيات اطلاعاتي باشند.

جداسازي اصل دانش و اطلاعات از ساختار كنترل اين نظريه را آشكار مي سازد و توسعه رفتار سطح دانش را ساده مي سازد.

همانند اين نيز سطح نشانه اي يك زبان توصيفي را تشريح مي كند كه شبيه قوانين و روشهاي توليد يا منطق براساس دانش و اطلاعات مي باشد.

جداسازي آن از سطح و دانش و اطلاعات نه برنامه نويس اين اجازه را مي دهد كه به سمت خلاصه پردازي ت،ثير پذيري و راحتي برنامه نويسي سوق پيدا كندكه در ارتباط با رفتار و عملكرد بالاي برنامه نمي باشد.

كاربرد بيان سطح نشانه اي شامل يك سطح دوره پائين تر از ساختار برنامه مي شود و بيانگر يك سري ملاحظات طراحي اضافي مي شود.

اهميت نظريه چند مرحله اي نسبت به طراحي سيستم نمي تواند بيش از اين مورد توجه قراار گيرد.

يعني اينكه به برنامه نويس اجازه مي دهد كه با پيچيدگي نهفته شده در سطوح پائين تر خود را درگير نكند و توجه و تاكيدش بر روي منابع مناسب با سطح فعلي خلاصه پردازي كند.

همچنين موجب مي شود كه اصول تئوري هوش مصنوعي عاري از كاربردهاي خاص يا زبان برنامه نويسي باشد . اين همچنين به ما قدرت توصيف يك كاربرد را مي دهد و تاثير گذاري خود را بر روي ماشين ديگر اثبات مي كند بدون اينكه بر رفتارش در سطوح بالاتر تاثير بگذارد .




سطح اطلاعات توصيف كننده توانائي هاي يك سيستم هوشمند است. محتوي دانش و اطلاعات مستقل از شكل پذيري مورد استفاده براي بيان آن است به همان اندازه كه زبان بيان كاملا مؤثر مي باشد .

توجه به سطح دانش شامل سؤالاتي از اين قبيل است:

از اين سيستم چه چيزي ساخته خواهد شد؟ چه اشيا و چه ارتباطي در آن محدوده مؤثر و مفيد است ؟ چگونه يك اطلاعات جديد به سيستم اضافه مي گردد؟

آيا واقعيات در طي زمان تغيير مي كنند؟ چگونه و چطور سيستم نيازمند است كه دلائل اطلاعات خود را ثابت كند؟ آيا محدوده ارتباطي داراي يك طبقه بندي درست و شناخته شده است؟

آيا اين محدوده شامل يك سري اطلاعات نادرست و غير ممكن است؟

تجزيه و تحليل دقيق در اين سطح يك گام مبهم در طراحي كلي ساختار يك برنامه مي باشد.

در سطح نشانه تصميمات درباره ساختارها صورت مي گيرد كه براي بيان و ايجاد دانش مورد استفادده قرار مي گيرند. انتخاب يك زبان براي بيان يك مورد مربوط به سطح نشانه مي باشد.

منطق يكي از چندين نوع اشكال است كه اصولا در حال حاضر براي بيان دانش و اطلاعات در دسترس مي باشد.

زبان بيان نه تنها مي بايستي توانايي بيان اطلاعات مورد لزوم براي كاربر را داشته باشد بلكه مي بايستي خلاصه و قابل توصيف و داراي كاربرد مؤثر باشد و مي بايستي به برنامه نويس براي دستيابي و سازماندهي اصل و اساس اطلاعات كمك كند.

وقتي كه بين سطح اطلاعات و سطح نشانه يك برنامه تمايز به وجود آمد ما مي توانيم بين سطح نشانه و الگوريتم و ساختمان داده ها مورد استفاده براي كاربرد آن نيز تمايز قايل شويم. به عنوان مثال بدون تاثيرگذاري رفتار و عملكرد يك تحليل گر برنامه كه اساس منطقي داشته باشد مي بايستي تاثير ناپذير از انتخاب بين يك سري جزئيات و يك مجموعه و دسته بايزي باشد تا بتواند يك جدول مربوط به نشانه ها را به كار برد.

اين تصميمات كاربردي هستند و مي بايستي در سطح نشانه قابل رؤيت باشند . بسياري از الگوريتم و ساختمان داده ها در كاربرد بيان زبان  AI به كار مي روند كه از روشهاي معمول علم كامپيوتر مي باشند مثل شاخه ها و جداول بايزي.

ديگر موارد در رابطه با AI بسيار تخصصي هستند و به گونه يك كه مستعار بيان مي شوند كه از طريق متن و بخش هاي مربوط به LISP و PROLOG  بيان مي شوند .

در سطح پائين تر مربوط به الگوريتم و ساختمان داده ها ( سطح زبان ) واقع شده است در اين جا ست كه زبان كاربردي براي برنامه مشخص مي شود .

با اين حال سبك برنامه نويسي مطلوب احتياج به اين دارد كه ما يك خلاصه داده اي بسازيم كه بين خصوصيات ويژه يك زبان برنامه نويسي و لايه هاي بالاي آن قرار گيرد . نيازهاي منحصر به فرد برنامه نويسي سطح نشانه اي تأثير به روي طراحي و استفاده از زبانهاي برنامه نويسي AI ايجاد مي كند . علاوه بر اين طراحي زبان مي بايستي در برگيرنده و مطابق با ساختار آن كه بر گرفته از سطوح پائين تر ساختمان كامپيوتر كه شامل زبان اسمبلي و سيستم عامل و دستور العملهاي ماشين و سطوح سخت افزار ي باشد .

و محدوديت هاي فيزيكي كامپيوتر مي بايستي بر روي منابعي همچون حافظه و سرعت پردازشگر تأ كيد كند . روش هاي PROLOG  , LISP در جهت مستعاذل كردن نيازهاي سطح نشانه  و نيازهاي نهفته در ساختار هر دو منبع مورد استفاده مي باشند و هم چنين يك هدف هوشمند و ذهني با اهميت مي باشند . در دنباله ما از ساختارهاي سطح اطلاعات در محيطهاي برنامه نويسي بر روي يك زبان كاربردي صحبت خواهيم كرد و سپس به مصزفي زبانهاي عمده AI يعني PROLOG , LISP مي پردازيم .

خصوصيات مطلوب يك زبان AI

يكي از خصوصيات و ويژگيهاي مهم خلاصه سازي سلسله مراتبي در ساختار برنامه غير حساس بودن سطوح بالاتر نهفته در كاربرد زبان مي باشد .

اين مشاهده در عمل سنجيده مي شود كه همراه با سيستم هاي موفق دانش مدار مي باشد كه در زبانهاي برنامه نويسي مختلفي مثل Pascal ,  C , Ctt , Java , PROLOG , LISP  و حتي Fortran به كار مي رود .

برنامه هاي مختلفي اصولاً در PROLOG   , LISP و سپس در C به كار گرفته مي شوند تا بتواند تاثيرپذيري و انتقال پذيري بهتر ايجاد كنند. در هر دوي اين موارد رفتار و عملكرد در سطح نشانه به طور قطع بي اثر مي باشد.

با اين حال محدوديتهاي خلاصه سازي در يك برنامه جامع بيان مي شود كه كامل نمي باشد . ساختار سطح بالاتر باعث ايجاد ساختارهاي قوي بر روي لايه هاي زيرين مي شود و نياز به اين دارد كه برنامه نويسي AI بر روي سطح نشانه اي قرار گيرد كه در سطح زبان تكرار مي شوند.

به عنوان مثال ساختارهاي اطلاعاتي مورد لزوم براي ادغام سمبوليك خود را مقيد به اشكال تكراري مثل فلش ها و ليست ها نمي كنند.

اهداف و پيش بيني هاي منطقي ابزارهاي كاربردي طبيعي تر و انعطاف پذيرتر  خواهند بود.

علاوه بر اين به دليل مشكلات موجود در بسياري از مسائل مربوط به AI اغلب توسعه را قبل از اينكه يك شناخت كامل از نهايت فرم برنامه داشته باشيم شروع مي كنيم.

توسعه AI لزوما در طبيعت به صورت كشف و تجزيه و آزمايش است.

اين نياز هم چنين وابسته به يك زبان و ابزارهايي است كه بايد فراهم ساخت . يك زبان نه تنها مي بايستي متناسب با كاربرد ساختارهاي سطح بالا باشد بلكه مي بايستي يك ابزار مناسب براي انتقال كل چرخه نرم افزار از آناليز و تجزيه و تحليل تا حصول برنامه باشد.

در پنــج زير گـــروه بعدي ما به صورت جزئي و كامل در مورد نيازهايي كه ساختارهاي سطح نشانه اي برنامه هاي AI  كه بر روي كاربرد زبان دارند بحث مي كنيم.

اين موارد عبارتند از :
1.   پشتيباني از محاسبه سمبوليك

2.   انعطاف پذيري كنترل

3.   پشتيباني از متدولوژي و روش هاي برنامه نويسي جستجويي

4.   پويايي

5.   مستنند سازي خوب و  واضح

`پشتيباني از محاسبات سمبوليك

گرچه روش هاي زيادي براي سازماندهي اطلاعات در يك سطح نشانه وجود دارد . ولي تمامي آنها نهايتاً به عنوان عملكردهايي بر روي نشانه ها به كار مي روند .

اين روش در تئوري نشانه هاي آقاي Simon , Newell آمده است . تئوري هاي سيستم فيزيكي نشانه نياز اصلي براي زبان برنامه نويسي است كه كاربردهاي يك سري از عمليات سمبوليك را آسان مي كند .

حتي شبكه هاي عصبي و ديگر شكل هاي ضروري محاسبه مي بايستي شامل اطلاعات سمبوليك در وروديها و خروجي هايشان باشند . انواع كاربردها و اطلاعات دادهاي عددي تاكيد شان بر روي زبانهاي برنامه نويسي معمول است كه براي كاربردهاي جستجوي الگوريتمي يا بيان زبان AI مناسب نمي باشند.

علاوه بر اين يك زبان AI مي بايستي ساختار ايجاد نشانه هاي اوليه را ساده سازد و بر روي آنها كار كند. اين يكي از مهمترين نيازهاي يك زبان برنامه نويسي AI مي باشد.

محاسبات و پيش بيني يكي از قوي ترين و عمومي ترين ابزارهاي ايجاد ساختار كيفي يك محدوده از مسئله مي باشد.

خصوصيات بارز يك محدوده ممكن است به گونه يك سري واقعيات منطقي بيان شود. از طريق استفاده از متغيرها امكان ايجاد واقعيات كلي درابره ارتباط بين اهداف در يك محدوده به وجود مي آيد.

PROLOG يك زبان برنامه نويسي كلي است كه بر اساس پيش بيني محاسباتي است.

به عنوان يك كاربرد رسمي منطق PROLOG بعضي اوقات مستقيما به عنوان يك زبان در سطح نشانه مورد استفاده قرار مي گيرد.

با اين حال قدرت واقعي آن به عنوان يك زبان براي كاربرد دقيق تر و كامل همانند چهارچوب ها و شبكه ها در يك روش سيستماتيك و فشرده مي باشد بسياري از ساختارهاي سطح نشانه اي به سادگي با استفاده از ساختارهاي سطح بالاي PROLOG ساخته مي شوند.

PROLOG ممكن است براي كاربرد در جستجوي الگوريتم ها يك سيستم محافظ و يك شبكه سمانتيكي مورد استفاده قرار گيرد.

يك ابزار مهم ديگر براي ساخت ساختارهاي نشانه ليست مي باشد يك ليست شامل يك سري عناصر مي شود كه در آن هر عنصر ممكن است حتي يك ليست و يك نشانه باشد.

چند نمونه از ليست ها با استفاده از ساختار برنامه نويسي LISP عبارتند از :

(اين يك ليست است)

(اين هست) (يك ليست) (از ليست ها)

(زمانها (بعلاوه 13)(بعلاوه 23) )

((123)(456)(789))

توجه داشته باشيم كه اينها نمونه هايي مي باشند كه شامل ليستهاي درون ليست هاي ديگر مي شود اين موجب مي شود كه ارتباطات ساختاري ايجاد گردد. قدرت ليست ها عمدتا در نتيجه توانايي بيان هر نوع ساختار نشانه اي بدون در نظر گرفتن پيچيدگي يا عملكردهايي كه مي بايد از آن پشتيباني كند مي باشد.

اين شامل شاخه ها گراف هاي اوليه يك سري مشخصه هاي منطقي جهت ها اصول اطلاعاتي كليدي مي شود. به طور خلاصه هر نوع ساختار ممكن است بر اساس يك تركيب مناسب متشكل از ليست ها و عملكردهاي واقع شده بر روي آنها حاصل شوند.

ليست ها يك سري بلوك هاي مهم مي باشند كه PROLOG , LASP كه موجب مي شود كه كاربر را با عناصر اطلاعاتي و عملياتي براي دستيابي و تاكيد بر آنها در درون يك سري ساختارهاي پيچيده مهيا سازد. در حاليكه PROLOG مستقيما به محاسبات پيش بيني شده وابسته است و شامل يك سري ليست به عنوان ابزارهاي بيان مي شود.

LISP ليست را به عنوان اصول انواع داده ها و برنامه ها مورد استفاده قرار مي دهد. تمامي ساختارهاي LISP از ليست ها ساخته مي شوند و زبان فراهم كردن يك سري ابزارهاي قوي براي تركيب اينها (ساختارها) را به عهده دارد و توصيف كننده عمليات جديد براي ايجاد توسعه و تغيير آنها است. يك شكل كردن ساختار LISP   و توانائي توسعه آن توصيف هر نوع زباني را براي ساختار آن ساده مي سازد . بوسيله پرداختن به نظريه جمع آوري اطلاعات فشرده برنامه نويس LISP مي تواند ساختارهاي نشانه را توصيف كند و عمليات مورد نياز هر نوع شكل گيري سطح بالا شامل كنترل كننده هاي جستجو حل كننده هاي تئوريهاي منطقي و ديگر اظهارات سطح بالا مي باشد.

 

انعطاف پذير بودن كنترل:

يكي از مشخصه هاي اساسي رفتار هوشمند قابليت انعطاف پذيري آن مي باشد . در حقيقت مشكل بتوان تصور كرد كه هوشمندي مي تواند از طريق توسعه گام به گام مراحل ثابت كه بوسيله برنامه هاي معمول كامپيوتري نشان داده مي شود حاصل شود. خوشبختانه اين تنها راه سازماندهي محاسبات نمي باشد.

يكي از مهمترين و در عين حال قديمي ترين نمونه هاي مربوط به ساخت يك برنامه AI سيستم توليد مي باشد.

در سيستم توليدي برنامه شامل يك سري قوانين مي شود. در منطق اطلاعات اين قوانين به گونه اي تنظيم مي شود كه بوسيله الگوي اطلاعات در يك نوع مسئله داده شده قابل تشخيص باشد.

قوانين توليد مي تواند به هر گونه كه پاسخگوي آ“ موقعيت خاص باشد برنامه ريزي شود. بدين طريق يك سيستم تولسد مي تواند ايجاد كننده انعطاف پذيري و ارتباط لازم براي رفتار هوشمند باشد.

بنــــابراين AI از يك تعداد متفاوتي ساختارهاي كنترلي استفاده مي كند كه بسياري از انها مرتبط با سيستم هاي توليد مي باشند و همه آنها تابع الگو مي باشند . كنترل الگويي موجب مي شود كه اطلاعات با توجه به نياز به خصوصيات يك نوع مسئله خاص به كار گرفته شود. الگوي الگوريتم هاي انطباقي مثل به صورت واحد در آوردن باعث مي شود كه بتواند تشخيص دهد كه چه موقع خصوصيات يك مسئله منطبق با يك برنامه اطلاعاتي است كه بر اين اساس اطلاعات لازم براي كاربرد در مسئله را انتخاب مي كند.

بنابراين حائز اهميت مي باشد كه يك زبان AI بتواند آن را مستقيما ايجاد كند و يا توسعه الگوي كنترل را ساده سازد.

در PROLOG يكي كردن و جستجوي الگوريتم ها در درون خود زمان ساخته مي شوند و قلب و اساس PROLOG را تشكيل مي دهند .

با استفاده از اين يكي كردن الگوريتم ها به سادگي مي توان هر نوع الگوي ساختاري كنترلي را ايجاد كرد .

LISP مستقيماً الگوي انطبقي ايجاد نمي كند اما محاسبات سمبوليك آن موجب گسترش ساده مربوط به زبان ساده ساختار الگوي منطق شونده و توصيف كننده اوليه ساختار مي شود.

يكي از مزاياي اين نظريه اين است كه الگوي تطبيق و كنترل ساختارهاي همراه با آن ممكن است به سادگي براي تطبيق با نيازهاي يك مسئله بخصوص خود را منطبق سازد.

اغلــــب نظـــريات فعلي در ارتباط با هوش مصنوعي همانند شبكه هاي عصبي عوامل تنظيم كننده و ديگر فرم هاي محاسبات ضروري ممكن است اجتناب از عمليات بر روي ساختارهاي سمبوليك باشد.

ولي آنها نياز به يك كنترل انعطاف پذير را نفي نمي كنند. شبكه هاي عصبي مي بايستي توانايي حركتي شكل گيري خودشان را داشته باشند . عوامل متكي به پيام هستند كه از بين ماحوبهاي مختلف مي گذرد.

الگوريتم هاي ژنتيكي نياز به ايجاد واحد هاي شمارش به عنوان جمعيت كانديد شده حل مسئله دارند. توانايي زبان هاي AI براي ايجاد مشخصه تركيب ساده طبقه بندي اتوماتيك حافظه امكان اطلاع رساني ساده ايجاد متغيرها و روش هاي پويا و شكل هاي قوي ايجاد برنامه مثل يك برنامه شيء گرا موجب خواهد شد كه آنها را به سمت استفاده گسترده در كاربرد اين ابزارهاي جديدتر AI سوق دهد.

 

پشتيباني از روش هاي برنامه نويسي جستجويي.

مسائلي كه AI به آن مرتبط مي باشد هميشه پاسخگوي يك چنين نظريه هاي مهندسي نرم افزار استاندارد كه شامل طراحي كامل و پردازش موفقيت آميز و توسعه برنامه از خصوصيات و ويژگيهاي دقيق است نمي تواند باشد. به دليل طبيعت و ذات و نوع بخصوص AI  به ندرت اين احتمال به وجود مي آيد كه بتوان ويژگيهاي درست و كاملي از شكل نهايي يك برنامه AI قبل از ساخت حداقل يك proto type بدست آورد. اغلب موارد شناخت مسئله برنامه مربوط مي شود به حل موارد درگير مسئله از طريق توسعه برنامه . دلايل آن عبارت است از :

1 – بيشتر مسائل AI اصولا مشخصه هاي ضعيفي دارند.

به دليل اينكه پيچيدگي زيادي براي پشتيباني از سطح اطلاعات لازم مي باشد به ندرت احتمال مشاهده يك مسئله و تشخيص كامل بودن نظريه دقيق كه بايد در جايگاه خودش باشد وجود دارد.

بهترين ساختارهاي سطح نشانه اي كه در يك مسئله مورد استفاده قرار گيرند به ندرت در مشخصه هاي سطح دانش قرار مي گيرند. اين نوع پيچيدگي و نامفهومي خود را به روش هاي معمول مربوط به نرم افزارهاي مهندسي مرتبط نمي دانند چون كه در اين نوع برنامه ها لازمه اش اين است كه مشخصه هاي مربوط به توسعه به خصوص مسئله قبل از اينكه مرحله كدبندي آغاز شود شكل مي گيرد.

يك عملكرد منطقي خود ذاتا براي مشخصه ها و خصوصيات معمولش بسيار مشكل تر از عملكرد نوعي طبقه بندي ليست يا ايجاد يك فايل سيستم است . حقيقتا اين به چه معني است؟

به عنوان مثال براي طراحي يك مدار يا بهبود يك بيماري اين به چه معني است؟ چگونه يك انسان ماهر و متخصص اين عمليات ها را شكل مي دهد؟ سطح رضايت بخش ايجاد يك محدوده مسئله داده شده چه چيزي است؟ چه نوع دانش و اطلاعاتي لازم مي باشد؟ چه مشكلاتي ممكن است به دلايل نبود و يا غير واقعي بودن اطلاعات پيش بيايد؟ به دليل جوابهاي   به اين قبيل سؤالات و ديگر سؤالات كه در يك دوره كلي مطرح مي شود و بسيار تخصصي مي باشند و هر وقت اين طور باشد ساختار آن نيز عميق تر و پيچيده تر مي شود به همين نسبت حل آن نيز به دقت بيشتري نياز دارد.

2 – نظرياتي كه براي حل مسائل به آن پراخته مي شود در محدوده بخصوصي قرار مي گيرند.

گر چه چهار چوب هاي كلي براي حل مسائل AI وجود دارد به عنوان مثال سيستم توليد جستجو در زبان دامنه و محدوده هر مسئله نيازمند روش هاي خاص خود مي باشد.

بنابراين راه حل موفقيت آميز مسئله به ندرت به طور كامل براي محدوديتهاي جديد عموميت و كاربرد دارد هر كاربرد تا حدودي يك نوع مسئله جديد مي باشد .

3- ساختارها و اشكال بيان AIبه طور پيوسته بايد توسعه و تجديد شود

توسعه AI يك پروسه تحقيقي مداوم است . توسعه سيستم هاي AI كاربردي در بسياري از روشها بسط و توسعة اين پروسه ها مي باشند . گرچه تجربه عمدتاً به كاربرد زبان كمك مي كند ولي عموماً هيچ جايگزيني براي كاربرد يك ايده و اينكه چگونه عمل مي كند وجود ندارد .

به همين دليل AI   اصولاً به صورت جستجوي است . برنامه اغلب به صورت ماشيني است كه از طريق آن ما مي توانيم دامن مسئله را كشف كنيم و روش هاي حل مسئله را كشف كنيم در حقيقت ابزاري است كه با آن به شناخت مسئله نائل مي شويم .

چالش در برنامه نويسي AI ، پشتيباني برنامه ريزي كشفي است . در بين خصوصياتي كه يك زبان برنامه نويسي بايد ايجاد كند موارد ذيل وجود دارد :
1-   Modularity
2-   قابليت گسترش

3- ساختارهاي سطح بالاي مفيد

4- پشتيباني از Prototype سازي اوليه

 5- قابل خواندن بودن برنامه

6- مترجم ها

7- پشتيباني نرم افزاري براي برنامه نويسي جستجويي

خسته نباشید .

+ نوشته شده در  چهارشنبه دهم مهر 1387ساعت 4:33  توسط محمد رضا  | 

فلسفه و تاریخچه هوش مصنوعی

هدف از مطالعهٔ فلسفهٔ هوش مصنوعی، یافتن رابطهٔ میان ربات‌ها و تفکر، همچنین یافتن پاسخی برای چنین سئوالاتی است:آیا یک ربات توانایی عملکردی هوشمندانه را دارد؟ آیا او نیز، همانند انسان می‌تواند مشکلات را با اندیشیدن برطرف کند؟
آیا ربات میتواند فکر داشته باشد؟ آیا میتواند همان هوشیاری و حالت ذهنی ای که انسان داراست را داشته باشد؟ آیا میتواند حس کند؟
آیا هوش انسان و هوش ربات یکسانند؟ آیا در اصل، ذهن انسان یک رایانه است؟


سه سوال بالا، در واقع بیانگرdivergent interestِِ پژوهشگران حوزهٔ هوش مصنوعی، فیلسوف‌ها و دانشمندان علوم شناختی است.

پاسخ به این سئوالها مستلزم آن است که ما چطور واژه های «هوش» و «هوشیاری» را معنی کنیم، و اینکه بدانیم دقیقاً چه نوع رباتهایی مورد مطالعه قرار داده میشوند.

آیا یک ربات (ماشین) میتواند جلوه‌ای از هوش عمومی باشد؟

آیا ممکن است روزی ماشینی ساخته شود، که همانند بشر تمامی مشکلات را با هوشش از میان بردارد؟ این سوالی است که پژوهشگران حوزهٔ هوش مصنوعی علاقه مندند، پاسخی به آن بدهند. این پاسخ گسترهٔ توانایی ربات‌ها را در آینده مشخص کرده و مسیر پژوهشگران هوش مصنوعی را راهنمایی میکند. این تنها به رفتار ربات‌ها ارتباط داشته و تفکر روانشناسان، دانشمندان علوم شناختی و فیلسوف‌ها را را مورد بررسی قرار نمیدهند. برای پاسخ به این سوال، لزومی ندارد که یک ماشین واقعاً همانطوری که یک انسان فکر میکند، فکر کند یا اینکه ادای فکر کردن را در بیاورد. جایگاه اصلی پژوهشگران هوش مصنوعی، در این جمله که در طرح پیشنهادی Dartmouth Conferences در سال ۱۹۵۶ مطرح شده‌است خلاصه میگردد: هر جنبه‌ای از یادگیری، یا دیگر خصوصیات هوش را میتوان چنان بدقت تشریح کرد که یک ماشین (ربات) بتواند آنرا شبیه سازی کند. بحث و جدل علیه قضیهٔ اصلی باید نشان دهد که بوجود آوردن سامانهٔ پویای هوش مصنوعی امکان ندارد. چرا که در حال حاضر توانایی‌های کامپیوتر‌ها، دارای یک سری محدودیت‌هایی است؛ یا اینکه توانایی‌های شگرفی برای اندیشیدن در ذهن انسان وجود دارد که هنوز، ماشین‌ها (یا شیوه‌هایی که پژوهشگران هوش مصنوعی در این رابطه پیش گرفته‌اند) قادر به پردازش آنها نیستند و بحث در این خصوص باید مهر تاییدی بر غیر عملی بودن این سامانه باشد.

نخستین گام برای پاسخ به این سوال، یافتن معنی درست واژهٔ «هوش» است.
تعریف کلی :
هوش مصنوعی به هوشی که یک ماشین از خود نشان میدهد و یا به دانشی در کامپیوتر که سعی در ایجاد آن دارد گفته میشود. بیشتر نوشته ها و مقاله های مربوط به هوش مصنوعی آن را "دانش شناخت و طراحی مامورهای هوشمند [۱]" تعریف کرده اند. یک مامور هوشمند سیستمی است که با شناخت محیط اطراف خود, شانس موفقیت خود را بالا میبرد.[۲] جان مکارتی که واژه هوش مصنوعی را در سال 1956 استفاده نمود, آن را "دانش و مهندسی ساخت ماشین های هوشمند" تعریف کرده است. تحقیقات و جستجوهایی انجام شده برای رسیدن به ساخت چنین ماشین هایی مرتبط با بسیاری از رشته های دانشیک دیگر میباشد, مانند دانش کامپیوتر, روانشناسی, فلسفه, عصب شناسی, دانش ادراک, تئوری کنترل, احتمالات, بهینه سازی و منطق.

تاریخچه

هوش مصنوعی پیش از بوجود آمدن علوم الکترونیک، توسط فلاسفه و ریاضی دانانی نظیر بول (Boole)[۳] که اقدام به ارائه قوانین و نظریه‌هایی در باب منطق نمودند، مطرح شده بود. در سال ۱۹۴۳، با اختراع رایانه‌های الکترونیکی، هوش مصنوعی، دانشمندان را به چالشی بزرگ فراخواند. بنظر می‌رسید، فناوری در نهایت قادر به شبیه‌سازی رفتارهای هوشمندانه خواهد بود.

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

نام هوش مصنوعی در سال ۱۹۶۵ میلادی به عنوان یک دانش جدید ابداع گردید. البته فعالیت درزمینه این علم از سال ۱۹۶۰ میلادی شروع شده‌بود.(مرجع۱)

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

اين اصطلاح(هوش مصنوعی) برای اولين بار توسط جان مكارتی (John Mccorthy) كه از آن به‌عنوان پدر «علم و دانش توليد ماشينهای هوشمند» یاد می‌شود استفاده شد. با اين عنوان می‌توان به هويت هوشمند يک ابزار مصنوعی اشاره كرد. (ساختهٔ دست بشر، غير طبيعی، مصنوعی)

حال آنكه AI به عنوان يك اصطلاح عمومی پذيرفته شده كه شامل محاسبات هوشمندانه و تركيبی (مركب از مواد مصنوعی) می‌باشد.

از اصطلاح strong and weak AI می‌توان تا حدودی برای معرفی رده‌بندی سيستم‌ها استفاده كرد. AI ها در رشته‌های مشتركی چون علم كامپيوتر، روانشناسی و فلسفه مورد مطالعه قرار می‌گيرند، كه مطابق آن باعث ايجاد يک رفتار هوشمندانه، يادگيری و سازش می‌شود و معمولاً نوع پيشرفتهٔ آن در ماشينها و كامپيوترها استفاده‌ می‌شود.

محققين هوش مصنوعی علاقه‌مند به تولید ماشينی هستند كه دستورات مورد نياز را به صورت هوشمندانه انجام دهد. به عنوان مثال قابلیت كنترل، برنامه‌ريزی و زمان‌بندی، توانايی تشخيص جواب به سوال مصرف كننده،‌دست نويس‌ها، زبان شناسی، سخنرانی و شناسايی چهره را داشته باشد. مطالعه بر روی يک AI دارد به يک رشتهٔ مهندسی تبديل می‌شود كه كانون مشروط است بر حل مشكلات زندگی واقعی، علم معدن كاری، نرم افزارهای كاربردی، استراتژی بازيها مثل بازی شطرنج و بازيهای ويدئويی يكی از بزرگ‌ترين مشكلات (سختی‌ها) با AIها، قوهٔ درک آنها است.

تاحدی دستگاههای توليد‌شده می‌توانند شگفت‌انگيز باشند، اما كارشناسان هوش مصنوعی ادعا می‌كنند كه ماشينهای هوشمند ساخته‌شده دارای درک واقعی و حقيقی نيستند.

آزمون تیورینگ

آزمون تیورینگ یا تیورینگ تست (Turing test), آزمونی است که توسط آلن تیورینگ در سال 1950 در نوشته ای به نام "محاسبات ماشینی و هوشمندی" مطرح شد. کوشش این آزمون برای تشخیص درستی هوشمندی یک سیستم که سعی در شبیه سازی انسان دارد میباشد.


تعریف و طبیعت هوش مصنوعی

هنوز تعریف دقیقی که مورد قبول همهٔ دانشمندان این علم باشد برای هوش مصنوعی ارائه نشده‌است، و این امر، به هیچ وجه مایهٔ تعجّب نیست. چرا که مقولهٔ مادر و اساسی‌تر از آن، یعنی خود هوش هم هنوز بطور همه‌جانبه و فراگیر تن به تعریف نداده‌است. در واقع، می‌توان نسل‌هایی از دانشمندان را سراغ گرفت که تمام دوران زندگی خود را صرف مطالعه و تلاش در راه یافتن جوابی به این سؤال عمده نموده‌اند که: هوش چیست؟

اما اکثر تعریف‌هایی که در این زمینه ارایه شده‌اند بر پایه یکی از ۴ باور زیر قرار می‌گیرند:سیستم‌هایی که به طور منطقی فکر می‌کنند
سیستم‌هایی که به طور منطقی عمل می‌کنند
سیستم‌هایی که مانند انسان فکر می‌کنند
سیستم‌هایی که مانند انسان عمل می‌کنند(مرجع۱)


شاید بتوان هوش مصنوعی را این گونه توصیف کرد:«هوش مصنوعی عبارت است از مطالعه این که چگونه کامپیوترها را می‌توان وادار به کارهایی کرد که در حال حاضر انسان‌ها آنها رابهتر انجام می‌دهند»(مرجع۲).


اطاق چینی

اطاق چینی بحثی است که توسط "جان سیرل" در 1980 مطرح شد در این راستا که یک ماشین سمبل گرا هرگز نمیتواند دارای ویژگی هایی مانند "مغز" و یا "فهمیدن" باشد, صرف نظر از اینکه چقدر از خود هوشمندی نشان دهد


منابع :
 ایلین ریچ، هوش مصنوعی(وتکنیک‌ها)، ترجمه آزاد از دکتر مهرداد فهیمی، نشر جلوه، ۱۳۷۵،
وب‌گاه سیمرغ
مقدمه ای بر هوش مصنوعی
هوش مصنوعی: به شیوه‌ای مدرن
هوش مصنوعی: راهنمائی برای سامانه‌های هوشمند
ویکی پدیای انگلیسی

+ نوشته شده در  چهارشنبه دهم مهر 1387ساعت 4:26  توسط محمد رضا  | 

شبکه های عصبی -- قسمت چهارم

شبکه های عصبی – قسمت چهارم

یک سلول عصبی کمی پیچیده تر

سلول عصبی قبلی کاری که کامپیوتر های متعارف انجام ندهند را انجام نمی دهد . سلول عصبی کمی پیچیده تر مدل McCulloch)  و Pitts ) است . فرق آن با مدل قبلی این است که ورودی ها وزن دار هستند ، تاثیری که هر ورودی در گرفتن تصمیم دارد بستگی به وزن یک ورودی خاص دارد . وزن یک ورودی عددی است ، زمانی که این عدد در ورودی ضرب می شود ورودی وزندار را می دهد . این ورودی های وزن دار سپس با هم جمع می شود و اگر مجموع آنها از ارزش آستانه ای از پیش تنظیم شده تجاوز کند سلول فعال می شود . در موارد دیگر سلول فعال نمی شود.

 

به بیان ریاضی

 

سلول عصبی فعال می شود اگر و فقط اگر  :       T<….+X2W2+X3W3+X1W1

افزایش وزن های ورودی و به وسیله ی آستانه ارزش این سلول عصبی را یک سلول منعطف و قدرتمند می کند. سلول ها MCP قابلیت سازگاری با وضعیتی خاص را بکمک تغییر وزن ها و یا آستانه ارزش ، دارد . الگوریتم های گوناگونی وجود دارد که سبب سازگاری سلول عصلی  می شود ، پر استفاده ترین آنها قانون دلتا است و روش پخش اشتباه گذشته است . قالبی که در شبکه های از پیش تغذیه شده و بعد از آن در شبکه های بازخوردی استفاده شده است .

 

معماری شبکه های عصبی

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

 

شبکه های عصبی بازخوردی

شبکه های عصبی بازخوردی می توانند سیگنال هایی داشته باشند که در هر دو مشیر با استفاده از حلقه های درست شده ، حرکت کنند . شبکه های بازخوردی خیلی قدرتمند هستند و می توانند به شدت پیچیده شوند . شبکه های بازخوردی پویا هستند ، وضعیت آنها پیوسته در حال تغییر است تا آنها به یک نقطه تعادل برسند . آنها در این وضعیت تعادل باقی می مانند تا زمانی که ورودی تغییر کند و نیاز باشد تا تعادل تازه ای پیدا شود . معماری های بازخوردی ، بر هم کنشی ( interactive ) و بازگشت کننده ( recurrent ) هم نامیده می شوند ، اگر چه این لفظ آخری بیشتر برای مشخص کردن اتصالات بازخوردی در سازماندهی تک لایه به کار می رود.

 

قانون یادگیری شبکه به صورت زیر است که بیان کننده ی تغییرات وزن ، نرخ سرعت یادگیری و یک عدد ثابت می باشد . D بیان کننده ی خروجی مطلوب است که در الگوهای آموزشی وجود دارد. Y بیان کننده ی خروجی به دست آمده از شبکه است و بیان کننده ی ورودی است.

 

 

 

ادامه دارد .................

     گردآورنده و محقق  :  محمد رضا ارباب خالص

 

+ نوشته شده در  چهارشنبه سوم مهر 1387ساعت 3:55  توسط محمد رضا  | 

شبکه های عصبی -- قسمت سوم

قوانین فعال سازی

قانون فعال سازی مفهوم مهمی در شبکه های عصبی است  و مسئول انعطاف پذیری بالای دستگاه می باشد.

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

یک قانون فعال سازی ساده بوسیله تکنیک فاصله Hamming قابل اجرا است قوانین به صورت زیر اجرا می شود: یک مجموعه از الگوهای آموزشی را برای یک گره عصبی انجام دهید ، تعدادی از این الگوها سبب فعال سازی (مجموعه الگوهای آموزشی با حاصل 1) و باقی که از فعالیت آن جلوگیری می کنند ( مجموعه الگوهای آموزشی با حاصل 0) سپس الگوهای خارج از مجموعه ای سبب فعال سازی گره عصبی می شوند که عناصر مشترک بیشتری با نزدیکترین  الگو در مجموعه  آموزشی 1 دارند تا با نزدیکترین الگو در مجموعه آموزشی (0) . اگر در این بین گره ای وجود داشته باشد الگوی مود نظر در وضعیت غیر تعریف شده باقی می مانند.

بعنوان مثال ، یک سلول عصبی با 3 ورودی در نظر بگیرید که آموزش یافته تا خروجی 1 را زمانی بدهد که ورودی ( x1,x2,x3 ) 111 یا 101 است و خروجی 0 را زمانی داشته باشد که ورودی 000و001 است. پس قبل از اعمال قانون فعال سازی ، جدول درستی به صورت زیر می باشد :

 

010 را به عنوان مثالی که در آن قوانین فعال سازی اعمال می شود در نظر بگیرید . این ورودی با ورودی 000در یک عنصر وبا ورودی 001 در دو عنصر متفاوت است . با 101در سه عنصر و با 111در دو عنصر متفاوت است. بنابراین نزدیکترین الگو به آن 000 است که به الگوهای آموزشی با حاصل 0 تعلق دارد. در نتیجه قوانین فعال سازی لازم می داند زمانی که ورودی 001 است تا سلول عصبی فعالیتی نکند . از طرف دیگر ، 0110 در فاصله ای برابر بین در دسته الگوهای آموزشی است که دارای خروجی های متفاوتی هستند بنابراین خروجی این الگو بدون تعریف می ماند (1/0).

 

ادامه دارد ...............

گرد آورنده  و محقق : محمد رضا ارباب خالص

 

+ نوشته شده در  یکشنبه سی و یکم شهریور 1387ساعت 3:33  توسط محمد رضا  | 

شبکه های عصبی -- قسمت دوم

 

شبکه عصبی مصنوعی (( Artifical Neural Network(ANN )

 

یک شبکه عصبی مصنوعی ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده  بهم پیوسته تشکیل (neurons )که برای حل یک مساله با هم هماهنگ عمل می کند. ANN ها ، نظیر انسانها ، با مثال یاد کی گیرند فرض کنید که حرف "a" قرار است توسط ماشین از میان مجموعه ای از حروف شناسایی شود. در حالت بسیار ساده فرض بر این است که شکل تمامی حروف الفبا در حافظه ماشین موجود است . بنابراین ماشین خیلی ساده با مقایسه ورودی فعلی با اشکال موجود در حافظه تشخیص می دهد که حرف ورودی جاری "a" هست یا خیر .

اما همانگونه که پیشتر گفتم در صورتی که الگوهای حروف موجود در حافظه بسیار زیاد باشد ، مقایسه ورودی با تک تک الگوهای ذخیره شده  عملا بسیار زمان بر است و مقدور نیست ، بنابراین نیاز به حافظه آدرس دهی شده بر اساس محتوا خواهیم داشت به این ترتیب که این حافظه الگوی جاری را گرفته و بلافاصله  پاسخ می دهد که آیا این الگو در حافظه موجود است یا خیر . اندکی دقت در مثال اخیر نشان دهنده ی پیچیدگی مسائلی از این دست است.  تشخیص حرف "a" حتی به صورت چاپی هم توسط ماشیناساسا کار ساده ای نیست. دقت کنید به تنوع اشکال این حرف ، سایز ، خمیدگی ها ، دقت چاپگرها ،......و پیچیدگی مسئله ، زمانی چند برابر می شود که کار به تشخیص دستنویس حروف کشیده شود. حال اگر حافظه آدرس دهی شده براساس محتوای ما دارای این توانایی باشد که حتی اگر شکل حرف "a" کمی هم دچار اعوجاج شده باشد باز هم آنرا تشخیص دهد ، حل مسئله تا حدود زیادی ساده تر  شده باشد .

شبکه های عصبی دارای چنین خصلتی هستند .

یک سلول عصبی مصنوعی ساده

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

انشاءالله قوانین فعال سازی را در قسمت بعدی به طور مفصل توضیح خواهم داد.

 

ادامه دارد ...............

+ نوشته شده در  پنجشنبه بیست و هشتم شهریور 1387ساعت 3:52  توسط محمد رضا  |