مقدمه
« هوش مصنوعی، دانش ساختن ماشين ها يا برنامههای هوشمند است. »
همانگونه كه از تعريف فوق-كه توسط يكی از بنيانگذاران هوش مصنوعی ارائه شده است- برمیآيد،حداقل به دو سؤال بايد پاسخ داد:
1ـ هوشمندی چيست؟
2ـ برنامههای هوشمند، چه نوعی از برنامهها هستند؟
تعريف ديگری كه از هوش مصنوعی میتوان ارائه داد به قرار زير است:
« هوش مصنوعی، شاخهايست از علم كامپيوتر كه ملزومات محاسباتی اعمالی همچون ادراك (Perception)، استدلال(reasoning) و يادگيری(learning) را بررسی كرده و سيستمی جهت انجام چنين اعمالی ارائه میدهد.»
و در نهايت تعريف سوم هوش مصنوعی از قرار زير است:
«هوش مصنوعی، مطالعه روشهايی است برای تبديل كامپيوتر به ماشينی كه بتواند اعمال انجام شده توسط انسان را انجام دهد.»
به اين ترتيب میتوان ديد كه دو تعريف آخر كاملاً دو چيز را در تعريف نخست واضح كردهاند.
1ـ منظور از موجود يا ماشين هوشمند چيزی است شبيه انسان.
2ـ ابزار يا ماشينی كه قرار است محمل هوشمندی باشد يا به انسان شبيه شود، كامپيوتر است.
هر دوی اين نكات كماكان مبهم و قابل پرسشند. آيا تنها اين نكته كه هوشمندترين موجودی كه میشناسيم، انسان است كافی است تا هوشمندی را به تمامی اعمال انسان نسبت دهيم؟ حداقل اين نكته كاملاً واضح است كه بعضی جنبههای ادراك انسان همچون ديدن و شنيدن كاملاً ضعيفتر از موجودات ديگر است.
علاوه بر اين، كامپيوترهای امروزی با روشهايی كاملاً مكانيكی(منطقی) توانستهاند در برخی جنبههای استدلال، فراتر از توانايیهای انسان عمل كنند.
بدين ترتيب، آيا میتوان در همين نقطه ادعا كرد كه هوش مصنوعی تنها نوعی دغدغه علمی يا كنجكاوی دانشمندانه است و قابليت تعمق مهندسی ندارد؟(زيرا اگر مهندسی، يافتن روشهای بهينه انجام امور باشد، به هيچ رو مشخص نيست كه انسان اعمال خويش را به گونهای بهينه انجام میدهد). به اين نكته نيز باز خواهيم گشت. اما همين سؤال را میتوان از سويی ديگر نيز مطرح ساخت، چگونه میتوان يقين حاصل كرد كه كامپيوترهای امروزين، بهترين ابزارهای پيادهسازی هوشمندی هستند؟
رؤيای طراحان اوليه كامپيوتر از بابيج تا تورينگ، ساختن ماشينی بود كه قادر به حل تمامی مسائل باشد، البته ماشينی كه در نهايت ساخته شد(كامپيوتر) به جز دسته ای خاص از مسائل قادر به حل تمامی مسائل بود. اما نكته در اينجاست كه اين «تمامی مسائل» چيست؟ طبيعتاً چون طراحان اوليه كامپيوتر، منطقدانان و رياضيدانان بودند، منظورشان تمامی مسائل منطقی يا محاسباتی بود. بدين ترتيب عجيب نيست، هنگامی كه فوننيومان سازنده اولين كامپيوتر، در حال طراحی اين ماشين بود، كماكان اعتقاد داشت برای داشتن هوشمندی شبيه به انسان، كليد اصلی، منطق(از نوع به كار رفته در كامپيوتر) نيست، بلكه احتمالاً چيزی خواهد بود شبيه ترموديناميك!
به هرحال، كامپيوتر تا به حال به چنان درجهای از پيشرفت رسيده و چنان سرمايهگذاری عظيمی برروی اين ماشين انجام شده است كه به فرض اين كه بهترين انتخاب نباشد هم، حداقل سهلالوصولترين و ارزانترين و عمومیترين انتخاب برای پيادهسازی هوشمنديست.
بنابراين ظاهراً به نظر میرسد به جای سرمايهگذاری برای ساخت ماشينهای ديگر هوشمند، میتوان از كامپيوترهای موجود برای پيادهسازی برنامههای هوشمند استفاده كرد و اگر چنين شود، بايد گفت كه طبيعت هوشمندی ايجاد شده حداقل از لحاظ پيادهسازی، كاملاً با طبيعت هوشمندی انسانی متناسب خواهد بود، زيرا هوشمندی انسانی، نوعی هوشمندی بيولوژيك است كه با استفاده از مكانيسمهای طبيعی ايجاد شده، و نه استفاده از عناصر و مدارهای منطقی.
فون نيومن آلن تورينگ
در برابر تمامی استدلالات فوق می توان اين نكته را مورد تاُمل و پرسش قرار داد كه هوشمندی طبيعی تا بدان جايی كه ما سراغ داريم، تنها برمحمل طبيعی و با استفاده از روش های طبيعت ايجاد شده است. طرفداران اين ديدگاه تا بدانجا پيش رفتهاند كه حتی ماده ايجاد كننده هوشمندی را مورد پرسش قرار داده اند، كامپيوتر از سيليكون استفاده می كند، در حالی كه طبيعت همه جا از كربن سود برده است.
مهم تر از همه، اين نكته است كه در كامپيوتر، يك واحد كاملاً پيچيده مسئوليت انجام كليه اعمال هوشمندانه را بعهده دارد، در حالی كه طبيعت در سمت و سويی كاملاً مخالف حركت كرده است. تعداد بسيار زيادی از واحدهای كاملاً ساده (بعنوان مثال از نورونهای شبكه عصبی) با عملكرد همزمان خود (موازی) رفتار هوشمند را سبب می شوند. بنابراين تقابل هوشمندی مصنوعی و هوشمندی طبيعی حداقل در حال حاضر تقابل پيچيدگی فوق العاده و سادگی فوق العاده است. اين مساُله هم اكنون كاملاً به صورت يك جنجال(debate) علمی در جريان است.
در هر حال حتی اگر بپذيريم كه كامپيوتر در نهايت ماشين هوشمند مورد نظر ما نيست، مجبوريم برای شبيهسازی هر روش يا ماشين ديگری از آن سود بجوييم.
تاريخ هوش مصنوعی
هوش مصنوعی به خودی خود علمی است كاملاً جوان. در واقع بسياری شروع هوش مصنوعی را 1950 می دانند زمانی كه آلن تورينگ مقاله دورانساز خود را در باب چگونگی ساخت ماشين هوشمند نوشت (آنچه بعدها به تست تورينگ مشهور شد) تورينگ درآن مقاله يك روش را برای تشخيص هوشمندی پيشنهاد میكرد. اين روش بيشتر به يك بازی شبيه بود.
فرض كنيد شما در يك سمت يك ديوار (پرده يا هر مانع ديگر) هستيد و به صورت تله تايپ باآن سوی ديوار ارتباط داريد و شخصی از آن سوی ديوار از اين طريق با شما در تماس است. طبيعتاً يك مكالمه بين شما و شخص آن سوی ديوار میتواند صورت پذيرد. حال اگر پس از پايان اين مكالمه، به شما گفته شود كه آن سوی ديوار نه يك شخص بلكه (شما كاملاً از هويت شخص آن سوی ديوار بیخبريد) يك ماشين بوده كه پاسخ شما را میداده، آن ماشين يك ماشين هوشمند خواهد بود، در غير اين صورت(يعنی در صورتی كه شما در وسط مكالمه به مصنوعی بودن پاسخ پی ببريد) ماشين آن سوی ديوار هوشمند نيست و موفق به گذراندن تست تورينگ نشده است.
بايد دقت كرد كه تورينگ به دو دليل كاملاً مهم اين نوع از ارتباط(ارتباط متنی به جای صوت) را انتخاب كرد. اول اين كه موضوع ادراكی صوت را كاملاً از صورت مساُله حذف كند و اين تست هوشمندی را درگير مباحث مربوط به دريافت و پردازش صوت نكند و دوم اين كه بر جهت ديگری هوش مصنوعی به سمت نوعی از پردازش زبان طبيعی تاكيد كند.
در هر حال هر چند تاكنون تلاشهای متعددی در جهت پياده سازی تست تورينگ صورت گرفته مانند برنامه Eliza و يا AIML (زبانی برای نوشتن برنامههايی كه قادر به chat كردن اتوماتيك باشند) اما هنوز هيچ ماشينی موفق به گذر از چنين تستی نشده است.
همانگونه كه مشخص است، اين تست نيز كماكان دو پيش فرض اساسی را در بردارد:
1ـ نمونه كامل هوشمندی انسان است.
2ـ مهمترين مشخصه هوشمندی توانايی پردازش و درك زبان طبيعی است.
درباره نكته اول به تفصيل تا بدين جا سخن گفته ايم؛ اما نكته دوم نيز به خودی خود بايد مورد بررسی قرارگيرد. اين كه توانايی درك زبان نشانه هوشمندی است تاريخی به قدمت تاريخ فلسفه دارد. از نخستين روزهايی كه به فلسفه(Epistemology) پرداخته شده زبان هميشه در جايگاه نخست فعاليتهای شناختی قرار داشته است. از يونانيان باستان كه لوگوس را به عنوان زبان و حقيقت يكجا به كار میبردند تا فيلسوفان امروزين كه يا زبان را خانه وجود میدانند، يا آن را ريشه مسائل فلسفی میخوانند؛ زبان، همواره شاُن خود را به عنوان ممتازترين توانايی هوشمندترين موجودات حفظ كرده است.
با اين ملاحظات میتوان درك كرد كه چرا آلن تورينگ تنها گذر از اين تست متظاهرانه زبانی را شرط دستيابی به هوشمندی میداند.
تست تورينگ اندكی كمتر از نيمقرن هوش مصنوعی را تحت تاُثير قرار داد اما شايد تنها در اواخر قرن گذشته بود كه اين مسئله بيش از هر زمان ديگری آشكار شد كه متخصصين هوش مصنوعی به جای حل اين مسئله باشكوه ابتدا بايد مسائل كماهميتتری همچون درك تصوير (بينايی ماشين) درك صوت و… را حل كنند.
به اين ترتيب با به محاق رفتن آن هدف اوليه، اينك گرايشهای جديدتری در هوش مصنوعی ايجاد شدهاند.
در سالهای آغازين AI تمركز كاملاً برروی توسعه سيستمهايی بود كه بتوانند فعاليتهای هوشمندانه(البته به زعم آن روز) انسان را مدل كنند، و چون چنين فعاليتهايی را در زمينههای كاملاً خاصی مانند بازیهای فكری، انجام فعاليتهای تخصصی حرفهای، درك زبان طبيعی، و…. میدانستند طبيعتاً به چنين زمينههايی بيشتر پرداخته شد.
در زمينه توسعه بازیها، تا حدی به بازی شطرنج پرداخته شد كه غالباً عدهای هوش مصنوعی را با شطرنج همزمان به خاطر میآورند. مككارتی كه پيشتر اشاره شد، از بنيانگذاران هوش مصنوعی است اين روند را آنقدر اغراقآميز میداند كه میگويد:
«محدود كردن هوش مصنوعی به شطرنج مانند اين است كه علم ژنتيك را از زمان داروين تا كنون تنها محدود به پرورش لوبيا كنيم.» به هر حال دستاورد تلاش مهندسين و دانشمندان در طی دهههای نخست را میتوان توسعه تعداد بسيار زيادی سيستمهای خبره در زمينههای مختلف مانند پزشكی عمومی، اورژانس، دندانپزشكی، تعميرات ماشين،….. توسعه بازیهای هوشمند، ايجاد مدلهای شناختی ذهن انسان، توسعه سيستمهای يادگيری،…. دانست. دستاوردی كه به نظر میرسد برای علمی با كمتر از نيم قرن سابقه قابل قبول به نظر میرسد.
AIهای متخصص:
اين نمونه از نرم افزارها برای انجام يکسری کارهای تخصصی طراحی شده اند و به طبع از قابليتهای بالايی نيز برخودار ميباشند. اينگونه برنامه ها معمولاً به يک بانک اطلاعاتی بسيار وسيع مجهز ميباشند که آنها را قادر به پاسخگويی به سوالات کاربران ميسازد.
در حقيقت اين برنامه ها برای رشته هايی مانند پزشکی، مهندسی و… طراحی شده اند و وظيفه آنها ذخيره سازی اطلاعات مفيدی است که به خاطر سپردن آنها توسط انسان بسار دشوار ميباشد اينگونه برنامه هاازيك اشكال پايه اي رنج ميبرند.
تا زمانی که سوال مطرح شده توسط کاربر در محدوده اطاعات ذخيره شده در آنهاست هيچ مشکلی پيش نخواهد آمد اما ضعف آنها هنگامی پديدار ميشود که سوال مطرح شده کمی خارج از حوزه اطلاعاتی آنها قرار گيرد که در اين صورت اينگونه برنامه ها به کلی از پاسخ گويی به سوال درمانده خواهند بود.
اين ناتوانی از آنجا ناشی ميشود که اين دسته از برنامه ها توانايی generalization يا عموميت دادن را ندارند.
منظور از generalization و يا عموميت دادن چيست؟
منظور از generalization توانايی خلق کردن اطلاعات جديد بر اساس اطلاعات قديمی است. تمامی انسان ها از اين توانايی برخوردار هستند اگرچه ماشين ها به طور کامل و همانند انسان چنين توانايی را ندارند.
برای درک بهتر موضوع به اين مثال ساده توجه کنيد:
جان در يک کمپانی کار ميکند. در محل کار او کابلهايی وجود دارد که توسط يکسری اشکال خواص علامت گذاری شده اند و نشانگر اين موضوع هستند که اين کابل ها حامل برق ميباشند.
جان در محل ديگری يکسری کابل با علائم مشابه را مشاهده ميکند و نتيجه ميگيرد که اين کابل ها نيز حاوی جريان برق هستند.
تكنيك ها وزبانهاي برنامه نويسي هوش مصنوعي
ما در عصري زندگي مي كنيم كه جامعه شناسان آن را عصر انقلاب كامپيوتر نام نهاده اند و مانند هر انقلاب واقعي ديگر، انقلابي است گسترده و فراگير و تأثير پايداري برجامعه خواهد داشت.
اين انقلاب در اقتصاد امروز و نظم جامعه، به همان ميزان انقلاب صنعتي در قرن 19 تأثير دارداين تحولات قادر است الگوي فكري و فرم زندگي هر فرد را تغيير دهد.
انقلاب كامپيوتر توان ذهني ما را گسترش مي دهد.
عملكرد اولية برنامه نويسي هوش مصنوعي (AI) ايجاد ساختار كنترلي مورد لزوم براي محاسبه سمبوليك است خصوصيات اين ساختارها به مقدار زيادي موجب تشخيص خصوصياتي مي شود كه يك زبان كاربردي مي بايستي فراهم كند.
در اين مقدمه به يك سري خصوصيات مورد نظر براي زبان برنامه نويسي سمبوليك مي پردازيم و زبانهاي برنامه نويسي LISP و PROLOG را معرفي خواهيم كرد.
اين دو زبان علاوه بر اين كه از مهمترين زبانهاي مورد استفاده در هوش مصنوعي هستند، خصوصيات semantic و syntactic آنها نيز باعث شده كه آنها شيوه ها و راه حل هاي قوي براي حل مسئله ارئه كنند.
تأثير قابل توجه اين زبانها بر روي توسعه AI از جمله توانائي آنها به عنوان «ابزارهاي فكر كردن» مي باشد كه از جمله نقاط قوت آنها در زبانهاي برنامه نويسي مي باشد.
همان طور كه هوش مصنوعي مراحل رشد خود را طي مي كند زبانهاي LISP و PROLOG بيشتر مطرح مي شوند.
اين زبانها كار خود را در محدودة توسعه و prototype سازي سيستم هاي AI در صنعت و دانشگاهها دنبال مي كنند.
اطلاعات در مورد اين زبانها به عنوان بخشي از مهارت هر برنامه نويس AI مي باشد ما به بررسي اين دو زبان در هوش مصنوعي مي پردازيم.
آنــــچه را كـــه نمي دانيم موجب دردسر و گرفتاري ما نخواهد شد، بلكه دردسرها از دانسته ها سرچشمه مي گيرند.
زبان ، شناخت و خلاصه پردازي
توانايي شكل گيري خلاصه برداري از تجربيات از توانمند ترين و اساسي ترين توانائي هاي ذهن انسان است خلاصه پردازي به ما اين اجازه را مي دهد كه به فهم جزئيات از يك محدوده ي كلي اطلاعات مربوط به يك خصوصيت كلي سازمان و رفتار برسيم . اين خلاصه ها به ما اجازه شناخت و درك كامل موارد دريافت شده در حوزه خاص را مي دهند . اگر ما وارد يك خانه شويم كه به خوبي ساخته شده باشد ، راههاي خود را به اطراف پيدا خواهيم كرد . ساختار خصوصيات اطاق نشيمن ، اطاق خواب ،آشپزخانه و حمام عموماً از ويژگيهاي يك مدل خانة استاندارد مي باشد .
خلاصه پردازي به ما حس شناخت خانه هاي متفاوت را مي دهد . يك تصوير ممكن است بياني قوي تر از هزاران كلمه داشته باشد ، اما يك خلاصه مشخصاً بيان كنندة خصوصيات مهم يك كليت از نوع تصوير است .
وقتي كه ما به تئوري براي توصيف كلاس هاي يك پديده مي پردازيم ، خصوصيات و ويژگيهاي كمي و كيفي مربوط به كلاس از كل جزئيات خلاصه مي شود .
كه اعضاء به خصوص خود را مشخص مي كند . اين كاهش جزئيات به وسيله قدرت توصيف و پيش بيني يك نظريه ارزشمند جبران مي شود .
خلاصه سازي يكي از ابزارهاي اساسي شناخت و ارزيابي كليت هاي جهان اطراف ما و همچنين ساختار ذهني ما است . در حقيقت اين پروسه به طور مداوم براساس دانش و اطلاعات صورت مي گيرد . دانش و اطلاعا نيز در لايه ها و بخش هايي از خلاصه پردازي ساخته مي شود كه از مكانيسم هايي كه ساختار را فشرده ساخته و از حس اوليه به سمت يك سري تئوري هاي علمي سوق داده مي شود و در نهايت بيشتر اين ايده ها دربارة ايده هاي ديگر و نشأت گرفته از آنها مي باشد .
خلاصه پردازي طبقه بندي شده (سلسله مراتبي ) :
ساختار و سازمان آزمايش و تجربه در ارتباط با توصيفات كلاس هاي خلاصه سازي يكي از ابزارهاي شناخت رفتار و ساختار سيستم هاي مركب است كه شامل برنامه هاي كامپيوتر مي شوند .
همانند رفتار يك حيوان كه ممكن است بدون توجه به فيزيولوژي سيستم عصبي نهفته در پشت آن مورد مطالعه قرار گيرد .
يك الگوريتم داراي خصوصيات مربوط به خود مي باشد كه كاملاً آن را از برنامه اي كه آن را به كار مي برد جدا مي سازد .
به عنوان مثال دو نوع كاربر متفاوت جستجوي باينري را در نظر بگيريد .
يكي از آنها يعني 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 كه بر روي كاربرد زبان دارند بحث مي كنيم.
اين موارد عبارتند از :
- پشتيباني از محاسبه سمبوليك
- انعطاف پذيري كنترل
- پشتيباني از متدولوژي و روش هاي برنامه نويسي جستجويي
- پويايي
- مستنند سازي خوب و واضح
- پشتيباني از محاسبات سمبوليك
گرچه روش هاي زيادي براي سازماندهي اطلاعات در يك سطح نشانه وجود دارد . ولي تمامي آنها نهايتاً به عنوان عملكردهايي بر روي نشانه ها به كار مي روند .
اين روش در تئوري نشانه هاي آقاي 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- پشتيباني نرم افزاري براي برنامه نويسي جستجويي
ما اين عناوين را در پاراگراف هاي زير مورد بحث و بررسي قرار خواهيم داد :
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 و مشكل بودن پيش بيني عملكرد هر سيستم توليد، اهميت اين پشتيباني هاي سهل نمي تواند قابل تصور باشد.
Dynamic Binding and constraint propagation
زبانهاي معمول نياز به اين دارند كه بيشتر برنامه هاي مرتبط با آن در يك مدت زمان خاص تشخيص داده شوند.
شامل اتصال دادن متغيرها به محيط حافظه و انتقال روش هاي به نام هايشان مي باشد. با اين حال بسياري از روش هاي برنامه نويسي پيشرفته مثل، برنامه نويسي هاي شيء گرا نياز به اين اتصال ها براي تشخيص ديناميكي دارند.
برنامه هاي Prolog و LISP پشتيبان قيدگذاري ديناميكي هستند. از يك نقطه نظر AI يكي از مهمترين منافع قيدگذاري ديناميكي پشتيباني از برنامه نويسي ساختاري است. اغلب مسائل مربوط به يك برنامه AI نيـــاز به ايــــن دارد كه ارزش هاي مشخصه هاي خاص ناشناخته باقي مي ماند تا زماني كه اطلاعات لازم جمع آوري شوند.
اين اطلاعات ممكن است به گونه يك سري از ساختارها بر اساس ارزش ها باشد كه يك متــغير از آن انتظار دارد. هم چنانكه ساختارها جمع شوند يك سري از احتمالات كاهش مي يابد و در نهايت به يك راه حل منتهي مي شود كه تمامي ساختارها را تحت پوشش مطلوب قرار مي دهد.
يك نمونه ساده از اين نظريه ممكن است در يك سيستم تشخيص پزشكي ديده شود كه اطلاعات دربارة نوع بيماري مريض جمع آوري مي شود تا زماني كه اطلاعات مربوطه محدود به نوع خاصي از بيمار شوند زبان برنامه نويسي مقايسه اي اين روش از نوع متغير قيدگذاري اوليه يا توانايي حصول يك متغير نامركب مي باشد در حاليكه آن را در كد برنامه جمع مي كند.
LISP و PROLOG به متغيرها اجازة ترجمه وافزايش غيرمركب را مي دهند، در حاليكه توصـــيف ارتبـــاطات و وابستگي هاي بين اين متغيرها و ديگر واحدهاي برنامه را انجام مي دهد. اين موجب كاربرد آسان و طبيعي نوع قيد مي شود.
- تعاريف مشخص و واضح
لازم است كه زبانهاي 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 وبراي آموزش اصول مفاهيم علم كامپيوتر مورد استفاده قرار مي گيرند.
- برنامه نويسي شيء گرا
برخلاف برنامه 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 اجازه كاربرد سريعتر و ساده تر را كه اغلب كوچكتر و ارزانتر است را در يك ماشين ترجمه ايجاد مي كنند.
- يك نمونه هيبريد
بسياري از نمونه هاي مطلوب اصولاً از طريق اشيا، ارتباطات و كنش و واكنش متقابل بين آنها واقع يم شود در شكل زير يك نمونه اتصال به وسيله باطري همراه با يك سوئيچ براي يك لامپ (شكل 364) در نظر گرفته شده است.
لامپ، باطري و سوئيچ ممكن است هر كدام به وسيله كلاسها بيان شوند كه بيانگر ويژگيهاي باطري، سوئيچ و لامپ باشد . مشخصه هاي الكترونيكي شكل 2 ممكن است به عنـــوان موارد بخصوصي از اين كلاس هاي كلي بيان مي شوند. توجه داشته باشيد كه نمونه ها داراي مقادير نمونه اي مربوط به كلاس خاص شيء مربوط به خود مي شوند به عنوان مثال اگر سوئيچ 1 در حالت خاموش قرار گيرد. قسمت كنترل كه مربوط مي شود به لامپ 1 تحت تأثير قرار خواهد گرفت.
يك قانون ممكن است در اينجا به وجود بيايد كه :
اگر نور وارد AND نشود، سوئيچ AND را بسته و باطري درست است بنابراين بايد به قسمتي كه ممكن است آسيب ديده باشد مراجعه كرد.
در نمايش هيبريد قوانين داراي ويژگيهايي هستند كه بيشتر بيانگر مقدار اهميت كلاسها و اشياء مي باشند.كه در شكل 3 به آن اشاره شده است. اين قانون ممكن است به عنوان بخشي از قانون اوليه سيستم در تلاش براي به جريان انداختن اين مدار باشد كه در جاي ديگر براي راه اندازي سوئيچ كنترل براي حالات متغير است.
- انتخاب زبان كاربردي
همانگونه كه هوش مصنوعي به مرحله رشد مي رسد وقابليت هاي خود را در طيف وسيعي از مسائل كاربردي به اثبات مي رساند اعتماد به LISP و PROLOG نيز مدنظر مي باشد، موارد مربوط به توسعة نرم افزاري، همانند نياز به تداخلگرها به صورت ساده وآسان همراه با يك كد منطقي تا استفاده از AI در Moduleهاي كوچكتر و يا بزرگتر در برنامه ها و نياز به ايجاد توسعه استاندارد متأثر از مشتريان دولتي و يا گروهي موجب توسعة سيستم هاي AI در انواع زبانهاي مثل C ، , C++ Java و Smalltalk شده است.
كــه زبــانهاي LISP و PROLOG كار خود را در محدودة توسعه و Prototype سازي سيستم هاي AI در صنعت و دانشگاهها دنبال مي كنند.
يـــك اطـــلاعات و دانش كاربردي مربوط به اين زبانها به عنوان بخشي از مهارت هر برنامه نويس AI مي باشد. علاوه بر اين، اين زبانها به عنوان زمينه اي براي بسياري از اين خصوصيات مي باشند كه در ادامه همكاري با زبانهاي برنامه نويسي جديد مي باشند.
احتمالاً بهترين نمونه از اين زبانها Java ميباشد كه متناسب با استفاده اولويت ديناميكي اش، داراي مديريت حافظه اتوماتيك و ديگر خصوصياتي است كه در زبانهاي كه ترجمه شده وجود دارد به نظر مي رسد كه ديگر زبانهاي برنامه نويسي براي رسيدن به حد مطلوب از استانداردهاي اين زبانها استفاده مي كنند.
هم چنانكه اين تكامل صورت مي پذيرد و ادامه مي يابد دانش مربوط به LISP و PROLOG يا Small talk و روش هاي برنامه نويس قادرند تنها از نظر مقدار توسعه يابند.
بنابراين، از اينكه از يكي از اين زبانهاي AI استفاده كنيم يا خود را در برنامه نويسي با زبانهاي C++ و C و Java يا يكي از زبانهاي رقيب پيدا كنيم راضي و قانع خواهيم بود.
الگوريتم هاي ژنتيكي
يكي از ابزارهائي كه براي تكامل موجودات ديجيتالي استفاده مي شود الگوريتمهاي ژنتيكي مي باشد و الگوريتمهاي ژنتيكي رشته اي از بيتها مي باشد كه براي حل بعضي مسائل مهندسي مورد استفاده قرار مي گيرد….الگوريتمهاي ژنتيكي براي يافتن بهترين جوابي كه با مساله سازگاري داشته باشد به كار مي رود جواب مطلوب از طريق تغيرات و جهشهائي از رشته هاي ژنتيكي به دست مي ايد….ايده اصلي الگوريتمهاي ژنتيكي برگرفته از كارهاي چارلز داروين است..بنابراين نتيج حاصل از اين دانش قابل استفاده در فلسفه نيز مي باشد…محققان در الگوريتمهاي ژنتيكي از اصطلاح انتخاب طبيعي براي بيان تكامل ژنتيكي استفاده مي كنند طراحان الگوريتمهاي ژنتيكي يك fitness function معرفي مي كنند كه هدف از ان تعيين اين است كه كدام يك از رشته هاي ژنتيكي مطلوب مي باشد و سپس يك سيستم هوش مصنوعي روي جستجوگرهاي تصادفي براي حل مساله تعريف مي كنند …براي اينكه مطالب بالا بهتر توضيح بدهم مراحل اصلي يك الگوريتم ژنتيكي به ترتيب توضيح ميدهم…
1- به طور تصادفي يك جمعيت اوليه (M(0 را توليد مي كند.
2-شايستگي fitness هر كدام از اعضاي m متعلق به (M(t را محاسبه مي كند و انرا با (u(t نمايش مي دهند.
3- احتمال انتخاب هر كدادم از اعضاي m متعلق به (M(t را محاسبه مي كند كه متناسب با (u(t مي باشد.
4-جمعيت (1+M(t را به كمك احتمال انتخاب اعضا و اپرتورهاي ژنتيكي توليد مي كنيم.
5-مرحله پنجم را انقدر ادامه مي دهيم تا به جواب مطلوب برسيم..
مي دانيد كه در طبيعت حيواناتي كه قويتر هستند احتمال بقاي نسلشان زيادتر هست به بيان ديگر حيوانات قويتر به واسطه شايستگي انها ( قدرت بدني بالاتر) احتمال انتخابشان بالاتر مي رود ( انتخاب حيوان نر قويتر به سرگروهي) در نتيجه نسل بعدي كه بچه هاي اين سرگروه مي باشند نيرومندتر مي شوند و به جواب مساله كه به وجود امدن نسلي سازگار با طبيعت ناحيه مي باشد نزديكتر مي شويم…..اميدوارم با اين مثال مفهوم الگوريتمهاي ژنتيك را متوجه شده باشيد.
تركيب انسان با سيستمهاي هوشمند
هرچقدر هم هوش مصنوعي پيشرفت كند باز نمي تواند انسان كنار بگذارد ..مسائلي مانند خلاقيت قابل شبيه سازي نيست كدام ربوتي مي تواند تنها با ديدن افتادن يك سيب مانند نيوتن قانون جازبه را نتيجه بگيرد؟؟!!! واقعيت اين است كه چنين چيزي غير ممكن است…پس لازم است انسان را با سيستمهاي هوش مصنوعي تركيب كنيم…يكي از وسايلي كه براي اينكار ااستفاده مي شود سيستم HMD مي باشد كه به چشم عقاب هم مشهور شده است ..اين سيستم شامل كلاه …يك سيستم نمايش دهنده و يك سنسور مشخص كننده جهتهاي مختلف سر خلبان مي باشد …خلبانان جنگي به خصوص موقعي كه براي فرار از موشكها سعي در استفاده از سوخت پس سوز و يا دور زدن سريع در شعاعي كمتر از شعاع مانور موشك مي كنند تحت شتاب زيادي قرار مي گيرند اين شتاب مي تواند كارائي دستها و بدن خلبان دچار اختلال كند به جز مردك چشمها و حركت خفيف سر…در اينجا اين سيستم به كمك خلبان مي ايد و از حركات سر و نوع حركت مردمك چشمها براي هدايت هواپيما و يا پرتاب موشكها استفاده مي كند…اين سيستم يك مزيت عمده ديگر هم دارد و ان توانائي در اولويت بندي خطر به كمك تغيرات رنگ و حذف اطلاعات غير ضروري است..جمع اوري اطلاعات از محيط به كمك دو دوربين كه در دو طرف كلاه نصب شده است صورت مي گيرد و با كمك زاويه ديد هر دوربين قادر به تعيين فاصله خلبان از هدف مي باشد كه يك محاسبه ساده مثلثاتي هست مشابه اين محاسبه در مغز ما ادمها هم به طور ناخود اگاه انجام مي شود و ما را قادر به تشخيص عمق مي كند….اين سيستم در جنگندهاي ميگ _29 و سوخو_27 و هليكوپتر اپاچي به كار مي رود….البته تنها كاربرد اين سيستم در كلاه خلبانها جنگي نيست بلكه اين سيستم به افرادي كه دچار قطع نخاع هم شده اند به نحوي كه امكان استفاده از دستهايشان را ندارند…امكان هدايت ويلچر و يا حتي ارتباط با كامپيوتر را مي دهد…تكنلوژي يك شمشير دو لبه است كه مي شود از ان به دو صورت استفاده كرد…
حيات مصنوعي
حيات مصنوعي تعميمي از دانش بيولوژي است و به دليل اين تعميم قادر به بررسي حياتي جز انچه ما در زمين مشاهده مي كنيم را دارد….براي اثبات اينكه حياتي به جز انچه مشاهده مي كنيم نيازي به اثبات تئوري پشقاب پرنده ها واون كوتوله هاي سبز نداريم …چند سال قبل غاري در روماني كشف شده است كه داراي نوعي حيات ديگر است ارتباط اين غار از محيط كره زمين مليونها سال است كه قطع شده است ولي نوعي حيات سولفوري موجود است كه بر خلاف ما موجودات كه از اكسيژن براي تنفس استفاده مي كنيم ازگازهاي سمي سولفوري استفاده مي كند تمام مدلهائي كه تا به حال بررسي شد درون اين غار مشاهده شده است و اين موضوع برتري هوش مصنوعي بر بيولوژي معمولي را مي تواند به راحتي نمايش بدهد….رابطه هوش مصنوعي و بيولوژي مشابه رابطه شيمي مواد غير الي و بيولوژي است….يكي از مهمترين مسائلي كه هوش مصنوعي در ان وارد شده است مسئله تكامل است …و با استفاده از مدلهاي انتخاب طبيعي كه روي زمين مليونها سال پيش حيات را به وجود اورده است در جستجوي سيستمهاي هستند كه بدون كمك داده هاي واسطه به فعاليت خود ادامه دهد .موجودات عالي محدوديتهاي خود به لحاظ سرعت و ميزان انرژي دارند ولي رباتها چنين محدوديتهائي ندارند پس چه لزومي دارد تمام مدت همان مسيري را كه طبيعت مي رود تعقيب كنيم طبيعت فقط منبع الهام دانش رباتيك است نه الگوي صد در صد…ما تنها با طبيعت نزديك مي شويم ولي هميشه با طبيعت فرسنگها فاصله داريم…هوش مصنوعي يك دانش بين رشته اي هست وافراد هر رشته به شيوه خود به ان نگاه مي كنند..سعي مي كنم از تعصب روي طرز نگاهي به اين موضوع پرهيز كنم الن براي بررسيهاي مدلهاي اقتصادي از رياضيات الفرد رمزي استفاده مي شود ولي تا حالا مدلي كه اقتصاد به صورت حيات ببيند مشاهده نكردم اگر كسي مقاله اي در اين زمينه داشت خوشحال مي شوم به من معرقي كند…بايد مطلب جالبي باشد فكر مي كنم اگر اقتصاد به صورت حيات ببينيم افراد محتكر و نزولخورها جز دسته انگلها طبقه بندي بشوند.
AI در بازی ها:
AI در بازيهای کامپيوتری معمولاً در نقش دشمن و يا متحدين شما ظاهر ميشود.
در برخی موارد طراحان بازی ترجيح ميدهند تا بيشتر بر روی بالا بردن گرافيک بازی سرمايه گذاری کنند تا AI و اين موضوع باعث میشود که بازيکنان خبره به راحتی AI را شکست دهند و يا در برخی موارد از آنجايی که AI به کدهای اصلی بازی دسترسی دارد با تقلب بازی را برده و موجب عصبانيت کاربر ميشود.
منظور بازيهاي اكشن قوي مانند مكس پين و يا بازيهاي استراتژيك فكري مانند بازي قلعه شركت دارينوس ويا
عصر خدايان مايكروسافت و يا عصر امپراتوران مي باشد.
طبق آخريت تحقيقات علمي كه انجام شده است افرادي كه گيمهاي اكشن انجام مي دهند توانائي تصميم گيري سريعتري بر اساس يك صحنه شلوغ را دارند اين توانائي كمي نيست همه ما در تصادفات به دليل نديدن مناسب راه حل فقط اوضاع را خطرناكتر مي كنيم پس اين توانائي در زندگي مي تواند به ما كمك كند.
حال مي پردازيم به دسته دوم يعني گيمهاي استراتژيك واقعا نميشه از كنار اين بازيهاي فكري جذاب بي تفاوت گذشت داراي سناريو جذاب و كاملا فكري اين گيمها براي آموزشهاي نظامي براي كاهش هزينه هاي آموزش به كار مي رود واقعيت اينه كه كمتر ميشه در مقابل جادوي اين نوع بازيها مقاومت كرد.
اين گيمها قدرت برنامه ريزي ذرازمدت و نيز كشف روشهاي جديد فكري به شما مي دهد…شما مي توانيد
حتي طرحهائي را بريزيد كه حتي طراح نيز فكر انها را انجام نداده است….
گيمهاي استراتژيك پيش درامدي بر تكنولوژي هوش مصنوعي مي باشند كه شما اين نوع هوش در بازي
دارك رين مي بينيد .
آيا واقعا روزي ميرسه كه با ساخته هاي دست خودمون وارد جنگ بشيم؟
تا حالا در مورد فوائد گيمهاي كامپيوتري گفتيم ولي واقعيت اين است گيمها فقط يك ابزار است و هرگز نبايد به انها اجازه دهيم بر زندگي ما سايه بيندازد چون مهمترين بازي جهان بازي زندگي است كه نبايد انرا ببازيم و شكست بخوريم.
Neutral nets
Neutral nets مدل رياضی مغز ميباشد که در حقيقت همانند مغز موجودات زنده عمل ميکند اما بر خلاف ساير AI ها بر مبنای منطق طراحی نشده است. مبنای ساختاری Neutral nets در حقيقت گروهی از neurones (سلول های عصبی) ها هستند که با هم در ارتباط ميباشند و دارای بار رياضی هستند.
اين گونه سيستم ها قادر به يادگيری از تجربيات خود هستند و اين باعث میشود که آنها تا حدودی از توانايی generalize کردن برخوردار شوند و اين يکی از مزايای اين گونه سيستم ها ميباشد.
Neutral nets در کنار مزايايی که دارد از معايبی نيز برخوردار هستند. برای مثال برای آماده کردن آنها به کار و وقت بسيار زيادی نياز است زيرا اينگونه سيستم ها قبل از به کار گرفته شدن بايد آموزش داده شوند. آنها از برخی جهات به کودکان شباهت دارند و هر مطلب بايد چندين بار برای آنها تکرار شود تا آن را بياموزند.
كاربرد سيستم هاي خبره در كتابخانه ها
كاربرد سيستم هاي خبره و هوش مصنوعي در امور كتابخانه هنوز در مراحل اوليه است . چند پروژه در زمينه هاي كتابداري و خدمات اطلاع رساني به مراجعان تحت بررسي قرار گرفته و در اين زمينه خوش بيني زيادي مبني بر به كارگيري سيستم هاي خبره در اكثر حوزه هاي كتابداري و اطلاع رساني وجود دارد . مشكل اساسي كه در حال حاضر وجود دارد ايجاد (پايگاه دانش ) است .(12) مثلا “سيستم هبره را مي توان براي حوزة بخصوص از خدمات مرجع ايجاد نمود , اما اين سيستم قادر نيست (پايگاه دانش ) به وجود آورد كه در برگيرندة كلية فعاليت هاي بخش مرجع باشد .
در اينجا اين سؤال مطرح است كه چه دلايلي براي به كارگيري سيستم هاي خبره دركتابخانه وجود دارد ؟ آيا اين سيستم ها كار روزانة كتابداران را بهبود مي بخشند ؟به عنوان مثال ,يك سيستم خبره مي تواند به كتابدار در شناخت و بهبود كارايي اموري چون خدمات فني , جستجو در پايگاه هاي پيوسته و خدمات دادن به مراجعان بيش تر ياري رساند . اگر يك سيستم خبره خوب برنامه ريزي شده باشد باعث افزايش كيفيت خواهد شد . اين سيستم اشتباهاتي را كه گاهي از انسان سر مي زند مرتكب نخواهد شد و مي تواند در فراهم آوري اطلاعات تكراري سودمند باشد . حوزه هايي كه سيستم خبره مي تواند در آن فعاليت كند عبارت اند از :فهرستنويسي, جستجو در پايگاه هاي اطلاعاتي , نمايه سازي , مديريت و مرجع.
افق های هوش مصنوعی
در 1943،Mcclutch (روانشناس، فيلسوف و شاعر) و Pitts (رياضيدان) طی مقالهای، ديدههای آن روزگار درباره محاسبات، منطق و روانشناسی عصبی را تركيب كردند. ايده اصلی آن مقاله چگونگی انجام اعمال منطقی به وسيله اجزای ساده شبكه عصبی بود. اجزای بسيار ساده (نورونها) اين شبكه فقط از اين طريق سيگنال های تحريك (exitory) و توقيف (inhibitory) با هم درتماس بودند. اين همان چيزی بود كه بعدها دانشمندان كامپيوتر آن را مدارهای (And) و (OR) ناميدند و طراحی اولين كامپيوتر در 1947 توسط فون نيومان عميقاً از آن الهام میگرفت.
امروز پس از گذشته نيمقرن از كار Mcclutch و Pitts شايد بتوان گفت كه اين كار الهام بخش گرايشی كاملاً پويا و نوين در هوش مصنوعی است.
پيوندگرايی (Connectionism) هوشمندی را تنها حاصل كار موازی و همزمان و در عين حال تعامل تعداد بسيار زيادی اجزای كاملاً ساده به هم مرتبط میداند.
شبكههای عصبی كه از مدل شبكه عصبی ذهن انسان الهام گرفتهاند امروزه دارای كاربردهای كاملاً علمی و گسترده تكنولوژيك شدهاند و كاربرد آن در زمينههای متنوعی مانند سيستمهای كنترلی، رباتيك، تشخيص متون، پردازش تصوير،… مورد بررسی قرار گرفته است.
علاوه بر اين كار بر روی توسعه سيستمهای هوشمند با الهام از طبيعت (هوشمندیهای ـ غير از هوشمندی انسان) اكنون از زمينههای كاملاً پرطرفدار در هوش مصنوعی است.
الگوريتم ژنيتك كه با استفاده از ايده تكامل داروينی و انتخاب طبيعی پيشنهاد شده روش بسيار خوبی برای يافتن پاسخ به مسائل بهينه سازيست. به همين ترتيب روشهای ديگری نيز مانند استراتژیهای تكاملی نيز (Evolutionary Algorithms) در اين زمينه پيشنهاد شده اند.
دراين زمينه هر گوشهای از سازو كار طبيعت كه پاسخ بهينهای را برای مسائل يافته است مورد پژوهش قرار میگيرد. زمينههايی چون سيستم امنيتی بدن انسان (Immun System) كه در آن بيشمار الگوی ويروسهای مهاجم به صورتی هوشمندانه ذخيره میشوند و يا روش پيدا كردن كوتاهترين راه به منابع غذا توسط مورچگان (Ant Colony) همگی بيانگر گوشههايی از هوشمندی بيولوژيك هستند.
گرايش ديگر هوش مصنوعی بيشتر بر مدل سازی اعمال شناختی تاُكيد دارد (مدل سازی نمادين يا سمبوليك) اين گرايش چندان خود را به قابليت تعمق بيولوژيك سيستمهای ارائه شده مقيد نمیكند.
CASE-BASED REASONING يكی از گرايشهای فعال در اين شاخه میباشد. بعنوان مثال روند استدلال توسط يك پزشك هنگام تشخيص يك بيماری كاملاً شبيه به CBR است به اين ترتيب كه پزشك در ذهن خود تعداد بسيار زيادی از شواهد بيماریهای شناخته شده را دارد و تنها بايد مشاهدات خود را با نمونههای موجود در ذهن خويش تطبيق داده، شبيهترين نمونه را به عنوان بيماری بيابد.
به اين ترتيب مشخصات، نيازمندیها و توانايیهای CBR به عنوان يك چارچوب كلی پژوهش در هوش مصنوعی مورد توجه قرارگرفته است. البته هنگامی كه از گرايشهای آينده سخن میگوييم، هرگز نبايد از گرايشهای تركيبی غفلت كنيم. گرايشهايی كه خود را به حركت در چارچوب شناختی يا بيولوژيك يا منطقی محدود نكرده و به تركيبی از آنها میانديشند.
شايد بتوان پيشبينی كرد كه چنين گرايشهايی فرا ساختارهای (Meta –Structure) روانی را براساس عناصر ساده بيولوژيك بنا خواهند كرد
هوش مصنوعی و سرنوشت بشر
اين فکر که روزی ماشينها موجودات برتر بر روی زمين شوند رعب انگيز به نظر می رسد و همين امر باعث مخالفت عده زيادی در دادن کنترل و قدرت بيش از حد به ماشينهای هوشمند می باشد. اما اگر روزی برسد که واقعاً ماشينها آنقدر هوشمند و توانا شده باشند که بتوانند انسانها را مغلوب کنند (چه از نظر هوش و چه از نظر قدرت فيزيکی)، در آنصورت آنها لياقت خواهند داشت تا موجودات برتر باشند. چه ما خوشمان بيايد يا نه. اين درس بزرگ پديده تکامل (Evolution) هست که ميلياردها سال بر روی کره زمين وجود داشته. موجودی که نتواند خود را با خطرات محيطی وفق دهد در مبارزه بر سر منابع محدود مغلوب شده و منقرض ميشود.
خود ما نيز هر روز حيوانات ديگر را ميخوريم بدون آنکه احساس گناه کنيم. ما هوشمندتر از آنها هستيم پس ميتوانيم آنها را بخوريم.(حتی گياهخواران هم از اين قضيه مستثنی نيستند. آنها نيز با خوردن گياه یک موجود زنده ولی کم هوش را ميخورند). آيا اگر ماشينها نيز روزی شبيه همين کار را با انسانها بکنند خيلی عجيب خواهد بود؟ اين یک واقعيت تلخ است که خواهی نخواهی بوقوع خواهد پيوست. جرقه اين واقعه زده شده و امروزه نيز شاهد آن هستيم که نه تنها بسياری از کارهای مهم به ماشينهای هوشمند سپرده شده بلکه آنها اين کارها را بسيار بهتر از ما نيز انجام می دهند.