Lisp'in AI'daki çoğu dilden daha iyi olduğuna dair uzun zamandır devam eden bir inanç var.
Bu inanç nereden kaynaklandı? Ve aslında bunun bir temeli var mı?
Lisp'in AI'daki çoğu dilden daha iyi olduğuna dair uzun zamandır devam eden bir inanç var.
Bu inanç nereden kaynaklandı? Ve aslında bunun bir temeli var mı?
Yanıtlar:
LISP benzeri dillerle diğer diller arasındaki temel farklardan biri de LISP’lerde kod ve verilerin aynı olmasıdır. Bu, bir programın çalışma zamanı sırasında bazı dil algoritmalarını değiştirmesi gibi şeyleri yapmayı mümkün kılar, çünkü dilin yerel bir parçası olarak yeni şeyler "öğrenir".
Buna giren bir başka özellik de, olmasa da, LISP'in makrolarla yeni bir dil semantiği ekleyebilme yeteneğidir. Bu, AI çalışırken, bu dilin büyümesi, kendini düzeltmesi ve gelişmesi potansiyeli ile birlikte AI'nın üzerinde çalıştığı ve içinde gelişebileceği bir DSL'yi tanımlamayı mümkün kılar.
Quadrescence ile aynı fikirde olan LISP'lerin kullanım geçmişi, LISP'lerin AI için iyi olduğu imajına doğru uzun bir yol kat ediyor. AI için neden LISP kullanılıyor , geçmişi çok daha ayrıntılı olarak ele alıyor.
Lisp'teki ilk programlardan bazıları teorem kanıtları, sembolik matematik, klasik ELIZA, vb. İdi. Peter Norvig'in PAIP'i gibi kitaplara ek olarak, lisp'in MIT AI laboratuvarında ortaya çıkması gerçeği, bu tür bir imge yarattı. Bu lisp AI için iyidir.
DARPA ayrıca üniversitelere AI araştırma için finansman sağladı ve Symbolics'ten önemli miktarda donanım satın aldı. Fon sıkıntısı sonunda "AI kışı" denilen yol açtı.
Son olarak, Fortran gibi orijinal diller (veya ASM gibi "diller"), sayısal hesaplama için birincil olarak kullanıldı. Sayılarla ve onların dizileriyle çalıştın. Bugünlerde çoğu modern dilde sembollerimiz veya istediğimiz hemen hemen her nesneyi oluşturma yeteneğimiz var.
Yani, bir anda lisp AI için daha iyi olmasının nedeni artık böyle değil. Ancak, "lisp AI için iyidir" fikri hâlâ oyalandı.
Lisp'in özellikleri ve yapısı nedeniyle daha iyi bir dil olup olmadığı tamamen başka bir durumdur (çünkü bu tür bir şey sadece AI'dan başka birçok alana uygulanır ve genellikle sizde alev savaşına yol açar).
Mevcut AI programlarından bazılarına bakalım: (1) Robotlar, örn. DARPA büyük mücadelesinde, üstün araba sürüş yazılımı Lisp değildi. Aksine, C ++ veya Java gibi bir yordamsal dildi. (2) Doğal dilin makine çevirisi. Lisp, bu amaçla yaygın olarak kullanılan üretim sistemleri tarafından kullanılmaz. (3) Oyun oynamak, örneğin satranç programları. Lisp, bu amaç için, Fritz gibi yaygın olarak kullanılan üstün satranç programları tarafından kullanılmaz.
Lisp, 1960'lı yıllarda ABD AI laboratuarları tarafından, yerel Lisp veri yapılarının gerekli sembolik soyutlama seviyesine uyduğu sembolik soyutlama seviyesine uyduğu sembolik mantık programlarını hızlı bir şekilde prototip etmek için geliştirildi ve geliştirildi. operatörlerin ve operatörlerin listesi olarak gösterilir.
Ancak üretim programları için, statik tipte dillerin ve çok çeşitli üçüncü taraf kütüphanelerin yazılım mühendisliği avantajları, Lisp'in AI görevlerini yerine getiren büyük modern sistemler için bile düşünülmediği anlamına gelir.
@Stephen Reed çok iyi dedi. Sadece 70'li yıllarda MIT AI Lab'da olduğumu ekleyebilirim. Lisp'in kökeni hakkında bir hikaye duydum. Yemin edemiyorum bu doğru, ama şöyle devam ediyor:
John McCarthy, 50'li yıllarda MIT'deydi ve programların özelliklerini kanıtlamak için çalışıyordu ve bunun için Lambda Calculus'a benzer basit bir sözdizimi kullanıyordu.
Hikaye, mezun öğrencilerden birinin bir proje yapmak istediği (analoji veya teoremi ispatlayan veya sembolik matematik, hangisini hatırlamıyorum) ve McCarthy'ye hangi dili kullanacağını sormasıydı. Cevap - Elbette Fortran. (Çok fazla bir şey yoktu ve liste işlemenin kendisi o zaman oldukça iyi biliniyordu, ancak diller olarak değil sadece rutin paketler olarak biliniyordu.) Peki, bir şekilde bu, yuvalanmış liste yapılarında sembolleri işleyecek bir programa yol açtı. Birlikte onları okumak ve yazdırmak için bir yol ve sonra bir eval
işlev ve Voila '- bir dil. LISt İşleme dili. Oradan ayrıldı.
O günlerde yaptığımız algoritmalar için (ve hala çok az insanın yaptığı) sembolik ifadeleri kolayca değiştirebilecek bir dile ihtiyaç vardı. Lisp de iyiydi. Prolog, Şema, vb. Gibi farklı isimlerle devam eden temel kavram üzerinde birçok farklılıklar olmuştur.
Bu nedenle AI, birçok insan için çok şey ifade eder ve farklı diller farklı şeyler için iyidir, ancak sembol manipülasyonu olarak tanımlanabilecek sorunlar için, bir şekilde Lisp'ten gelmeyen kullanışlı bir dil bulmak zordur.
Lisp, AI olarak adlandırılan şeyler için avantajlara sahiptir - en azından 90'lı yıllara kadar en çok AI olan şeyleri mantık, arama ve çözümleme ile ilgili.
Lisp'in en büyük avantajlarından biri, veri olarak makro kodlamayı, metaprogramlamayı desteklemesidir.
Standart ML (SML) AI’da, örneğin 80’lerden bu yana yaygın olarak kullanılan başka bir dildir. Amaç CAML ve F #, SML'nin evrimidir.
ML ailesinin (ve Haskell, vb.) Büyük bir avantajı, kalıp eşleştirmedir. Bu muhtemelen Lisp'te de mevcuttur, ancak dilin içine yerleştirilmek yerine metaprogramming kütüphanesi aracılığıyla. Ayrıca Haskell'de de mevcuttur, ancak en azından şimdilik, kalıp eşleştirme işlevsel programlama dilleri dışında yaygın değildir.
LISP'nin temel olarak genişletilmiş bir türetilmemiş lambda hesabı olduğu ve ML'nin temel olarak genişletilmiş bir türlenmiş lambda hesabı olduğu iddialarını gördüm. Kesin olarak söylenecek türden lambda matematiği bilgisine sahip değilim.
AI ayrıca yıllar içinde çok daha geniş bir konu haline gelmiştir - neredeyse tamamen ortadan kalkmış olduğu noktaya. Veri madenciliği AI'nın bir alt alanı olarak düşünülebilir. Birçok AI nesnesi (OCR, konuşma tanıma) neredeyse tamamen AI olmayı bıraktı - bunlar sadece diğer uygulamalarla aynı uygulamalardır. AI, sinyal işlemeye ve diğer sayı çırpma işlemlerine bir zamanlar olduğundan çok daha fazla bağımlı.
OCR ve konuşma tanıma için, AI her zaman sinyal işlemeye ve elbette sayı ezmeye bağlıydı. Evet, bunda bazı çelişkiler var ;-) Gerçekten bilmediğim şeyler için ağırlık veremiyorum.
Her neyse, sonuç olarak, muhtemelen bir modern AI uygulamasının tümüne bile uygun bir tek dil yok - modern AI'da çok dilli bir çok gelişim olduğunu tahmin ediyorum (ilk elden bilgi yok). Ve sayıca çatırtı performansını elde etmek için bazı projelerde C ve C ++ 'ı bulacağınızı garanti edebilirim. Benzer nedenlerle çok fazla Python varsa, buna şaşırmam - iyi bir sayısal kütüphane ile Python, sayı-ezme görevlerini kolayca yerine getirebilir.
Bu kendi kendini süren arabalardan birinde, görüş sisteminin rota planlama sistemine farklı bir dilde (ve farklı donanımlarda çalıştığını) yazıldığını hayal ediyorum.