Lisp'in yapay zekadaki diğer dillerden daha iyi olduğuna dair kanıt var mı? [kapalı]


21

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ı?


4
Başlık soruyor: Lisp AI'deki diğer dillerden daha mı iyi? Sorunun kendisi soruyor: Lisp AI dışındaki her şeyde kötü mü? Bunlar çok farklı sorulardır (senaryo 1: Lisp her şey için en iyi dil, senaryo 2: Lisp her şey için en kötü dildir). Hangi soruyu gerçekten sorduğunuzu daha açık hale getirmek için sorunun başlığını veya gövdesini düzenlemek isteyebilirsiniz.
Gareth McCaughan

9
Sanırım kabul edilen cevap bir Lisp makinesinden geldiyse, çözümümüz olur mu?
Martin Beckett

1
@ Martin, herhangi bir temel AI'nın yaratıcısını savunmak zorunda olması ya da kendi varlığından şüphe duyması için bırakılması gerektiğine rağmen.
Nicole

Bu, AI Programlama Paradigmaları'nın yayınlanmasından 10 yıl sonra yazılan Peter Norvig'den AI for AI'ya harika, dürüst bir bakış. norvig.com/Lisp-retro.html
michiakig

1
@jwenting: Norvig'in Java ile ilgili en önemli noktalarının on yıl sonra hala geçerli olduğunu düşünüyorum: Java'da meta programlama özelliği yoktur ve işlevsel programlamayı desteklemez.
kevin cline

Yanıtlar:


22

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.


3
Bu özellik Homoconicity BTW olarak adlandırılır .
MSalters,

5

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).


5
Daha iyi ifade etmenin bir yolu, AI'da iyi olanların bunun için Lisp kullanıyor olması olabilir.

1
Ve öncüler başladığında, tesadüf değildi. 1950'lerde başka hangi dilleri seçebilirler?
Bo Persson

2
@Persson: Bunun bir şekilde tesadüfen olduğunu iddia ediyorum . PASCAL, FORTRAN'dan sonra yapılacak bir sonraki dil ise, AI'nın bununla alacağı konusunda şüphelerim var. LISP, FORTRAN'dan sadece "daha iyi bir aday" değildi, aynı zamanda (belki de şans eseri) iyi bir aday oldu.
Çeyreklik

Lisp bir avantaj (fon) vardı ama sonucuna neden tek bir nedeni açıklamak " nedeni lisp durumda artık tek seferde AI için daha iyi oldu."
Mark C,

Üzerinde çalıştığım bir sonraki yorumu kaybettim, ancak daha sonra dönmeyi ve bitmeyi umuyorum.
Mark C,

3

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.


2
Ticari ürünleri tartışırken dikkate almanız gerekir (ve DARPA'nın yarışmacıların, zaman ve bütçe kısıtlamaları altında yaratıldıkları gibi olduğunu düşünüyorum), LISP'nin yaygın olarak bilinen bir dil atm olduğu ve bu nedenle de yetkin LISP programcılarının zor olduğunu düşünmelisiniz. Pahalı bulmak (ve / veya excentrics), ortalama takım için iyi üyeler değil). Bu nedenle, LISP'in "daha iyi" olmasına rağmen (başka bir deyişle, sunduğunuz verinin bunun olmadığını belirtmek için elverişsiz olduğu anlamına gelmez) bile başka bir şeyi kullanmak ekonomik bir anlam ifade eder.
00'da 7

3
Bu programlarda pek fazla 'zeka' yoktur. Çok fazla sinyal işleme, vb. Satranç programları da AI kullanmıyor. Çoğunlukla kaba kuvvet, yüksek düzeyde optimize edilmiş arama + başka şeyler.
Rainer Joswig

"LISP yaygın olarak bilinen bir dil atm'i değil ve bu nedenle de yetkin LISP programcılarını bulmak zor ve muhtemelen pahalı": Common Lisp'i öğrenmeye başladım ve hiç zor görünmüyor. Tamam, bir Lisp gurusu olmak uzun zaman alabilir, ancak somut projeler üzerinde çalışma şansı verilirse Lisp'i öğrenmek isteyen programcıları bulmak zor olacağını sanmıyorum.
Giorgio,

3

@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 evaliş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.


1
John McCarthy'nin kendi sözleri: www-formal.stanford.edu/jmc/history/lisp/lisp.html

@ Thorbjørn: Bu bağlantı için teşekkürler. Lisp'i birkaç yıl boyunca yoğun kullanmama rağmen, oluşumuna hiç dikkat etmedim.
Mike Dunlavey,

Prolog sembolik hesaplama olarak iyi olsa da, bunun Lisp ile yakından ilgili olduğunu söyleyemem: Lisp, birinci dereceden mantığa (iki farklı hesaplama modeli) bağlı olan lambda hesabına dayanmaktadır.
Giorgio,

@Giorgio: Prolog'un ataları ve kuzenleri çoğunlukla ne yazıyor? Lisp. Fischer Black'in tümdengeleme programı, Mikro-Planlayıcı, vb. Benim için bu konuda iyi bir kitap Bilgisayar Programcılığının tümdengelimli Temelleri'dir .
Mike Dunlavey,

“Prolog'un ataları ve kuzenleri çoğunlukla ne yazıyor?”: Ah, tamam, benzer bir paradigma izlemekten değil, birinin diğerini uygulamak için kullanıldığı anlamında çok yakın demek istedin.
Giorgio,

1

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.