لماذا يتم استخدام Lisp في الذكاء الاصطناعي؟[مغلق]

StackOverflow https://stackoverflow.com/questions/130475

  •  02-07-2019
  •  | 
  •  

سؤال

لقد كنت أتعلم لغة Lisp لتوسيع آفاقي لأنني سمعت أنها تُستخدم في برمجة الذكاء الاصطناعي.بعد القيام ببعض الاستكشاف، لم أجد بعد أمثلة للذكاء الاصطناعي أو أي شيء في اللغة من شأنه أن يجعله أكثر ميلًا إليه.

هل تم استخدام Lisp في الماضي لأنها كانت متوفرة أم أن هناك شيئًا أفتقده؟

هل كانت مفيدة؟

المحلول

تم استخدام Lisp في الذكاء الاصطناعي حتى نهاية الثمانينات.ومع ذلك، في الثمانينيات، تم بيع لغة Common Lisp بشكل مفرط في عالم الأعمال باعتبارها "لغة الذكاء الاصطناعي"؛أجبر رد الفعل العكسي معظم مبرمجي الذكاء الاصطناعي على استخدام لغة C++ لبضع سنوات.في هذه الأيام، عادةً ما تتم كتابة النماذج الأولية بلغة ديناميكية أحدث (Perl، وPython، وRuby، وما إلى ذلك) وتكون تطبيقات البحث الناجح عادةً بلغة C أو C++ (أحيانًا Java).

إذا كنت مهتمًا بالسبعينيات...حسنًا، لم أكن هناك.لكنني أعتقد أن ليسب كان ناجحًا في أبحاث الذكاء الاصطناعي لثلاثة أسباب (حسب الأهمية):

  1. Lisp هي أداة نماذج أولية ممتازة.كان الأفضل لمدة طويلة.لا تزال Lisp رائعة في معالجة مشكلة لا تعرف كيفية حلها بعد.هذا الوصف يميز الذكاء الاصطناعي بشكل مثالي.
  2. يدعم Lisp البرمجة الرمزية بشكل جيد.كان الذكاء الاصطناعي القديم رمزيًا أيضًا.كما أنها كانت فريدة من نوعها في هذا الصدد لفترة طويلة.
  3. ليسب قوي جدًا.التمييز بين الكود/البيانات أضعف لذلك يشعر أكثر قابلية للتوسعة من اللغات الأخرى لأن وظائفك ووحدات الماكرو الخاصة بك تبدو مثل العناصر المضمنة.

انا ليس عندي كتاب الذكاء الاصطناعي القديم لبيتر نورفيج, ، ولكن من المفترض أن تكون طريقة جيدة لتعلم برمجة خوارزميات الذكاء الاصطناعي في Lisp.

تنصل:أنا طالب دراسات عليا في اللغويات الحاسوبية.أعرف المجال الفرعي لمعالجة اللغة الطبيعية أفضل بكثير من المجالات الأخرى.ربما يتم استخدام Lisp أكثر في الحقول الفرعية الأخرى.

نصائح أخرى

يتم استخدام Lisp للذكاء الاصطناعي لأنه يدعم تنفيذ البرامج التي تحسب بالرموز بشكل جيد للغاية.الرموز والتعبيرات الرمزية والحوسبة مع تلك هي جوهر Lisp.

مجالات الذكاء الاصطناعي النموذجية للحوسبة باستخدام الرموز كانت/هي:الجبر الحاسوبي، إثبات النظريات، أنظمة التخطيط، التشخيص، أنظمة إعادة الكتابة، تمثيل المعرفة والاستدلال، اللغات المنطقية، الترجمة الآلية، الأنظمة الخبيرة، والمزيد.

