View Full Version : هوش مصنوعی
عرفنا
4 September 2008, 04:22 PM
هوش مصنوعی چیست ؟
« هوش مصنوعی، دانش ساختن ماشین ها یا برنامههای هوشمند است. » همانگونه كه از تعریف فوق-كه توسط یكی از بنیانگذاران هوش مصنوعی ارائه شده است- برمیآید،حداقل به دو سؤال باید پاسخ داد:
1ـ هوشمندی چیست؟
2ـ برنامههای هوشمند، چه نوعی از برنامهها هستند؟تعریف دیگری كه از هوش مصنوعی میتوان ارائه داد به قرار زیر است:
« هوش مصنوعی، شاخهایست از علم كامپیوتر كه ملزومات محاسباتی اعمالی همچون ادراك (Perception)، استدلال(reasoning) و یادگیری(learning) را بررسی كرده و سیستمی جهت انجام چنین اعمالی ارائه میدهد.»و در نهایت تعریف سوم هوش مصنوعی از قرار زیر است:
«هوش مصنوعی، مطالعه روشهایی است برای تبدیل كامپیوتر به ماشینی كه بتواند اعمال انجام شده توسط انسان را انجام دهد.» به این ترتیب میتوان دید كه دو تعریف آخر كاملاً دو چیز را در تعریف نخست واضح كردهاند.
1ـ منظور از موجود یا ماشین هوشمند چیزی است شبیه انسان.
2ـ ابزار یا ماشینی كه قرار است محمل هوشمندی باشد یا به انسان شبیه شود، كامپیوتر است. هر دوی این نكات كماكان مبهم و قابل پرسشند. آیا تنها این نكته كه هوشمندترین موجودی كه میشناسیم، انسان است كافی است تا هوشمندی را به تمامی اعمال انسان نسبت دهیم؟ حداقل این نكته كاملاً واضح است كه بعضی جنبههای ادراك انسان همچون دیدن و شنیدن كاملاً ضعیفتر از موجودات دیگر است. علاوه بر این، كامپیوترهای امروزی با روشهایی كاملاً مكانیكی(منطقی) توانستهاند در برخی جنبههای استدلال، فراتر از تواناییهای انسان عمل كنند. بدین ترتیب، آیا میتوان در همین نقطه ادعا كرد كه هوش مصنوعی تنها نوعی دغدغه علمی یا كنجكاوی دانشمندانه است و قابلیت تعمق مهندسی ندارد؟(زیرا اگر مهندسی، یافتن روشهای بهینه انجام امور باشد، به هیچ رو مشخص نیست كه انسان اعمال خویش را به گونهای بهینه انجام میدهد). به این نكته نیز باز خواهیم گشت. اما همین سؤال را میتوان از سویی دیگر نیز مطرح ساخت، چگونه میتوان یقین حاصل كرد كه كامپیوترهای امروزین،
http://img.tebyan.net/big/1383/09/128521825551061932811372381151032228107.jpg
بهترین ابزارهای پیادهسازی هوشمندی هستند؟
http://img.tebyan.net/big/1383/09/19312920116213511535254168217281093624994185.jpg
رؤیای طراحان اولیه كامپیوتر از بابیج تا تورینگ، ساختن ماشینی بود كه قادر به حل تمامی مسائل باشد، البته ماشینی كه در نهایت ساخته شد(كامپیوتر) به جز دسته ای خاص از مسائلقادر به حل تمامی مسائل بود. اما نكته در اینجاست كه این «تمامی مسائل» چیست؟ طبیعتاً چون طراحان اولیه كامپیوتر، منطقدانان و ریاضیدانان بودند، منظورشان تمامی مسائل منطقی یا محاسباتی بود. بدین ترتیب عجیب نیست، هنگامی كه فوننیومان سازنده اولین كامپیوتر، در حال طراحی این ماشین بود، كماكان اعتقاد داشت برای داشتن هوشمندی شبیه به انسان، كلید اصلی، منطق(از نوع به كار رفته در كامپیوتر) نیست، بلكه احتمالاً چیزی خواهد بود شبیه ترمودینامیك!
به هرحال، كامپیوتر تا به حال به چنان درجهای از پیشرفت رسیده و چنان سرمایهگذاری عظیمی برروی این ماشین انجام شده است كه به فرض این كه بهترین انتخاب نباشد هم، حداقل سهلالوصولترین و ارزانترین و عمومیترین انتخاب برای پیادهسازی هوشمندیست.
بنابراین ظاهراً به نظر میرسد به جای سرمایهگذاری برای ساخت ماشینهای دیگر هوشمند، میتوان از كامپیوترهای موجود برای پیادهسازی برنامههای هوشمند استفاده كرد و اگر چنین شود، باید گفت كه طبیعت هوشمندی ایجاد شده حداقل از لحاظ پیادهسازی، كاملاً با طبیعت هوشمندی انسانی متناسب خواهد بود، زیرا هوشمندی انسانی، نوعی هوشمندی بیولوژیك است كه با استفاده از مكانیسمهای طبیعی ایجاد شده، و نه استفاده از عناصر و مدارهای منطقی. در برابر تمامی استدلالات فوق می توان این نكته را مورد تاُمل و پرسش قرار داد كه هوشمندی طبیعی تا بدان جایی كه ما سراغ داریم، تنها برمحمل طبیعی و با استفاده از روش های طبیعت ایجاد شده است. طرفداران این دیدگاه تا بدانجا پیش رفتهاند كه حتی ماده ایجاد كننده هوشمندی را مورد پرسش قرار داده اند، كامپیوتر از سیلیكون استفاده می كند، در حالی كه طبیعت همه جا از كربن سود برده است. مهم تر از همه، این نكته است كه در كامپیوتر، یك واحد كاملاً پیچیده مسئولیت انجام كلیه اعمال هوشمندانه را بعهده دارد، در حالی كه طبیعت در سمت و سویی كاملاً مخالف حركت كرده است. تعداد بسیار زیادی از واحدهای كاملاً ساده (بعنوان مثال از نورونهای شبكه عصبی) با عملكرد همزمان خود (موازی) رفتار هوشمند را سبب می شوند. بنابراین تقابل هوشمندی مصنوعی و هوشمندی طبیعی حداقل در حال حاضر تقابل پیچیدگی فوق العاده و سادگی فوق العاده است. این مساُله هم اكنون كاملاً به صورت یك جنجال(debate) علمی در جریان است.
در هر حال حتی اگر بپذیریم كه كامپیوتر در نهایت ماشین هوشمند مورد نظر ما نیست، مجبوریم برای شبیهسازی هر روش یا ماشین دیگری از آن سود بجوییم.
تاریخ هوش مصنوعی
هوش مصنوعی به خودی خود علمی است كاملاً جوان. در واقع بسیاری شروع هوش مصنوعی را 1950 می دانند زمانی كه آلن تورینگ مقاله دورانساز خود را در باب چگونگی ساخت ماشین هوشمند نوشت (آنچه بعدها به تست تورینگ مشهور شد) تورینگ درآن مقاله یك روش را برای تشخیص هوشمندی پیشنهاد میكرد. این روش بیشتر به یك بازی شبیه بود.
http://img.tebyan.net/big/1383/09/2472652658940441231482031470951516616.jpg
فرض كنید شما در یك سمت یك دیوار (پرده یا هر مانع دیگر) هستید و به صورت تله تایپ باآن سوی دیوار ارتباط دارید و شخصی از آن سوی دیوار از این طریق با شما در تماس است. طبیعتاً یك مكالمه بین شما و شخص آن سوی دیوار میتواند صورت پذیرد. حال اگر پس از پایان این مكالمه، به شما گفته شود كه آن سوی دیوار نه یك شخص بلكه (شما كاملاً از هویت شخص آن سوی دیوار بیخبرید) یك ماشین بوده كه پاسخ شما را میداده، آن ماشین یك ماشین هوشمند خواهد بود، در غیر این صورت(یعنی در صورتی كه شما در وسط مكالمه به مصنوعی بودن پاسخ پی ببرید) ماشین آن سوی دیوار هوشمند نیست و موفق به گذراندن تست تورینگ نشده است. باید دقت كرد كه تورینگ به دو دلیل كاملاً مهم این نوع از ارتباط(ارتباط متنی به جای صوت) را انتخاب كرد. اول این كه موضوع ادراكی صوت را كاملاً از صورت مساُله حذف كند و این تست هوشمندی را درگیر مباحث مربوط به دریافت و پردازش صوت نكند و دوم این كه بر جهت دیگری هوش مصنوعی به سمت نوعی از پردازش زبان طبیعی تاكید كند.
در هر حال هر چند تاكنون تلاشهای متعددی در جهت پیاده سازی تست تورینگ صورت گرفته مانند برنامه Eliza و یا AIML (زبانی برای نوشتن برنامههایی كه قادر به chat كردن اتوماتیك باشند) اما هنوز هیچ ماشینی موفق به گذر از چنین تستی نشده است.
همانگونه كه مشخص است، این تست نیز كماكان دو پیش فرض اساسی را در بردارد:
1ـ نمونه كامل هوشمندی انسان است.
2ـ مهمترین مشخصه هوشمندی توانایی پردازش و درك زبان طبیعی است. درباره نكته اول به تفصیل تا بدین جا سخن گفته ایم؛ اما نكته دوم نیز به خودی خود باید مورد بررسی قرارگیرد. این كه توانایی درك زبان نشانه هوشمندی است تاریخی به قدمت تاریخ فلسفه دارد. از نخستین روزهایی كه به فلسفه(Epistemology) پرداخته شده زبان همیشه در جایگاه نخست فعالیتهای شناختی قرار داشته است. از یونانیان باستان كه لوگوس را به عنوان زبان و حقیقت یكجا به كار میبردند تا فیلسوفان امروزین كه یا زبان را خانه وجود میدانند، یا آن را ریشه مسائل فلسفی میخوانند؛ زبان، همواره شاُن خود را به عنوان ممتازترین توانایی هوشمندترین موجودات حفظ كرده است. با این ملاحظات میتوان درك كرد كه چرا آلن تورینگ تنها گذر از این تست متظاهرانه زبانی را شرط دستیابی به هوشمندی میداند. تست تورینگ اندكی كمتر از نیمقرن هوش مصنوعی را تحت تاُثیر قرار داد اما شاید تنها در اواخر قرن گذشته بود كه این مسئله بیش از هر زمان دیگری آشكار شد كه متخصصین هوش مصنوعی به جای حل این مسئله باشكوه ابتدا باید مسائل كماهمیتتری همچون درك تصویر (بینایی ماشین) درك صوت و… را حل كنند.به این ترتیب با به محاق رفتن آن هدف اولیه، اینك گرایشهای جدیدتری در هوش مصنوعی ایجاد شدهاند. در سالهای آغازین AI تمركز كاملاً برروی توسعه سیستمهایی بود كه بتوانند فعالیتهای هوشمندانه(البته به زعم آن روز) انسان را مدل كنند، و چون چنین فعالیتهایی را در زمینههای كاملاً خاصی مانند بازیهای فكری، انجام فعالیتهای تخصصی حرفهای، درك زبان طبیعی، و…. میدانستند طبیعتاً به چنین زمینههایی بیشتر پرداخته شد.
در زمینه توسعه بازیها، تا حدی به بازی شطرنج پرداخته شد كه غالباً عدهای هوش مصنوعی را با شطرنج همزمان به خاطر میآورند. مككارتی كه پیشتر اشاره شد، از بنیانگذاران هوش مصنوعی است این روند را آنقدر اغراقآمیز میداند كه میگوید:
«محدود كردن هوش مصنوعی به شطرنج مانند این است كه علم ژنتیك را از زمان داروین تا كنون تنها محدود به پرورش لوبیا كنیم.» به هر حال دستاورد تلاش مهندسین و دانشمندان در طی دهههای نخست را میتوان توسعه تعداد بسیار زیادی سیستمهای خبره در زمینههای مختلف مانند پزشكی عمومی، اورژانس، دندانپزشكی، تعمیرات ماشین،….. توسعه بازیهای هوشمند، ایجاد مدلهای شناختی ذهن انسان، توسعه سیستمهای یادگیری،…. دانست. دستاوردی كه به نظر میرسد برای علمی با كمتر از نیم قرن سابقه قابل قبول به نظر میرسد.
افقهای هوش مصنوعی
در 1943،Mcclutch (روانشناس، فیلسوف و شاعر) و Pitts (ریاضیدان) طی مقالهای، دیدههای آن روزگار درباره محاسبات، منطق و روانشناسی عصبی را تركیب كردند. ایده اصلی آن مقاله چگونگی انجام اعمال منطقی به وسیله اجزای ساده شبكه عصبی بود. اجزای بسیار ساده (نورونها) این شبكه فقط از این طریق سیگنال های تحریك (exitory) و توقیف (inhibitory) با هم درتماس بودند. این همان چیزی بود كه بعدها دانشمندان كامپیوتر آن را مدارهای (And) و (OR) نامیدند و طراحی اولین كامپیوتر در 1947 توسط فون نیومان عمیقاً از آن الهام میگرفت. امروز پس از گذشته نیمقرن از كار Mcclutch و Pitts شاید بتوان گفت كه این كار الهام بخش گرایشی كاملاً پویا و نوین در هوش مصنوعی است. پیوندگرایی (Connectionism) هوشمندی را تنها حاصل كار موازی و همزمان و در عین حال تعامل تعداد بسیار زیادی اجزای كاملاً ساده به هم مرتبط میداند. شبكههای عصبی كه از مدل شبكه عصبی ذهن انسان الهام گرفتهاند امروزه دارای كاربردهای كاملاً علمی و گسترده تكنولوژیك شدهاند و كاربرد آن در زمینههای متنوعی مانند سیستمهای كنترلی، رباتیك، تشخیص متون، پردازش تصویر،… مورد بررسی قرار گرفته است.
http://img.tebyan.net/big/1383/09/24446022416031452556774571531170223134.jpg
علاوه بر این كار بر روی توسعه سیستمهای هوشمند با الهام از طبیعت (هوشمندیهای ـ غیر از هوشمندی انسان) اكنون از زمینههای كاملاً پرطرفدار در هوش مصنوعی است. الگوریتم ژنیتك كه با استفاده از ایده تكامل داروینی و انتخاب طبیعی پیشنهاد شده روش بسیار خوبی برای یافتن پاسخ به مسائل بهینه سازیست. به همین ترتیب روشهای دیگری نیز مانند استراتژیهای تكاملی نیز (Evolutionary Algorithms) در این زمینه پیشنهاد شده اند. دراین زمینه هر گوشهای از سازو كار طبیعت كه پاسخ بهینهای را برای مسائل یافته است مورد پژوهش قرار میگیرد. زمینههایی چون سیستم امنیتی بدن انسان (Immun System) كه در آن بیشمار الگوی ویروسهای مهاجم به صورتی هوشمندانه ذخیره میشوند و یا روش پیدا كردن كوتاهترین راه به منابع غذا توسط مورچگان (Ant Colony) همگی بیانگر گوشههایی از هوشمندی بیولوژیك هستند. گرایش دیگر هوش مصنوعی بیشتر بر مدل سازی اعمال شناختی تاُكید دارد (مدل سازی نمادین یا سمبولیك) این گرایش چندان خود را به قابلیت تعمق بیولوژیك سیستمهای ارائه شده مقید نمیكند. CASE-BASED REASONING یكی از گرایشهای فعال در این شاخه میباشد. بعنوان مثال روند استدلال توسط یك پزشك هنگام تشخیص یك بیماری كاملاً شبیه به CBR است به این ترتیب كه پزشك در ذهن خود تعداد بسیار زیادی از شواهد بیماریهای شناخته شده را دارد و تنها باید مشاهدات خود را با نمونههای موجود در ذهن خویش تطبیق داده، شبیهترین نمونه را به عنوان بیماری بیابد. به این ترتیب مشخصات، نیازمندیها و تواناییهای CBR به عنوان یك چارچوب كلی پژوهش در هوش مصنوعی مورد توجه قرارگرفته است. البته هنگامی كه از گرایشهای آینده سخن میگوییم، هرگز نباید از گرایشهای تركیبی غفلت كنیم. گرایشهایی كه خود را به حركت در چارچوب شناختی یا بیولوژیك یا منطقی محدود نكرده و به تركیبی از آنها میاندیشند. شاید بتوان پیشبینی كرد كه چنین گرایشهایی فرا ساختارهای (Meta –Structure) روانی را براساس عناصر ساده بیولوژیك بنا خواهند كرد.
منابع:
1- Jon Mccarthy
2-NP-Complete Problems
3-Von Neumen
4-Artificial Intelligence Markup Language
برگرفته از: www.srco.ir
عرفنا
4 September 2008, 07:04 PM
مقدمه:
ما در عصري زندگي مي كنيم كه جامعه شناسان آن را عصر انقلاب كامپيوتر نام نهاده اند و مانند هر انقلاب واقعي ديگر، انقلابي است گسترده و فراگير و تأثير پايداري برجامعه خواهد داشت.
اين انقلاب در اقتصاد امروز و نظم جامعه، به همان ميزان انقلاب صنعتي در قرن 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 ، پشتيباني برنامه ريزي كشفي است . در بين خصوصياتي كه يك زبان برنامه نويسي بايد ايجاد كند موارد ذيل وجود دارد :
ادامه دارد....
عرفنا
4 September 2008, 07:15 PM
1-Modularity
2-قابلیت گسترش
3- ساختارهاي سطح بالاي مفيد
4- پشتيباني از Prototype سازي اوليه
5- قابل خواندن بودن برنامه
6- مترجم ها
7- پشتيباني نرم افزاري براي برنامه نويسي جستجويي
ما اين عناوين را در پاراگراف هاي زير مورد بحث و بررسي قرار خواهيم داد :
1-قابليت Modularity كدها
حائز اهميت است كه يك زبان براي برنامه نويسي كشفي از يك سري تعاريف متوالي مربوط به كدها پيروي كند اين بيانگر اين است كه مسائل مي بايستي شامل قسمت هاي كوچك و مطلوب باشد نه بدنه هاي پيچيده كه بندي شده ارتباط متقابل بين محتوي برنامه بايد محدود باشد و به خوبي نيز توصيف شده باشند.
اين شامل پرهيز از تأثيرات جانبي و متغيرهاي جهاني (global) و اطمينان از رفتار هر Module واحد در شناخت برنامه باشد كه بتواند به خوبي قابل تشخيص باشد.
برنامه هاي LISP به صورت مجموعة انتخابي از عملكردهاي واحد مي باشند در يك برنامه LISP كه به صورت مطلوب نوشته شده باشد هر عملكرد كوچك مي باشد كه يك كاركرد خوب و واحد را شكل مي دهند.
بنـــابراين اغلب جايگزيني و اصلاح علت هاي هر كمبودي، ساده مي باشد. روش هاي اندازه گيري متغير LISP و پارامترهاي مربوط به آن اغلب براي كاهش تأثيرات عملكردي به كار گرفته مي شوند. متغيرهاي جهاني،گر چه به وسيله زبان پشتيباني مي شوند ولي استفاده در كدهاي متناسب LISP نهي شده اند.
علاوه بر اين LISP دسته بندي شي گرا را از طريق سيستم شيء LISP به صورت CLOS پشتيباني مي شود.
در PROLOG واحد اصلي برنامه روش و قانون است، قوانين PROLOG همانند عملكردهاي LISP كوچك و ويژه هستند.
به دليل اينكه محدوده و قياس متغيرها در PROLOG اغلب محدود به يك شيوه و قانون شده اند، و زبان اجازه تغييرات جهاني را نمي دهد. توصيف كردن اصولاً ساده مي باشد.
LISP و PROLOG شامل مشخصه هاي سهل و آساني مي باشند كه هنگامي كه با يك ساختار برنامه مشخص تركيب شوند، موجب آسان شدن پرداخت آن مي گردند.
2-قابليت گسترش
اصولاً برنامه نويسي جستجويي در قالب يك پروسه داراي ساختار سطح بالاي برنامه اي است كه به گونه كد توسعه يافته است. يك روش مهم براي انجام اين پروسه در قالب سيستماتيك و با ساختار مناسب،توسعة يك زبان نهفته در آن است.
اغلب امكان توصيف شكل نهايي يك برنامه AI وجود ندارد،اما امكان تشخيص ساختارهاي سطح بالا و مفيد براي كشف و بررسي دامنه مسئله وجود دارد. اين ساختارها مي توا ند شامل الگوهاي مناسب ، كنترل كننده هاي جستجو وعملكردهاي توصيف يك زبان توصيفي باشد.
اصـــولاً ايـــن نظـــريه كه مي گويد اگر شما ساختار نهايي يك برنامه را تشخيص ندهيد مي بايستي سعي كنيد كه ساختار زبان را توصيف كنيد كه به شما كمك خواهد كرد كه آن ساختار را توسعه دهيد.
براي پشتيباني از اين روش، يك زبان برنامه نويسي بايد به صورت سهل و آسان قابل گسترش باشد و به طور ساده آنها را توسعه دهد. به وسيله توسعه و گسترش كه همان توانايي توصيف ساختارهاي زباني جديد است كه داراي حداكثر آزادي و انعطاف باشند.
LISP و PROLOG و همچنين توسعة شيء گرا آنها همانند CLOS همگي موجب مي شوند كه توصيف سادة اهداف، پيش بيني ها و عملكردهاي جديد ، صورت پذيرد.
هنگامي كه توصيف صورت پذيرفت، اين ساختارهايي كه كاربر ايجاد كرده داراي رفتاري شبيه به ساختارهاي اساسي زبان مي باشند.
اين زبانها به وسيله توسعة توانايي هاي اصولي از ابتدا تا حل آن برنامه ريزي مي شوند. دراين صورت،گفته مي شود كه برنامه هاي معمول، ساختاربندي مي شوند ولي برنامه هاي AI رشد و توسعه مي يابند.
اين مورد با تشخيص سريع مقايسه مي شود كه در اين مورد زبانهاي معمولي مابين خصوصيات ساختاري و برنامه هاي توسعه يافته، كاربردي واقع مي شوند.
در يك برنامه ما ممكن است عملكردهاي جديدي را تعريف كنيم اما ساختار آنها بسيار محدودتر از ســـاختارهاي از قبل ساخته شده است. اين موجب محدوديت انعطاف پذيري و استفاده از اين توسعه و گسترش ها مي شود.
LISP و PROLOG همچنين موجب ساده شدن نوشتن توصيف متغيرهاي ويژه يك زبان خاص مي شوند. در LISP برنامه ها و اطلاعات به گونه ساختاري ليست مي شوند. اين باعــث ســادگي نوشتن برنامه اي مي شود كه از كد LISP به عنوان داده (Data) استفاده مي كنند كه در اين صورت باعث ساده تر شدن توسعه، تصويفي مي شوند.
بسياري از زبانهايي كه از نظر سابقه و همچنين اقتصادي در نوع زبانهاي AI حائز اهميت مي باشند، مثل PLANNER و ROSIE و KEE و OPS بر اساس توانائي هاي LISP ساخته مي شوند.
PROLOG اين توانائي ها را در قالب تعدادي “meta – predicates” كه قابل پيش بيني براي تركيب با ديگر مشخصه هاي PROLOG باشند. ايجاد مي كند كه در اين صورت باعث ساده شدن نوشتاري آن مي گردد.
همراه با LISP تعدادي زبانهاي سطح بالا AI بر اساس PROLOG ساخته شده اند كه از اين روش استفاده مي كنند.
3-وجود ساختارهاي مفيد سطح بالا
برنا مه نويسي جستجويي به كمك يك ساختار قوي سطح بالا در زبان به وجود مي آيد،اين ساختارهاي قوي و كلــــي به برنامه نويس اجازه توسعه سريع ساختارهاي ويژه براي بيان اطلاعات توصيفي و كنترل برنامه را مي دهند.
در LISP اينها شامل اصول اساسي نوع اطلاعاتت مي شود كه موجب ايجاد ساختارهاي پيچيده اطلاعاتي و عملكردهاي قوي براي توصيف عمليات بر روي آنها مي شود. به دليل اينكه LISP قابل گسترش مي باشد و براي چندين دهه است كه مورد استفاده قرار مي گيرد. مهمترين و قوي ترين عملكردهاي توصيفي LISP همان خصوصيات استاندارد زباني آنها مي باشد. ويژگيهاي معمول LISP شامل جيدها عملكرد براي ايجاد ساختارهاي اطلاعاتي، ساخت تداخلگرها و قابليت Edit كردن ساختارهاي LISP مي شوند.
PROLOG به عنوان يك زبان مقايسه اي كوچك مطرح است كه بخشي از آن به دليل نو بودن و بخش ديـــــگر به دليل عدم سادگي و كامل بودن آن است با اين حال PROLOG به كاربرها اجازة ايجاد پيشگوئي هاي به خصوص را مي دهد و مفيدترين اينها راه خود را براي استاندارد شدن باز كرده اند.
4-پشتيباني براي ساخت Prototype اوليه
يكي از روش هاي برنامه نويسي جستجويي و مهم، Prototype سازي اوليه مي باشد. در اينجا برنامه نويس يك راه حل سريع براي مسئله پيدا مي كند و از آن براي جستجو فضاي مسئله استفاده مي كند. وقتي كه مسئله مورد بررسي قرار گرفت و روش حل آن مشخص شد، Prototype كنار گذاشته مي شود و يك برنامه نهايي كه تأكيد آن بر روي صحت و مؤثر بودن مي باشد، ساخته مي شود. گر چه مشكل است كه چيزهايي را كه زياد مورد استفاده قرار مي گيرند تا براي ساخت يك برنامه كامپيوتري به كار روند، كنار گذاشت، ولي انجام چنين كاري باعث صرفه جوئي در زمان و بهبود كيفيت نهائي كار مي شود. ساخـــتارهاي ايجاد شده به وسيله زبانهاي AI عمدتاً باعث افزايش سرعت توسعة Prototypeها مي شوند.
5-قابليت خواندن برنامه و مستندسازي آن
به دليل اينكه اغلب برنامه هاي AI به طور گسترده اي از طريق خودشان توصيف مي شوند ولي اين نكته حائز اهميت است كه كد بتواند قابل خواندن و قابل مستندسازي باشد. در عين حاليكه هيچ نوع جايگزيني براي محتوي زبانهاي معمول در كد وجود ندارد، ولي با اين حال زبـــان هـــاي AI همـــراه بـا Moduleهاي با ساختار سطح بالا باعث ساده شدن اين عمل مي شوند.
6-مفسرها
بيشتر زبانهاي AI قبلاً ترجمه شده هستند نه اينكه در طول برنامه بخواهند ترجمه شوند. اين بدان معني است كه برنامه نويس لازم نيست به مدت طولاني هر زمان كه كد تغيير كرد برنامه را تعريف مجدد كند.
با توجه به مسائل عملكردي در ترجمه كد، زبانهاي AI مدرن به Module هاي ويژه اجازه تعريف مجدد براي يك موقعيت متوسط را مي دهند كه از اين طريق برنامه هاي سطح بالاتر بهتر تعريف مي شوند. علاوه بر اين بسياري از كاربردها به برنا مه ها اجازه تكميل شدن نهايي برنامه ها را مي دهند.
7-محيطهاي توسعه
زبانهاي جديد AI در برگيرنده محيطهاي برنامه ريزي مي شوند كه ابزارهاي ايجاد كلي و يا بخشـــي از برنامه را فراهم مي كنند.بسياري از كاربردهاي زباني شامل ويرايش هوشمند مي شــوند كه اشتباهات را به عنوان يك كد نوشتاري در نظر مي گيرد. به دليل پيچيدگي برنامه هاي AI و مشكل بودن پيش بيني عملكرد هر سيستم توليد، اهميت اين پشتيباني هاي سهل نمي تواند قابل تصور باشد.
ادامه دارد...
عرفنا
4 September 2008, 07:23 PM
Dynamic Binding and constraint propagation
زبانهاي معمول نياز به اين دارند كه بيشتر برنامه هاي مرتبط با آن در يك مدت زمان خاص تشخيص داده شوند.
شامل اتصال دادن متغيرها به محيط حافظه و انتقال روش هاي به نام هايشان مي باشد. با اين حال بسياري از روش هاي برنامه نويسي پيشرفته مثل، برنامه نويسي هاي شيء گرا نياز به اين اتصال ها براي تشخيص ديناميكي دارند.
برنامه هاي Prolog و LISP پشتيبان قيدگذاري ديناميكي هستند. از يك نقطه نظر AI يكي از مهمترين منافع قيدگذاري ديناميكي پشتيباني از برنامه نويسي ساختاري است. اغلب مسائل مربوط به يك برنامه AI نيـــاز به ايــــن دارد كه ارزش هاي مشخصه هاي خاص ناشناخته باقي مي ماند تا زماني كه اطلاعات لازم جمع آوري شوند.
اين اطلاعات ممكن است به گونه يك سري از ساختارها بر اساس ارزش ها باشد كه يك متــغير از آن انتظار دارد. هم چنانكه ساختارها جمع شوند يك سري از احتمالات كاهش مي يابد و در نهايت به يك راه حل منتهي مي شود كه تمامي ساختارها را تحت پوشش مطلوب قرار مي دهد.
يك نمونه ساده از اين نظريه ممكن است در يك سيستم تشخيص پزشكي ديده شود كه اطلاعات دربارة نوع بيماري مريض جمع آوري مي شود تا زماني كه اطلاعات مربوطه محدود به نوع خاصي از بيمار شوند زبان برنامه نويسي مقايسه اي اين روش از نوع متغير قيدگذاري اوليه يا توانايي حصول يك متغير نامركب مي باشد در حاليكه آن را در كد برنامه جمع مي كند.
LISP و PROLOG به متغيرها اجازة ترجمه وافزايش غيرمركب را مي دهند، در حاليكه توصـــيف ارتبـــاطات و وابستگي هاي بين اين متغيرها و ديگر واحدهاي برنامه را انجام مي دهد. اين موجب كاربرد آسان و طبيعي نوع قيد مي شود.
6. تعاريف مشخص و واضح
لازم است كه زبانهاي AI همراه با زبانهاي ديگر برنامه نويسي براي توسعه گسترده كامل و در عين حال منطقي سيستم، به كار گرفته شوند.
متأسفانه زبانهاي برنامه نويسي معمول مثل Fortran و پاسكال داراي تعاريف مشكل و پيچيده اي هستند اين موارد مي تواند ناشي از واقعيت خود زبان باشد كه اصولاً داراي خصوصيات ساختاري سطح بالايي در كامپيوتر دارند و در خودشان سيستم هاي فيزيكي و پيچيده اي دارند. به دليل اينكه زبانهاي AI داراي اساس و پايه رياضي هستند مثل PROLOG و LISP ،آنها مي بايستي معاني ساده تري باشند كه داراي قدرت و ظرافت نهفته در رياضي باشند.
اين موجب مي شود كه اين زبانها عمدتاً براي تحقيقات در محدودة به كارگيري دانش ابزارهاي زبان، ايجاد برن امه درست،و اتوماتيك كردن تأثير گذاري كد، مفيد واقع شوند.
همـــچنين بـــايد توجه داشت كه گر چه عملكرد بسياري از برنامه هاي AI كاملاً پيچيده مي باشد ولي كدي كه داراي اين عملكرد است بايد ساده و مشخص باشد.
بلوك هاي بزرگ مركب و پيچيده با كد مشخص داراي AI مناسب نمي باشند يك زبان خوب توصيف شده،يك ابزار مهم براي دريافت اين اهداف مي باشد.
خلاصه اي دربارة LISP و PROLOG
به وسيله برآورده كردن نيازهاي گفته شده، LISP و PROLOG هر دو داراي زبانهاي برنامه نويسي غني و كاملي هستند وقتي كه اين زبانها را فرا مي گيريم، دانشجو در ذهن و فكر دربارة روشهايي كه آنها به وسيله ويژگيهاي خاص هر زبان پشتيباني مي كنند، نيازها را نگه داري مي كنند.
PROLOG
PROLOG يكي از بهترين نمونه و مثال يك زبان برنامه نويسي منطقي است. يك برنامه منطقي داراي يك سري ويژگيهاي قانون و منطق است . PROLOG از محاسبة اوليه استفاده مي كند. در حقيقت خود اين نام از برنامه نويسي PRO در LOGIC مي آيد يك مفسر برنامه را بر اساس يك منطق مي نويسد. ايده استفاده توصيفي محاسبه اوليه براي بيان خصوصيات حل مسئله يكي از محوريت هاي مشاركتPROLOG مي باشد كه براي علم كامپيوتر به طور كلي و به طور اخص براي زبان برنامه نويسي هوشمند مورد استفاده قرار مي گيرند. نفع اسفتاده از محاسبه اوليه براي برنامه نويسي شامل يك ساختار ظريف و ساده و قابل معني مي شود.
به دليل همين خصوصيات است كه PROLOG به عنوان يك محرك اصلي و مفيد براي تحقيقاتي مثل موارد برنامه نويسي آزمايشي به عنوان يك كد، متغير كردن برنامه و طراحي ويـــژگيهـاي زبان سطح بالا، مطرح است. PROLOG و ديگر زبانهاي منطقي يك سبك برنامه نويسي مشخصي را دنبال مي كنند كه در آنها برنامه ها به صورت دستورات پشت سرهم و متوالي براي ايجاد يك الگوريتم، نوشته مي شوند. اين نوع برنامه اصولاً به كامپيوتر مي گويد كه «چه چيزي درست است» و «چه چيزي بايد صورت گيرد» و اين به برنامه نويس اجازه مي دهد كه بر روي حل مسئله به صورت يك سري خصوصيات از يك محدوده تأكيد كند تا اينكه بخواهد به جزئيات نوشتاري سطح پائين ساختارهاي الگوريتمي براي بعد بپردازد.
اولين برنامه PROLOG در مارسي فرانسه در اوايل 1970 به عنوان بخشي از زبان معمول يك پروژه نوشته شد. تئوري نهفته در پشت اين زبان در كارهاي كوالسكي،هيز و ديگران آورده شده است. عمدة توسعة PROLOG بين سالهاي 1975 تا 1979 در بخش هوش مصنوعي دانشگاه ادينبورگ صورت گرفت.
در آنجا يك گروه مسئوليت كاربرد اولين PROLOG را به عهده داشتند كه آقاي David H.D مسئول آن بود. اين گروه اولين PROLOG را ساخت كه مي توانست محاسبات كلي را انجام دهد. اين محصول بر اساس سيستم DEC-10 ساخته شده بود و مي توانست در مدهاي توصيفي و مقايسه اي كارآئي داشته باشد.
مزيت اين زبان به وسيله پروژه هايي كه براي ارزيابي و گسترش قدرت بيان برنامه هاي منطقي نوشته شده اند، اثبات شده است.
بحث دربارة يك چنين كاربردهايي مي تواند در سمينار و گردهمائي هاي مربوط به زبان برنامه نويسي هوش مصنوعي در سطح بين المللي مطرح شود.
LISP
LISP اولين بار به وسيله JACK MCCARTHY در اواخر دهه 1950 مطرح شد اين زبان به عنوان يك مدل پيوسته محاسباتي بر اساس تئوري عملكرد مجدد،معرفي شد.
در مقالات اولية مك كارتي (1960) اهداف خود را مشخص مي كند: ايجاد يك زبان سمبوليك تا يك زبان محاسباتي. ايجاد زباني كه بتوان از آن به عنوان يك مدل محاسباتي بر اساس تئوري عملكرد مجدد استفاده كرد و از آن بتوان براي تعريف دقيق يك ساختار و تعريف زباني استفاده كرد.
گر چه LISP يكي از قديمي ترين زبانهاي محاسباتي است كه هنوز فعال است، ولي دقت كافي در برنامه نويسي و طراحي توسعه باعث شده كه اين يك زبان برنامه نويسي فعال باقي بما ند.
در حقيقت اين مدل برنامه نويسي طوري مؤثر بوده است، كه تعدادي از ديگر زبانها بر اساس عملكرد برنامه نويسي آن واقع شده اند مثل FP ، ML و SCHEME .
اين ليست اساس برنامه ها و ساختارهاي اطلاعاتي در LISP است، LISP خلاصه شده نام پروسه LIS است. اين برنامه يك سري ليست هاي عملكردي درون ساختاري دارد.
LISP به برنامه نويس قدرت كامل براي اتصال به ساختارهاي اطلاعاتي را مي دهد.
اصولاً LISP يك زبان كامل است كه داراي عملكردها وليست هاي لازمه براي توصيف عملكردهاي جديد، تشخيص تناسب و ارزيابي معاني مي باشد.
تنها هدف كنترل برنامه بازگشت و شرايط منحصر به فرد است. عملكردهاي كامل تر هنگامي كه لا زم باشد در قالب اين اصول تعريف مي شوند. در طي زمان بهترين عملكردها به عنوان بخشي از زبان مي شوند. پروسه توسعة زبان به وسيلة اضافه كردن عملكردهاي جديد موجب توسعه محورهاي زيادي از LISP مي شوند كه اغلب شامل صدها عملكرد بخصوص براي ايجاد اطلاعات كنترل برنامه، خروجي و ورودي، Edit كردن عملكردهاي LISP مي شوند.
اين ارتباطات محركه اي هستند كه به وسيله LISP از يك مدل ساده و ظريف به يك مدل قوي و غني و عملكردي براي ساخت سيستم هاي نرم افزاري بزرگ، تبديل مي شود.
يكي ازمهم ترين برنامه هاي مرتبط با LISP برنامه SCHEME مي باشد كه يك تفكر دوباره دربارة زبان در آن وجود دارد كه به وسيله توسعه AI وبراي آموزش اصول مفاهيم علم كامپيوتر مورد استفاده قرار مي گيرند.
7. برنامه نويسي شيء گرا
برخلاف برنامه LISP و PROLOG ،برنامه شيء گرا ريشه در مهندسي نرم افزار دارد. اولين بار در سال 1970 توسعه يافته كه به وسيله Alan Kay اين تحقيقات صورت گرفته است.
ساخت ايده ها از محرك، كه زبان نروژي تظاهر مي كند در سال 1960 و مقاله Symour در استفاده از LOGO براي آموزش كودكان، صورت پذيرفته است.
استفاده از Dyna book براي اولين بار به عنوان يك كامپيوتر، كه افرادي به غير متخصصان علم كامپيوتر با آن سروكار داشتند.
بـــه دليل اينكه كاربر افراد معمولي بودند سيستم عملكرد و كاربرد نرم افزار نبايد تكنيكي مي بود و به سادگي قابل تشخيص بود. راه حل آنها براي اين مسئله يك مداخلة گرافيكي است با استفاده از منوها و آيكون هاي گرافيكي و اشاره گرها، يك موس يا يك سري برنامه ها براي اديت كردن، داده ها مي باشد.
دخالت كاربر در طراحي يك notebook متأثر از طراحي كاربرها براي يك سري كامپيوترهاي تخصصي مثل سيستم هاي به كارگيري كامپيوتر شخصي مثل مكينتاش، ماكروسافت و محل هاي مربوط به ويندوز مي باشد.
در يك برنامه small talk ،همه چيز در قالب هدف و يك ساختار قابل محاسبه مرك و قراردادي مطرح مي شود. اهداف نه فقط شامل انواع اطلاعات براي محاسبه بلكه شامل انواع روشهاي لازم براي محاسبه حالت و وضعيت هدف نيز مي شوند.
ارزشهاي يك هدف به صورت كلاس ها بيان مي شود. اهداف ممكن است اهداف طبقه بندي شده كه توصيف كنندة تمامي مواد يك نمونه باشد و بيانگر نوع ذات و توصيف تما مي موارد يا مواردي كه بيانگر يك عضو واحد هستند را شامل شود.
وقتي مواردي از يك نوع اطلاعات به وسيله اهداف توصيف مي شود اين موارد ذاتاً داراي نوع توصيف و روشهاي توصيفي از عملگرهايشان مي باشند،براي شكل دادن يك عمليات بر روي يك هدف، يك پيام به سمت هدف فرستاده شده كه حاصل روش مناسبي مي باشد. به عنوان مثال، اضافه كردن 3 و 4 پيام 4+ به سمت شيء 3 فرستاده مي شود و 3 پاسخ مي دهد مي شود 7 .
به وسيله ايجاد انواع تركيب اطلاعات و عمل بر روي آنها در يك عمل واحد مربوط به هدف، small talk از كد Modular (پيمانه اي) توسعه و نوع كاربرد براي عناصر اطلاعات و كد مربوط به تكثير آنها، پشتيباني مي كند.
به دليل اينكه اهداف small talk در قالب يك كلاس شبكه اي همراه با اهداف كاملاً ويژه كه بخشي از تمامي روش هــاي كاملاً كلي است ، بسيار ساده است كه يك ساختار جديد برنامه اي توصيف كنيم كه عملاً با اهداف موجود در برنامه همراه باشد. بنابراين يك برنامه اصولاً مي تواند قدرت كامل يك سيستم باشد كه شامل گرافيك،بازنگري و ارتباط است.
علاوه بر اين روش هاي توسعه نرم افزاري مثل ارائه اطلاعات و زبانهاي نهفته، فشار بر اپراتور و استفاده از كدها از طريق يك گروه اصلي و زبانهاي نهفته در قالب يك مدل رايج پشتيباني مي شوند.
زبانهاي شيءگرا همراه با بسياري از خصوصيات مندرج در يك كلاس اطلاعاتي، شامل كلاس اصلي و توانايي پاسخ در ساختار اطلاعات مي شود به همين دلايل زبانهاي شيءگرا در برنامه نويسي AI استفاده مي شوند.
محيطهاي هيبريد
نياز به برنامه نويسي اطلاعاتي موجب توسعة تعدادي برنامه نويسي و تكنيك هاي زبان، شامل سيستم هاي توليد،قوانين و كلاس شيءگرا مي شود.
يك سيستم هيبريد بيانگر نمونه هاي چند منظوره در قالب يك محيط برنامه نويسي خاص مــي باشد. گر چه محيطهاي هيبريد متفاوت مي باشد. ولي عموماً شامل خصوصيات ذيل مي شوند.
1-نمايش شيء گرا از محدوده اشياء
يك چنين سيستم هايي ذاتاً ويژگيهاي كلاس را پشتيباني مي كنند و اغلب شامل يك مكانيسم انتقال پيام براي عكس العمل هدف مي باشند.
2-قوانين نمايش اطلاعات neuristic
گر چه چهارچوب اهداف به معني توصيف طبقه بندي اهداف، مي باشند. قوانين به عنوان عمدة نظر توصيف مسائل اطلاعاتي مي باشند.
ساختار then …. if ….. مناسب شيوة تخصص انساني است كه بيانگر پروسة تصميم گير است. قوانين دريافت اطلاعاتي از اهداف را دارند كه با استفاده از يك زبان كه مستقيماً در چارچوب يك هدف مي خواند و مي نويسد و يا به وسيلة استفاده از پيام كه مستقيماً وارد هدف مي شود صورت مي پذيرد.
3-پشتيباني از انواع روش هاي جستجو
بيشتر سيستم هاي پشتيباني از جستجوي اوليه و انتهايي حمايت مي كنند عموماً بيان يك هدف در قالب جستجويي ،تغيير به سمت عقب مي باشد . علاوه بر اين يك واقعيت تازه دربارة حافظه كاركرد ممكن است ايجاد علت هاي اوليه از قوانين كند كه به وسيله اين واقعيت جديد پشتيباني مي شوند.
4-توصيف دامنة كاربرد عملكرد متقابل و تأثيرات جانبي
يك demon فـــرآيندي اســـت كه به وسيله عملكردهاي جانبي بعضي از اعمال مشخص مي شود. يك نمونه از استفاده demon كنترل در يك سيستم زماني است كه بيانگر دوره اي در مانيتور يك چاپگر و يا ديگر وسايل مي باشد.
demon به وسيله يك زمان مشخص مي شود. محيطهاي AI اين ايده را توسعه مي دهند و باعث ايجاد demon مي شوند كه هنگامي كه هدف توليد يا توصيف شود به كار مي آيند.
چنين demonهايي براي به زمان نگه داشتن يك نشانگر در پاسخ به تغيير مقدار مورد استفاده قرار مي گيرند. Demon هاي مهم و مطرح اصولاً داراي مقاديري متغير مي باشد كه هنگامي كه ارزش متغير تغيير كند demon خوانده شده و وقتي كه اين اتفاق افتاد demon ايجاد و خلق مي شود كه اين وقتي اتفاق مي افتد كه يك مقدار خلق شده باشد و ارزش ها در قالب گرافيكي فعال مي شوند كه اين فعاليت مي تواند متغير باشد.
5-تداخلگرهاي گرافيكي
اينها شامل يك طيفي از امكاناتي مي باشند كه اجازه تداوم و دنبال كردن موارد را مي دهند. به عنوان مثال نشانگرهاي گرافيكي مي توانند ساختار قوانين يك اصل اطلاعاتي را به صورت يك درخت توصيف دهند. يكي از مهمترين خصوصيات محيطهاي هيبريد،توانائي اتصال با استفاده از demon مي باشد كه به صورت يك نشانگر گرافيكي متصل به شيء و هدف مي باشد. كه اين موجب عملكرد گرافيكي براي بيان زمان واقعي نشانگر مي باشد كه در حقيقت بيشتر محيط ها داراي يك پشتيباني سطح بالاي از داده هاي گرافيكي مي باشند.
6-اجتناب از زبانهاي زيرين
روشهايي كه در قالب يك زمان خاص يا پاسخگو مي باشند به وسيله محيط و يا اغلب اوقات LISP و PROLOG يا حتي و يا پاسكال توصيف شده اند كه اين موجب توصيف طيفي فرآيند اطلاات و هم چنين يك برنامه اطلاعاتي كه طيف وسيعي از زبانهاي كه شكل دهنده هندسي، جهت ها و سنسورها و يا ديگر عملكردهايي كه به صورت بهتري در قالب روشهاي الگوريتمي به كار گرفته مي شود را شامل مي شود.
7-توانائي ترجمه اطلاعات جهت اجراي سريعتر يا تحويل روي يك ماشين كوچكتر
وقتي كه برنامه شيء گرا كامل شد. يك محيط كامل و توسعه يافته اغلب ، بلندي است كه به تدريج افول مي كند و پائين مي آيد بيشتر محيط هاي مدرن AI اجازه كاربرد سريعتر و ساده تر را كه اغلب كوچكتر و ارزانتر است را در يك ماشين ترجمه ايجاد مي كنند.
8. يك نمونه هيبريد
بسياري از نمونه هاي مطلوب اصولاً از طريق اشيا، ارتباطات و كنش و واكنش متقابل بين آنها واقع يم شود در شكل زير يك نمونه اتصال به وسيله باطري همراه با يك سوئيچ براي يك لامپ (شكل 364) در نظر گرفته شده است.
لامپ، باطري و سوئيچ ممكن است هر كدام به وسيله كلاسها بيان شوند كه بيانگر ويژگيهاي باطري، سوئيچ و لامپ باشد . مشخصه هاي الكترونيكي شكل 2 ممكن است به عنـــوان موارد بخصوصي از اين كلاس هاي كلي بيان مي شوند. توجه داشته باشيد كه نمونه ها داراي مقادير نمونه اي مربوط به كلاس خاص شيء مربوط به خود مي شوند به عنوان مثال اگر سوئيچ 1 در حالت خاموش قرار گيرد. قسمت كنترل كه مربوط مي شود به لامپ 1 تحت تأثير قرار خواهد گرفت.
يك قانون ممكن است در اينجا به وجود بيايد كه :
اگر نور وارد AND نشود، سوئيچ AND را بسته و باطري درست است بنابراين بايد به قسمتي كه ممكن است آسيب ديده باشد مراجعه كرد.
در نمايش هيبريد قوانين داراي ويژگيهايي هستند كه بيشتر بيانگر مقدار اهميت كلاسها و اشياء مي باشند.كه در شكل 3 به آن اشاره شده است. اين قانون ممكن است به عنوان بخشي از قانون اوليه سيستم در تلاش براي به جريان انداختن اين مدار باشد كه در جاي ديگر براي راه اندازي سوئيچ كنترل براي حالات متغير است.
9. انتخاب زبان كاربردي
همانگونه كه هوش مصنوعي به مرحله رشد مي رسد وقابليت هاي خود را در طيف وسيعي از مسائل كاربردي به اثبات مي رساند اعتماد به LISP و PROLOG نيز مدنظر مي باشد، موارد مربوط به توسعة نرم افزاري، همانند نياز به تداخلگرها به صورت ساده وآسان همراه با يك كد منطقي تا استفاده از AI در Moduleهاي كوچكتر و يا بزرگتر در برنامه ها و نياز به ايجاد توسعه استاندارد متأثر از مشتريان دولتي و يا گروهي موجب توسعة سيستم هاي AI در انواع زبانهاي مثل C ، , C++ Java و Smalltalk شده است.
كــه زبــانهاي LISP و PROLOG كار خود را در محدودة توسعه و Prototype سازي سيستم هاي AI در صنعت و دانشگاهها دنبال مي كنند.
يـــك اطـــلاعات و دانش كاربردي مربوط به اين زبانها به عنوان بخشي از مهارت هر برنامه نويس AI مي باشد. علاوه بر اين، اين زبانها به عنوان زمينه اي براي بسياري از اين خصوصيات مي باشند كه در ادامه همكاري با زبانهاي برنامه نويسي جديد مي باشند.
احتمالاً بهترين نمونه از اين زبانها Java ميباشد كه متناسب با استفاده اولويت ديناميكي اش، داراي مديريت حافظه اتوماتيك و ديگر خصوصياتي است كه در زبانهاي كه ترجمه شده وجود دارد به نظر مي رسد كه ديگر زبانهاي برنامه نويسي براي رسيدن به حد مطلوب از استانداردهاي اين زبانها استفاده مي كنند.
هم چنانكه اين تكامل صورت مي پذيرد و ادامه مي يابد دانش مربوط به LISP و PROLOG يا Small talk و روش هاي برنامه نويس قادرند تنها از نظر مقدار توسعه يابند.
بنابراين، از اينكه از يكي از اين زبانهاي AI استفاده كنيم يا خود را در برنامه نويسي با زبانهاي C++ و C و Java يا يكي از زبانهاي رقيب پيدا كنيم راضي و قانع خواهيم بود.
منابع و مآخذ
كتاب Artificial intelligence structures & strategies for complex problem solving
نوشته George F.Luger & william A. Stubble field
چاپ Wesley long man Inc, 2000
برگرفته از: http://www.khedu.ir/
دوستان با عرض معذرت از طولانی بودن این مقاله اما این مقاله بسیار جامع و کامل موضوع رو باز کرده و حیف دیدم به طور کامل اینجا نقل نشه :icon_cool
عرفنا
5 September 2008, 04:02 AM
نگاهي به هوش مصنوعي - در بازيهاي كامپيوتري
http://www.shabakeh-mag.com/Data/1002554_b.jpg
گردآوري و تدوين: علي حسيني
ماهنامه شبكه - تير ۱۳۸۵ شماره 66
اشاره :
در بسياري از ژانرهاي بازيهاي كامپيوتري، نزديكتر بودن به واقعيت، هم براي سازندگان و هم براي دوستداران بازي جايگاه ويژهاي دارد. گرافيك بازيها در طبيعيتر جلوه دادن محيط و چهرهها، و استفاده از صدا و افكتهاي صوتي پيشرفته در واقعيت بخشيدن به اتفاقاتي كه در بازيها با آن روبهرو ميشويم، مؤثرند. انيميشن نيز هر چه با دقت و جزئيات بيشتري طراحي شود، باورپذيرتر به نظر ميآيد. ولي آنچه دوستداران بازي را در ژانرهاي ويژهاي از بازيها به وجد ميآورد، هوشمندي شخصيتهاي بازي است. حوصله همه از اينكه همتيميهاي مجازيشان در بازيهاي كامپيوتري نسنجيده عملكنند، سر ميرود. گاه آنها نميتوانند از خودشان هم محافظت كنند؛ چه برسد به آنكه بخواهند در طول بازي به شما كمك كنند. مبارزه با دشمناني كه دست كمي از افرادتان ندارند نيز جذابيتي ندارد. همانگونه كه گرافيك خوب به مدلها، صداي خوب به رويدادها و انيميشن خوب به حركتهاي موجود در بازي واقعيت ميبخشد، استفاده از روشهاي مختلف هوش مصنوعي نيز رفتار شخصيتهاي بازي را طبيعيتر ميكند. در بازيهاي كامپيوتري، هوش مصنوعي بيشتر براي شخصيتهاي مجازي مقابل شما به كار ميرود و اگر در بازي، همتيميهايي نيز داشته باشيد كه خودِ بازي، آنها را كنترل ميكند، براي آنها نيز به كار ميرود. براي ملموستر بودن توضيحاتي كه در ادامه پيشرو خواهد بود، از رفتار شخصيتهاي مجازي بازي Counter - 1.7 Strike در حالتي كه دستكم كنترل يك طرف بازي با كامپيوتر است و بازيهاي Quake استفاده خواهد شد. هوش مصنوعي در بازي Counter - Strike به خوبي پيادهسازي شده است و بسياري از دوستداران بازي نيز با آن آشنا هستند. وقتي در هر مرحله، شخصيت مجازي شما كشته ميشود و چند دقيقهاي از بازي بيرون هستيد، زمان خوبي است كه رفتار هم تيميها و دشمنانتان را بررسي كنيد و به عملكرد هوش مصنوعي آنها پي ببريد. پنهانشدن، آهسته حركت كردن و همكاري آنها با هم، بسيار ديدني است و در كمتر بازياي چنين رفتارهايي ديده ميشود.
كاربرد هوش مصنوعي
هدف هوش مصنوعي نزديك نمودن رفتار و پاسخ يك سيستم كامپيوتري به الگوهايي است كه انسان براساس آنها رفتار ميكند و پاسخ ميدهد. گاه سيستمهايي طراحي ميشوند كه قدرت تجزيه و تحليل آنها از انسان بيشتر است. ولي باز از الگوهاي ما استفاده ميكنند. هوش مصنوعي با سيستم فازي يا سيستمي كه انسان برطبق آن تصميم ميگيرد، رابطه تنگاتنگي در اين سيستم برخلاف سيستم صفر و يك ديجيتال، ميتوان به يك متغير مقداري كمتر از يك و بيشتر از صفر نيز داد.
براي نمونه ميخواهيد يك بازي كامپيوتري را از ميان چندين بازي مورد علاقه خود بخريد و از آنجا كه مقدار پول شما مشخص است، ميخواهيد فقط يك بازي را برگزينيد. پس شما به بازيهاي مورد علاقه خود، امتيازي بين صفر و يك ميدهيد. ارزش صفر براي بازيهايي است كه كمتر آنها را دوست داريد و هر چه مقدار عدديِ بيشتري به آن بازي بدهيد، بيشتر آن را دوست داريد و از ميان آنها بازياي كه بيشترين ارزش را براي شما دارد، انتخاب ميكنيد.
از ديد فروشنده، شما با سيستم صفر و يك پاسخ دادهايد و بازيهاي ديگر را انتخاب نكردهايد. هرچند در واقع شما فازي فكر كردهايد، ولي با منطق صفر و يك پاسخ دادهايد. اگر كامپيوترها فازيتر تحليل كنند، هوشمندتر ميشوند. ولي پاسخ آنها بايد براساس همين صفر و يك باشد؛ چرا كه هيچ كس نميخواهد يك پاسخ غيرقطعي از كامپيوتر دريافت كند. هر چه رفتارهاي شخصيتهاي بازي بيشتر براساس سيستم فازي باشد، پيشبينيناپذيرتر و هوشمندانهتر خواهند بود. يعني ميتوانند در مقابل رفتارهاي مختلف شما و موقعيت محيط، رفتارهايي متفاوت نشان دهند.
انواع هوش مصنوعي
در بازيهاي كامپيوتري سه نوع هوش بيشتر از همه استفاده ميشوند كه به صورت خلاصه عبارتند از:
هوش مصنوعي رويدادگرا: اين هوش معمولترين نوع هوش مصنوعي است. رويداد ميتواند شامل هر چيزي اعم از اتفاقات بازي تا دستوراتي باشد كه كاربر به شخصيت مجازي خود ميدهد. براساس هر رويدادي كه در بازي انجام ميشود، يك واكنش هوشمندانه نيز روي ميدهد. در بازي كانتراسترايك دشمن شما نسبت به صدا حساس است و صداي دويدن شما را هم ميشنود. از اينرو بسته به موقعيت خود، يا به آهستگي پنهان ميشود، يا برميگردد و از راه ديگري به سوي شما ميآيد يا به سوي شما ميآيد و شليك ميكند.
هوش مصنوعي هدفگرا: اين نوع هوش مصنوعي از هوش مصنوعي رويدادگرا مستقل است. ولي هوش مصنوعي رويدادگرا ميتواند در طراحي يك بازي، هدفهاي موتور هوش مصنوعي هدفگرا را تامين كند. اين نوع هوش مصنوعي، هدفِ با ارزش بيشتر را برميگزيند و آن را با تقسيم به زيرهدفهاي كوچكتر، پردازش ميكند.
شايد در بازي كانتراسترايك زماني كه كامپيوتر هم كنترل هم تيميها و هم كنترل دشمنان شما را به عهده دارد، ديده باشيد كه وقتي با هم تيميهايتان به سوي دشمنان خود تيراندازي ميكنيد، آنها هم بيشتر به سوي شما شليك ميكنند تا ديگر همتيميهايتان؛ چرا كه شما بايد هدفهاي خواستهشده در بازي (مانند آزاد كردن گروگانها يا خنثي كردن بمب) را انجام دهيد. براي همين ارزش شما براي آنها بيشتر است.
http://www.shabakeh-mag.com/Data/Gallery/s66_game_3_s.jpg
تصوير 1 - يك كاراكتر در بازي Counter 1.7 - Strike در حال دويدن به سوي يكي از دو محل مبارزه است. او ميداند اسلحه و هم تيميهايش كجا هستند.
محفظههاي سوراخ: اين روش تركيبي از دو روش گفته شده است. روش كار ساده است. دو محفظه داريد و چند نوع كار: فرار (flee)، مبارزه (fight) و پركردن تفنگ (restock) را در نظر ميگيريم. محفظهها مقداري از محتواي خود را با گذشت زمان از دست ميدهند.
شما اسكريپتي را در ارتباط با محفظهاي كه بيشتر پر است، به اجرا در ميآوريد. رويدادهايي كه اتفاق ميافتند، اين محفظهها را با ارزشهاي مختلفي پر ميكنند و اين محفظهها پر و خالي ميشوند. براي نمونه دشمن مجازي را در موقعيتهاي زير در نظر بگيريد كه ميتوان بسته به طراحي بازي عددهاي زير را كم و زياد كرد:
- شما دشمن را ببينيد، پنج درصد به ارزش فرار و ده درصد به ارزش مبارزه او افزوده ميشود. چون در بازي اولين هدف مبارزه است نه فرار. فرار كاري است كه هنگام رويارويي با دشمن زماني كه دشمن شما موقعيت مناسبي ندارد، انجام ميدهد. پس ارزش مبارزه در اينجا از فرار بيشتر است.
- گلوله او كم باشد، بيست درصد به ارزش ريستوك يا پر كردن تفنگ افزوده ميشود. چون شايد به زودي به آن نياز داشته باشد.
- اگر آسيبديدگي او كم باشد، بيستدرصد به ارزش فرار و دهدرصد به ارزش ريستوك افزوده ميشود. چون اگر شخصيت مجازي آسيب كمي ديده باشد، با ماندن در يكجا و پركردن تفنگ خود چنانچه در تيررس شما باشد، آسيب بيشتري ميبيند.
پس در حالي كه جاي خود را عوض ميكند، بايد تفنگ خود را نيز پركند. چون اگر باز در تيررس قرار بگيرد و گلولههاي او رو به پايان باشد، هنگام پركردن، آسيب بيشتري ميبيند. دشمنان شما در كانتراسترايك نيز اين كار را ميكنند. اگر شما پشت سر هم به آنها شليك كنيد، در پشت ديوار پنهان ميشوند يا به جايي فرار ميكنند و تفنگ خود را در صورت رو به پايان بودن گلولهها پرميكنند. پس اولويت در فرار و قرار گرفتن در يك جاي خوب و سپس پر كردن تفنگ است.
- شليك به سوي او و آسيبديدگي زياد باشد، پنجاه درصد به ارزش مبارزه افزوده ميشود و بيستدرصد از ارزش فرار و ريستوك كم ميشود. چون وقتي به سوي او شليك ميكنيد، هنگام فرار اگر در جاي مناسبي نباشد، آسيبپذيرتر ميشود و زماني كه تفنگ خود را پر ميكند، شما آسانتر ميتوانيد به سوي او شليك كنيد.
- اگر در يكبار شليك پنجاهدرصد آسيب ببيند، پنجاهدرصد به ارزش فرار و بيستدرصد به ارزش ريستوك افزوده ميشود و پنجاهدرصد از ارزش مبارزه كم ميشود. گاهي با يك سلاح قوي ميتوانيد آسيب بيشتري به دشمنتان برسانيد. اگر در بازي كانتراسترايك، يك نارنجك به سمت دشمن پرتاب كنيد، بيش از نيمي از نيروي او كم ميشود. اگر او در جاي مناسبي نباشد، چون بيش از نيمي از نيروي خود را از دست دادهاست، بايد فرار كند و تنها زماني كه موقعيت او از موقعيت شما بهتر است، شليك ميكند. در اينجا فرار ارزش بيشتري دارد.
هوش مصنوعي در ژانرهاي بازي
بازيهاي كامپيوتري اكشن، ماجرايي - اكشن و تيراندازي، بيش از بازيهاي ژانرهاي ديگر از هوش مصنوعي استفاده ميبرند. بازيهاي مسابقهاي و استراتژيك نيز ميتوانند از هوش مصنوعي براي قويتر كردن رقيبانشان استفاده كنند. نمونه خوب بازيهاي مسابقهاي، Need For Speed UnderGround2 است. در اين بازي، هنگامي كه در شهر مشغول رانندگي هستيد، ميتوانيد با اتومبيلهاي مسابقهاي ديگر كه مانند شما در شهر حركت ميكنند مسابقه دهيد. براي اينكار بايد به آن اتومبيل نزديك شويد و هنگامي كه منوي پرسش براي پذيرش مسابقه را ديديد، كليد Enter را فشار دهيد.
هنگامي كه جلو هستيد بايد فاصله شما از آن اتومبيل بيش از يك مقدار خاص باشد تا برنده شويد و زماني كه پشت سر او هستيد، نبايد فاصله شما از اين مقدار بيشتر باشد. اگر همزمان با مسابقه به نقشه كوچك گوشه مانيتور نگاه كنيد، ميبينيد زماني كه راننده رقيب از شما عقبتر است، كوتاهترين مسير را براي رسيدن به شما از ميان خيابانهاي مختلف كه به هم راه دارند انتخاب ميكند و زماني كه از شما جلوتر است، هنگام رسيدن به تقاطعها ناگهان تغيير مسير ميدهد تا شما را سردرگم كند.
در بازي Need For Most Wanted، به نظر ميآيد پليسها در تعقيب و گريز شما و يافتن مسير، ضعيفتر عمل ميكنند. البته شايد شركت EA، خود اينگونه خواسته است. به غير از اين، بازيهاي ماجرايي معمولاً نيازي به هوش مصنوعي ندارند؛ چرا كه كنترل شخصيت بازي به عهده شماست و آنچه بايد از پيش روبرداريد، پازلهاي طراحي شده است نه دشمنان يا هيولاهايي كه به هوشمندسازي نياز داشته باشند؛ مانند بازي سايبريا.
هوش مصنوعي، بيشتر در بازيهاي تيراندازي اول شخص (FPS) گسترش يافت. يك بازي تيراندازي اول شخص بيشتر از يك موتور براساس هوش مصنوعي رويدادگر استفاده ميكند كه رويدادها و واكنشها ميتوانند مانند الگوي زير باشند:
- هنگام ديده شدن: يورش با مناسبترين سلاح
- هنگام آسيبديدگي زياد: فرار و بازگرداندن نيرو. مانند استفاده از كيتهاي سلامتي در برخي بازيها.
- نبود گلوله: پيدا كردن گلوله
شايان ذكر است كه استفاده از روش محفظههاي سوراخ ميتواند هوش مصنوعي در اين بازيها را انعطافپذيرتر كند.
پيدايش و پيشرفت هوش مصنوعي
در اواسط دهه 1990، يك بازي تيراندازي اول شخص منتشر شد كه به كاربر امكان ميداد بازي را براي خود سفارشي (Customize) كند. اين بازي، Quake بود كه در فناوري ساخت بازيهاي كامپيوتري يك نوآوري محسوب ميشد. Quake اولين بازي سهبعدي واقعي است. به اين معني كه بهصورت بلادرنگ در سه بعد رندر ميشود. (پيش از آن spiritها يا گرافيكهاي دوبعدي به صورت سهبعدي شبيهسازي ميشدند). چيزهاي ديگري نيز در اين بازي وجود داشت كه موردتوجه قرار گرفت؛ مانند نشانه گرفتن سلاح به بالا يا پايين. زيرا حركتدادن سلاح به بالا يا پايين نيازمند پردازش در بعد سوم، يعني عمق يا ارتفاع در يك محيط سهبعدي است.
بازي Quake از موجودات مجازي هوشمند (bot) هر چند با هوش مصنوعي كم، بهره برده بود. هوش مصنوعي يكbot در بازيهاي تيراندازي اول شخص، ميتواند در دو بخش بررسي شود: يكي ناوبري و حركت، و ديگري مبارزه. اگر بخواهيم رفتار bot نزديك به رفتار يك انسان باشد، پيادهسازي آن بسيار پيچيدهتر از هوشمصنوعي در مبارزه است. هر چند پيادهسازي هوش مصنوعي در مبارزه نيز با هر استاندارد و روشي آسان نيست.
براي اينكه باتها بتوانند حركت كنند، بايد بتوانند درباره اشيا و موجودات پيرامون خود ياد بگيرند. اين ايده بسيار اساسي، ميتواند به بخشهاي بيشتري مانند قابليت آناليز هنگام حركت در يك جهت خاص و سپس قابليت پيدا كردن اشيا و شخصيتهاي مجازيِ مقابل در يك مرحله بازي گسترش يابد. اين ايدهها شايد ساده به نظر برسند، ولي واقعاً اينگونه نيست؛ چرا كه يك bot بايد بتواند در برابر دو چيز واكنش درستي داشته باشد: ديوارها و فضاهاي خالي.
ديوارها شامل همه چيزهايي است كه نميتوان از آن عبور كرد؛ مانند خود يك ديوار، نرده، شخصيتهاي مجازي، جعبهها، پلههاي رو به بالا و ... فضاهاي خالي نيز هر جايي است كه زمين همواره نيست يا دچار شكستگي است؛ مانند يك چاله، پلههاي رو به پايين و ... . براي رويارويي با اين دو مانع، يك روش خوب، افزايش كارايي تابع جستجو است. اين تابع كه در بازي Quake معرفي شد، به بات امكان ميدهد يك خط را از يكي از بُعدهاي X-Y-Z تا بُعد بعدي جستجو كند و اطلاعاتي مانند اينكه <اين خط به كجا ميرود، چه چيزي آن را قطع ميكند و ...> را دريافت كند.
دو روش براي گذشتن يكبات از يك مرحله، بيشتر مورد استفاده قرار ميگيرد: روش نخست از گرههاي گراف وضعيت و روش دوم از مسيرهاي (path) آن استفاده ميكند. در يك محيط براساس روش گره، گرهها در قسمت قوانين بهينهسازي مرحله (level) كه به وسيله سازنده يك bot تعريف شده است قرار دارند. هر گره ميتواند اطلاعات بات درباره قسمت خاصي از محيط را بدهد. وضعيت مبارزه، كاربردهاي زيادي براي تعدادي از الگوريتمهاي جستجو يا پروسه تصميمگيري دارد. در يك مبارزه، بايد براي تشخيص اينكه كدام كار براي بات بهتر است حركتهاي رقيب پيشبيني شود.
روش Minimax، در مواقعي كه يك تابع هيورستيك خوب (يك هيورستيك برخلاف الگوريتم، ممكن است به يك پاسخ قطعي نرسد) در دست باشد، ميتواند يك حركت خوب را انجام دهد. از آنجا كه minimax روش كندي است، ميتوان از Partial Minimax استفاده كرد كه در الگوريتمهاي تصميمگيري به كار ميرود؛ هر چند اين روش هنوز چندان پذيرفته نشده است.
پژوهشگران هوش مصنوعي پيشنهاد ميكنند، تنها زماني از Partial Minimax استفاده كنيد كه يك گزينه بديهي در دست داشته باشيد (زماني كه متغير minimax با ارزش بيشتر كاملا بهتر از متغير ديگر باشد). در غير اينصورت اگر ارزش همه متغيرها نزديك به هم است، از استراتژي ديگري استفاده كنيد. حال آنكه در يك بازي بلادرنگ براي يكbot معمولاً گزينه بديهي وجود ندارد تا آن را برگزينيد. هر گزينه به يك استراتژي متفاوت وابسته است كه bot ميتواند آن را انتخاب كند.
شايد بسياري از طرفداران روش minimax به ارزش سرعت، هنگام بررسي كارايي يك بات در بازي بلادرنگ واقف نيستند؛ مانند كمترين زماني كه يك بات نياز دارد تا درباره يك تصميم بينديشد، گزينههاي بيشتري كه براي تصميمگيري ايجاد ميكند، كيفيت واكنش بهتر و سطح خبرگي. به ياد داشته باشيد كه يك بات در برابر مغز يك انسان كه ميتواند دنياي سهبعدي را با كمك حس و تخيل خود تفسير كند، قرار ميگيرد. براي نمونه در يك مبارزه، يك بات نياز به نشانهگيري به سوي دشمن خود، پيشبيني حركت آن و... دارد كه همه، بدون داشتن درك واقعي از محيطي كه در آن قراردارد انجام ميشود.
براي دستيابي به بيشترين سرعت، بيشتر از الگوريتم *A استفاده ميشود. هر چند اين الگوريتم پيشرفته نيست، ولي سرعت بالايي دارد. پيچيدگي زماني اين الگوريتم ((O(log h(n است كه (h(n پيچيدگي تابع هيورستيك است. *A يك الگوريتم جستجوي "اول عمق" است كه هيورستيك آن را كنترل ميكند و ميتواند مناسبترين شاخه بعدي گراف را حدس بزند و در هر عمق، تنها شاخهاي كه ارزش هيورستيك بهتري دارد، گسترش مييابد.
http://www.shabakeh-mag.com/Data/Gallery/s66_game_2_s.jpg
تصوير 2- نمايي از بازي Quake III Arena
نظريهها و روشهاي رايج
در ابتدا كمي از بازيها از روشهاي استاندارد هوشمصنوعي استفاده ميكردند. يكي از آن باتها براي بازي Quake II ساخته شده بود كه براساس شبكههاي عصبي ميتوانست محيط اطراف خود را بشناسد.
اين موجود، Neuralbot نام گرفت كه موردتوجه پژوهشگران هوش مصنوعي و بازيهاي كامپيوتري واقع شد. آقاي Elusive طراح و سازنده چندين بات است كه مشهورترين آنها را در بازي Quake III Arena كه شركت id Software ساخته است ميبينيم. او درباره Neuralbot ميگويد:
برخي از طرفداران اين بات بر اين عقيدهاند كه دوستداران بازيها به دنبال موجودي كاملا هوشمند و شبيه انسان نيستند و تنها ميخواهند مبارزه خوب و سختي با آنها داشته باشند. آنان ميگويند يك هوش مصنوعي خوب نبايد يك شبيهسازي از هوش واقعي باشد. بلكه بايد اشتباه در آن كمتر باشد؛ به گونهاي كه بازي را جذاب وسخت كند.
اما بسياري از برنامهنويسان بازيهاي كامپيوتري، با پژوهشگران هوش مصنوعي بازيهاي كامپيوتري همسو نيستند. آنها موجودات هوشمند مجازي خود را تا آنجا كه ميتوانند، شبيه انسان ميسازند و سپس آنها را در مقابل انسان آزمايش ميكنند. براي نمونه Elusive ميگويد:
يكي از چيزهايي كه در هوش مصنوعي بازيهاي كامپيوتري هنوز مورد پژوهش و بررسي قرار ميگيرد، ساختن يكbot است كه هرگز <تقلب> نميكند! بيشتر باتها تابعهايي دارند كه براي هرچه بهتر بازي كردن، دادهها را از بازيكنان ديگر (انسان يا bot) استخراج ميكنند؛ كه اين كار يك تقلب محسوب ميشود. در روش آزمون و خطا، موجودات هوشمند مجازي نبايد وابسته به دانش خاص بازيكنان ديگر باشند. براي آنكه اين باتها وابسته به دادههاي شخصيتهاي مجازي ديگر نباشند، بايد توانايي تشخيص و سرعت آنها افزايش يابد. نتيجه كار، باتي خواهد بود كه هر چند نسبت به باتهاي ديگر ويژگيهاي غيرانساني بيشتري دارد، هنوز هم رقيب سرسخت و خوبي است.
Elusive باتهايي براي بازي Quake III ساخت، كه هرگز تقلب نميكنند. براي هر چه شبيهتر كردن باتها به انسان، آنها به گونهاي طراحي شدهاند كه نياز به پيش تعريف مسيرها در هر مرحله دارند. سپس دستورهاي نوشته شده به بات ميگويد چگونه مسيرها را زماني كه مبارزهاي درجريان نيست ناوبري كند. برخي براين باورند كه اين روش نيز براي باتها نوعي تقلب است. چون آنها قبلا محيط را شناختهاند و همزمان با رويارويي با محيط، تصميم نميگيرند.
ولي در مقابل، اگر يك بازيكن واقعي هم چندبار يك مرحله از بازي را تجربه كند، با محيط آشنا ميشود و هر چه را كه در پيرامونش قرار دارد ميشناسد. پس چرا يك بات بايد هر بار كه وارد محيطي ميشود كه قبلا هم در آنجا بوده است، همه اطلاعات آنجا را دوباره ياد بگيرد؟ با توجه به اين مسئله ميتوان موجودات هوشمند مجازياي ساخت كه فهم انساني از يك مرحله دارند و ميتوانند زمان بيشتر پردازنده را به كارهاي ديگر اختصاص دهند تا دوباره كاري.
باتهاي امروزي، بيشتر مانند انسان رفتار ميكنند. در اين بازيها هوش مصنوعي، متفاوت از هوش مصنوعي دانشگاهي است. يك بات واقعاً چيزي ياد نميگيرد. ولي ميكوشد وانمود كند كه يك انسان واقعي است.
پژوهشگران هوش مصنوعي، از صنعت بازيسازي دل خوشي ندارند. چون شركتهاي بازيسازي از بسياري از روشهاي ساده استفاده مينمايند و روشهاي پيشرفته را رها ميكنند. ولي هنوز هم چيزهايي درباره باتها وجود دارد كه ميتوان از سازندگان بازيهاي كامپيوتري ياد گرفت.
معرفي ميانافزار RWAI
Render Ware AI) RWAI) ميانافزاري براي توسعهدهندگان هوش مصنوعي در بازيهاي كامپيوتري است كه شركت فرانسوي Kynogon ساخته و بخشي از بسته نرمافزاري پلتفرم RenderWare، محصول اين شركت است كه شامل ابزارهاي گرافيكي، صوتي و ... براي ايجاد محتوا در بازيهاي كامپيوتري است.
كيت توسعه نرمافزاري (SDK) اين نرمافزار متمركز بر كمك به توسعهدهندگان بازيهاي كامپيوتري براي طراحي و پيادهسازي رفتار كاراكترها در بازي است. براي اين منظور، RWAI SDK سرويسهايي براي مدلسازي محيط، اشياي موجود در محيط و سرانجام كاراكترها و رفتارهايشان در اختيار برنامهنويسان ميگذارند.
RWAI اشيا را در يك دنياي مجازي، يك موجوديت (entity) در دو فرم اصلي در نظر ميگيرد:
Thinking entity و Passive entity
Thinking entity يا موجوديت متفكر بيشتر در بازيهاي Non-Player Character) NPC) استفاده ميشود. موجوديت متفكر يك آبجكت با نام brain (مغز) دارد كه قابليت تصميمگيري كاراكتر را فعال ميكند و موجب بروز رفتار در آنها ميشود.
موجوديتهاي منفعل، آبجكتهايي در دنياي مجازي هستند كه با موجوديتهاي متفكر ايجاد ميشوند و با آنها در تعاملند، ولي تحت كنترل RWAI نيستند. RWAI SDK سرويسهاي زير را در يك محيط چند لايهاي فراهم ميكند:
§ لايه تصميم (Decision): اين لايه از شي مغز كه پيشتر گفته شد، پشتيباني ميكند. زماني كه يك موجوديت متفكر ايجاد ميشود، يك شي مغز نيز براي آن موجوديت ساخته ميشود. شي مغز، كار تصميمگيري را انجام ميدهد.
§لايه عامل(Agent): اين لايه از رفتارهايي كه از موجوديتها سر ميزند پشتيباني ميكند. منظور از agent در ميانافزار RWAI مجموعهاي از كارها است كه بازتابدهنده رفتاري سطح بالا است.
ميتوان از Go To (رفتن به جايي ...)، دنبالكننده (Follower)، دنبال كردن مسير (Follow Path)، حركت در جهتهاي مختلف (Wanderer)، گريختن (Runaway)، پنهانكننده (Hider) و ... به عنوان نمونههايي از agentهاي اين ميانافزار نام برد.
§لايه خدمات (Service): اين لايه تعدادي اشياي مديريتكننده را دربردارد. براي نمونه، مديريتكننده NextMove Manager براي يافتن مسير حركت كاراكترها در دنياي مجازي،Graph Manager براي مديريت دادههاي يك مسير كه منعكسكننده ويژگيهاي دنياي مجازي در هر مسير هستند و NeuralNet Manager براي مديريت دادههاي شبكههاي عصبي استفاده شده در RWAI.
§لايه معماري (Architecture): كار معرفي، بروز كردن و پايان دادن به لايههاي تحت كنترل موتور بازي در RWAI را انجام ميدهد و مسئوليت تبادل اطلاعات ميان موتور بازي و ديگر لايههاي ميانافزار را نيز برعهده دارد.
در تصوير 3 چگونگي ارتباط لايهها با موتور بازي نشان داده شده است.
http://www.shabakeh-mag.com/Data/Gallery/s66_game_1_s.jpg
تصوير3 - چگونگي ارتباط لايههاي RWAI با موتور بازي.
موتور بازي، دادههاي وضعيت كاراكتر و محيط مجازي را فراهم ميكند و RWAI ورودي را در لايههاي متناسب با آن منتشر ميسازد و درخواستها را براي دادههاي بيشتر يا كنترل كاراكترها استخراج ميكند. RWAI سرويسها و امكاناتي براي هوش مصنوعي فراهم ميآورد. يكي از اين سرويسها، مسيريابي در محيط سه بعدي است كه به وسيله تعامل اشياي موجود در لايههاي سرويسهايي كه گفته شد پشتيباني ميشود. يكي از اشياي موجود در اين ميانافزار، شي CNextMoveManager است كه سرويس اصلي مسيريابي در طول گرافي كه از الگوريتم A استفاده كرده است را برعهده دارد. با در دسترسبودن سورسكد شي CNextMoveManager، ميتوان اين پردازنده را چنان كه موردنياز است، در بازي تغيير داد.
مديريت موجوديت ميتواند با استفاده از Entity API انجام شود. هم موجوديت متفكر و هم موجوديت منفعل بايد در دنياي مجازي قابل شناسايي با RWAI ايجاد شوند تا بر چگونگي تصميمگيري و سرويسهاي قابل ارائه تاثير بگذارند.
ميانافزار RWAI يك كيت توسعه نرمافزاري قدرتمند است و زماني كه همراه با ديگر كامپوننتهاي سكويRenderWare استفاده شود، راهبردي قابل اعتماد و قوي فراهم ميكند. حتي زماني كه از RWAI به تنهايي استفاده ميشود و موتور بازي سرويسهاي پلتفرم RenderWare را ايجاد ميكند، (SDK) نرمافزار، قابليت پيادهسازي رفتار كاراكتري پيچيده و پيشرفته را دارد.
منابع
Anders Petersson:Artificial Intelligence in games
نشاني www.worldforge.com (http://www.worldforge.com)
Chris Moyer: Bot, Anyway? How Intelligent is a Game
نشاني www.tcnj.com (http://www.tcnj.com)
www.gamasutra.com (http://www.gamasutra.com)
عرفنا
5 September 2008, 11:16 PM
الگوریتم های ژنتیک:
الگوريتم ژنتيک و حل مسائل TSP (http://erfna.persiangig.com/document/GENETIC-1.pdf)
تهیه: پيام تيموری
بررسي ساختارهاي متداول الگوريتم ژنتيك (http://erfna.persiangig.com/document/CTR1-3.pdf)
تهیه: عبدالرضا علوي قره باغ، علي بخشي
موفق باشید :icon_cool
vBulletin v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.