ليس من المستغرب إذن أن العديد من تطبيقات الذكاء الاصطناعي الشهيرة في هذه المجالات تمت كتابتها بلغة Lisp:

  • Macsyma كأول نظام جبر حاسوبي كبير.
  • ACL2 كمثبت نظرية مستخدم على نطاق واسع، على سبيل المثال تستخدمه AMD.
  • DART كمخطط لوجستي استخدمه الجيش الأمريكي خلال حرب الخليج الأولى.يقال إن تطبيق Lisp وحده قد سدد جميع الاستثمارات الأمريكية في أبحاث الذكاء الاصطناعي في ذلك الوقت.
  • SPIKE، تطبيق التخطيط والجدولة لتلسكوب هابل الفضائي.تستخدم أيضًا بواسطة العديد من التلسكوبات الكبيرة الأخرى.
  • CYC، أحد أكبر الأنظمة البرمجية المكتوبة.التمثيل والتفكير في مجال المعرفة الإنسانية السليمة.
  • METAL، أحد أوائل أنظمة ترجمة اللغات الطبيعية المستخدمة تجاريًا.
  • مساعد مفوض أمريكان إكسبريس، الذي يتحقق من معاملات بطاقات الائتمان.

هناك الآلاف من التطبيقات في هذه المجالات المكتوبة بلغة Lisp.من الشائع جدًا بالنسبة لهؤلاء أنهم يحتاجون إلى قدرات خاصة في مجال المعالجة الرمزية.ينفذ أحدهم لغات خاصة تحتوي على مترجمين فوريين/مترجمين خاصين في هذه المجالات بالإضافة إلى Lisp.يتيح Lisp إنشاء تمثيلات للبيانات والبرامج الرمزية ويمكنه تنفيذ جميع أنواع الآلات لمعالجة هذه التعبيرات (الصيغ الرياضية، الصيغ المنطقية، الخطط، ...).

(لاحظ أن الكثير من لغات البرمجة ذات الأغراض العامة تُستخدم في الذكاء الاصطناعي أيضًا.لقد حاولت الإجابة على سبب استخدام Lisp بشكل خاص في الذكاء الاصطناعي.)

أحد الأسباب هو أنها تسمح لك بتوسيع اللغة ببنيات خاصة بنطاقك، مما يجعلها لغة خاصة بالمجال بشكل فعال.هذه التقنية قوية بشكل لا يصدق لأنها تسمح لك بالتفكير في الأمر مشكلة أنت تقوم بالحل، بدلاً من خلط الأجزاء.

لقد كان تخميني دائمًا هو أنها، كونها لغة وظيفية، لا تفرق بين التعليمات البرمجية والبيانات.كل شيء، بما في ذلك تعريفات الوظائف واستدعاءات الوظائف، يمكن التعامل معه كقوائم وتعديله مثل أي جزء آخر من البيانات.

لذلك يمكن كتابة كود الفحص الذاتي والتعديل الذاتي بسهولة.

إحدى الإجابات المحتملة هي أن الذكاء الاصطناعي عبارة عن مجموعة من المشكلات الصعبة للغاية، وأن لغة Lisp لغة جيدة لحل المشكلات الصعبة، وليس الذكاء الاصطناعي فقط.

أما لماذا ذلك:تسمح وحدات الماكرو والوظائف العامة والاستبطان الغني بتعليمات برمجية موجزة وإدخال سهل لتجريدات النطاق - إنها لغة يمكنك جعلها أكثر قوة.بالنسبة للكثير من المشاكل، يكون هذا غير ضروري، ويأتي بتكاليفه الخاصة، ولكن بالنسبة للمشاكل الأخرى، هناك حاجة إلى القوة لإحراز أي تقدم.

أعتقد أنه من الخطأ التفكير في هذا من حيث الذكاء الاصطناعي فقط.أشياء مثل تأثير الذكاء الاصطناعي في فصل الشتاء والتأثيرات التجارية على اللثغة الشائعة تشتت انتباهك إذا كنت تتساءل عن سبب استخدامها في الذكاء الاصطناعي، وليس عن سبب عدم استخدامها كثيرًا الآن...

على أي حال، أعتقد أن السبب هو أن معظم كود الذكاء الاصطناعي كان في الأساس كود بحث.تعد Lisp لغة رائعة للبرمجة الاستكشافية، ولتنفيذ الخوارزميات الصعبة، وللتعديل الذاتي للتعليمات البرمجية التي يتم تعديلها غالبًا.وبعبارة أخرى، لرمز البحث.

أستخدم lisp اليوم في بعض أكواد البحث الخاصة بي (الرياضيات ومعالجة الإشارات) لأنها أكثر مرونة وقوة من معظم اللغات بينما لا تزال تولد أكوادًا برمجية أكثر كفاءة من معظم اللغات.يمكنني عادةً الحصول على الأداء ضمن عامل +/- 2 من سرعة c++، لكن يمكنني تنفيذ الأشياء بشكل أسرع بكثير، والتعامل مع التعقيد الذي قد يستغرق وقتًا أطول بكثير مما أستغرقه إذا استخدمت c++، وjava، وc#.

هذا خروج عن الموضوع بالرغم من ذلك.أعتقد أن كود الذكاء الاصطناعي تمت كتابته بشكل أساسي بلغة اللثغة الشائعة لفترة من الوقت لأنه أسلوب قوي للبحث في الكود.ولا يزال كذلك؛ولكن مع ازدياد فهم واستكشاف خوارزميات الذكاء الاصطناعي، أصبحت أجزاء منها أسهل بكثير في التدريس والاستخدام، لذلك ظهرت في اللغات الأكثر تميزًا في الدورات الجامعية.ومن هنا، يصبح الأمر مسألة ما يعرفه الناس بالفعل، وما هي المكتبات المتاحة، وما الذي يناسب المجموعات الكبيرة.

أعتقد أن السبب الرئيسي هو مرونة القوائم كبنية أساسية للبيانات.

في ذلك الوقت، القدرة على تحويلها إلى جميع أنواع الكائنات المركبة، وأشياء جديدة مثل تمرير الرسائل وتعدد الأشكال، جعلت منها لغة الاختيار؛ليس خصيصًا للذكاء الاصطناعي، ولكن للمهام الكبيرة والمعقدة.خاصة عندما كانوا يجربون المفاهيم.

أعتقد أنك على حق:كانت Lisp أداة مفيدة لاختراق الأشياء.وذلك لأنه لم يميز كثيرًا بين البرنامج والبيانات.وقد سمح هذا للمتسللين بالتعامل مع الوظائف بسهولة شديدة، تمامًا مثل البيانات.

ولكن ليسب من الصعب جدًا على الإنسان قراءته، بسبب أقواسه وعدم التمييز بين البيانات والبرنامج.اليوم، لن أستخدم lisp لأي كود إنتاجي للذكاء الاصطناعي (أو ربما حتى للنماذج الأولية) ولكني أفضل استخدام لغة python في البرمجة النصية.

شيء آخر يجب مراعاته هو المكتبات/الأدوات الموجودة باللغة/المتعلقة بها.أنا لست في وضع يسمح لي بمقارنة مكتبات lisp مع مكتبات بايثون، ولكن أعتقد أن المكتبات والمصادر المفتوحة أصبحت أكثر أهمية الآن من ذي قبل.

هذه الإجابة مستوحاة من المقارنة التالية بين lisp و python: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html

أتذكر أنني سمعت أن Lisp، كونها لغة وظيفية، كانت خيارًا جيدًا جدًا لتنفيذ الخوارزميات العودية.تعد القدرة على تعقب الشجرة والعودة إلى الوراء أمرًا ضروريًا عند النظر في عمليات اتخاذ القرار (الاجتياز) والنتيجة النهائية (العقدة الورقية).

قيل لي هذا خلال دورة الذكاء الاصطناعي في الجامعة حيث درسنا ليسب.

قد تكون الإجابة الأكثر تشاؤمًا هي "لأنها خسرت حرب الذكاء الاصطناعي السياسية بين اليابان والولايات المتحدة في الثمانينيات".هناك متعة مشاركة مدونة تتكهن بتأثير زوال نظام كمبيوتر الجيل الخامس على Prolog.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top