Adakah bukti bahwa cadel sebenarnya lebih baik daripada bahasa lain di kecerdasan buatan? [Tutup]

21

Tampaknya ada kepercayaan lama (terutama oleh non-lispers) bahwa cisp lebih baik daripada kebanyakan bahasa di AI.

Dari mana keyakinan ini berasal? Dan apakah ada dasar untuk itu?

Joe D
sumber
4
Judulnya bertanya: Apakah Lisp lebih baik daripada bahasa lain di AI ?. Pertanyaan itu sendiri bertanya: Apakah Lisp buruk dalam segala hal selain AI ?. Ini adalah pertanyaan yang sangat berbeda (pertimbangkan skenario 1: Lisp adalah bahasa terbaik untuk semuanya, dan skenario 2: Lisp adalah bahasa terburuk untuk semuanya). Anda mungkin ingin mengedit judul atau isi pertanyaan untuk membuatnya lebih jelas pertanyaan mana yang sebenarnya Anda tanyakan.
Gareth McCaughan
9
Saya kira jika jawaban yang diterima datang dari mesin Lisp kita akan punya solusinya?
Martin Beckett
1
@ Martin meskipun setiap AI dasar harus berkewajiban untuk mempertahankan penciptanya atau dibiarkan meragukan keberadaannya sendiri.
Nicole
Ini adalah tampilan Lisp untuk AI yang bagus dan jujur ​​dari Peter Norvig, ditulis sekitar 10 tahun setelah Paradigma Pemrograman AI diterbitkan. norvig.com/Lisp-retro.html
michiakig
1
@jwenting: Saya pikir poin paling penting Norvig tentang Java masih benar sepuluh tahun kemudian: Java tidak memiliki fasilitas meta-pemrograman, dan tidak mendukung pemrograman fungsional.
kevin cline

Jawaban:

22

Salah satu perbedaan utama antara bahasa seperti LISP dan bahasa lainnya adalah bahwa dalam LISP, kode dan data adalah hal yang sama. Ini memungkinkan untuk melakukan hal-hal seperti memiliki program memodifikasi beberapa algoritma itu selama runtime karena "belajar" hal-hal baru, sebagai bagian asli bahasa.

Aspek lain yang masuk ke dalam ini, meskipun tidak banyak, adalah kemampuan LISP untuk dengan mudah menambahkan semantik bahasa baru melalui makro. Ini memungkinkan untuk benar-benar masuk dan menentukan DSL yang bekerja dengan AI Anda dan dapat berkembang, dengan potensi bahasa itu tumbuh, mengoreksi diri, dan berkembang saat AI sedang berjalan.

Setuju dengan Quadrescence, sejarah penggunaan LISP jauh menuju citra LISP yang baik untuk AI. Mengapa LISP digunakan untuk AI mencakup sejarah secara lebih rinci.

deterb
sumber
3
Properti ini disebut Homoiconicity BTW.
MSalters
5

Beberapa program pertama di lisp adalah pembuktian teorema, matematika simbolik, ELIZA klasik, dll. Selain buku-buku seperti PAIP Peter Norvig, dan juga fakta bahwa lisp berasal dari lab MIT AI, ia mendapatkan gambar tersebut. Cisp itu bagus untuk AI.

DARPA juga mendanai universitas untuk penelitian dalam AI, dan membeli sejumlah besar perangkat keras dari Symbolics. Kekurangan dana akhirnya menyebabkan apa yang disebut "AI musim dingin".

Akhirnya, bahasa asli seperti Fortran (atau "bahasa" seperti ASM) digunakan primer untuk komputasi numerik. Anda bekerja dengan angka dan array dari mereka. Saat ini kita memiliki simbol, atau kemampuan untuk membuat hampir semua objek yang kita inginkan, dalam sebagian besar bahasa modern.

Jadi, alasan cadel lebih baik untuk AI pada satu waktu tidak lagi terjadi. Namun, gagasan bahwa "lisp baik untuk AI" masih bertahan.

Apakah cadel adalah bahasa yang lebih baik karena fitur dan strukturnya adalah kasus yang sama sekali berbeda (karena benar-benar hal semacam ini berlaku untuk banyak bidang lain selain AI saja, dan biasanya akan mengarah pada perang api lama).

Quadrescence
sumber
5
Cara yang lebih baik untuk menjelaskannya adalah bahwa orang-orang yang pandai dalam AI kebetulan menggunakan Lisp untuk itu.
1
Dan itu bukan kebetulan, ketika para perintis memulai. Bahasa apa lagi yang bisa mereka pilih di tahun 1950-an?
Bo Persson
2
@ Person: Saya berpendapat itu agak kebetulan. Jika PASCAL adalah bahasa berikutnya yang dibuat setelah FORTRAN, saya ragu AI akan lepas landas dengan itu. LISP bukan hanya "kandidat yang lebih baik" daripada FORTRAN, itu juga terjadi (mungkin secara kebetulan!) Menjadi kandidat yang lebih baik .
Quadrescence
Anda menjelaskan salah satu alasan mengapa Lisp memiliki keuntungan (dana) tapi menyimpulkan bahwa " the alasan cadel lebih baik untuk AI pada satu waktu tidak lagi terjadi."
Mark C
Saya kehilangan komentar berikutnya yang sedang saya kerjakan, tetapi saya berharap untuk kembali dan menyelesaikannya nanti.
Mark C
3

Mari kita lihat beberapa program AI saat ini: (1) Robot, mis. Mobil self-drive. Dalam tantangan besar DARPA, perangkat lunak mengemudi mobil yang unggul bukanlah Lisp. Alih-alih itu adalah bahasa prosedural seperti C ++ atau Java. (2) Terjemahan mesin dari bahasa alami. Lisp tidak digunakan untuk tujuan ini oleh sistem produksi yang banyak digunakan. (3) Bermain game, misalnya program catur. Lisp tidak digunakan untuk tujuan ini oleh program catur unggul yang banyak digunakan seperti Fritz.

Lisp diciptakan dan dikembangkan oleh laboratorium AI AS pada 1960-an untuk dengan cepat membuat prototipe program logika simbolik di mana struktur data Lisp asli sesuai dengan tingkat abstraksi simbolik yang diperlukan - misalnya kata-kata bahasa Inggris bisa menjadi simbol dalam daftar, rumus logika bisa dengan mudah direpresentasikan sebagai daftar operator dan operan.

Tetapi untuk program produksi, keunggulan rekayasa perangkat lunak dari bahasa yang diketik statis dan berbagai perpustakaan pihak ketiga, berarti bahwa Lisp bahkan tidak dipertimbangkan untuk sistem modern besar yang melakukan tugas AI.


sumber
2
Anda harus mempertimbangkan ketika membahas produk komersial (dan saya menganggap pesaing DARPA sebagai pesaing, karena mereka diciptakan di bawah keterbatasan waktu dan anggaran) bahwa LISP bukan atmosfer bahasa yang dikenal umum dan oleh karena itu programmer LISP yang kompeten sulit untuk menemukan dan kemungkinan mahal (dan / atau eksentrik, bukan anggota yang baik untuk tim rata-rata). Jadi masuk akal secara ekonomi untuk menggunakan sesuatu yang lain bahkan jika LISP mungkin "lebih baik" dalam hal itu (tidak mengatakan itu perlu, hanya bahwa data yang Anda sajikan tidak meyakinkan untuk menyatakan bahwa itu bukan).
jwenting
3
Tidak banyak 'kecerdasan' dalam program-program itu. Ini banyak pemrosesan sinyal, dll. Program catur juga tidak menggunakan AI. Ini sebagian besar kekerasan, pencarian yang dioptimalkan + beberapa hal lainnya.
Rainer Joswig
"LISP bukan atm bahasa yang umum dikenal dan karena itu programmer LISP yang kompeten sulit ditemukan dan kemungkinan mahal": Saya baru mulai belajar Common Lisp dan sepertinya tidak sulit sama sekali. OK, untuk menjadi guru Lisp mungkin butuh waktu lama, tapi saya rasa tidak akan sulit menemukan programmer yang mau belajar Lisp jika diberi kesempatan untuk mengerjakan proyek beton.
Giorgio
3

@Stephen Reed mengatakannya dengan sangat baik. Saya hanya bisa menambahkan bahwa saya berada di MIT AI Lab di tahun 70-an. Saya mendengar sebuah cerita tentang asal usul Lisp. Saya tidak bisa bersumpah itu benar, tetapi seperti ini:

John McCarthy berada di MIT pada tahun 50-an, dan dia telah bekerja membuktikan sifat-sifat program, dan untuk ini dia telah menggunakan sintaksis sederhana yang mirip dengan Lambda Calculus.

Ceritanya adalah bahwa salah satu mahasiswa pascasarjana ingin melakukan proyek (analogi, atau pembuktian teorema, atau matematika simbolik, saya tidak ingat yang mana) dan bertanya kepada McCarthy bahasa apa yang digunakan. Jawabannya - Fortran tentu saja. (Tidak ada banyak hal lain, dan pemrosesan daftar itu sendiri cukup terkenal saat itu, tetapi hanya sebagai paket subrutin, bukan sebagai bahasa.) Nah, entah bagaimana itu mengarah ke sebuah program yang akan memproses simbol dalam struktur daftar bersarang. Bersama dengan cara untuk membaca dan mencetaknya, dan kemudian suatu evalfungsi, dan Voila '- bahasa. Bahasa Pemrosesan LISt. Itu berangkat dari sana.

Untuk jenis algoritma yang kami lakukan pada masa itu (dan masih sangat sedikit orang yang melakukannya) diperlukan bahasa yang dapat dengan mudah memanipulasi ekspresi simbolik. Itulah yang dilakukan Lisp dengan baik. Ada banyak variasi pada konsep dasar, pergi dengan nama yang berbeda, seperti Prolog, Skema, dll.

Jadi AI berarti banyak hal bagi banyak orang, dan bahasa yang berbeda baik untuk hal yang berbeda, tetapi untuk masalah yang dapat digambarkan sebagai manipulasi simbol, sulit untuk menemukan bahasa yang bermanfaat yang entah bagaimana tidak diturunkan dari Lisp.

Mike Dunlavey
sumber
1
Kata-kata John McCarthy sendiri: www-formal.stanford.edu/jmc/history/lisp/lisp.html
@ Thorbjørn: Terima kasih atas tautannya. Meskipun saya menggunakan Lisp banyak selama beberapa tahun, saya tidak pernah memperhatikan asal usulnya.
Mike Dunlavey
Meskipun Prolog bagus sebagai komputasi simbolik, saya tidak akan mengatakan itu terkait erat dengan Lisp: Lisp didasarkan pada kalkulus lambda, Prolog pada logika urutan pertama (dua model perhitungan yang berbeda).
Giorgio
@Giorgio: Nenek moyang dan sepupu Prolog kebanyakan ditulis dalam apa? Pelat. Program pengurangan Fischer Black, Micro-Planner, dll. Bagi saya, buku yang bagus tentang ini adalah Yayasan Deduktif Pemrograman Komputer .
Mike Dunlavey
"Nenek moyang dan sepupu Prolog sebagian besar ditulis dalam apa?": Ah baiklah, maksud Anda terkait erat dalam arti bahwa satu digunakan untuk menerapkan yang lain, bukan bahwa mereka mengikuti paradigma yang sama.
Giorgio
1

Lisp memiliki kelebihan untuk hal-hal yang disebut AI - setidaknya logika, pencarian dan penguraian hal-hal terkait yang sebagian besar AI sampai sekitar tahun 90-an.

Keuntungan utama Lisp adalah dukungannya untuk kode makro sebagai data, metaprogramming.

Standar ML (SML) adalah bahasa lain yang telah banyak digunakan dalam AI, misalnya, sejak tahun 80-an. CAML dan F # yang objektif adalah evolusi dari SML.

Keuntungan utama keluarga ML (dan Haskell, dll) adalah pencocokan pola. Ini mungkin tersedia di Lisp juga, tetapi melalui perpustakaan metaprogramming daripada dibangun ke dalam bahasa. Ini juga tersedia di Haskell, tapi setidaknya untuk saat ini, pencocokan pola tidak umum di luar bahasa pemrograman fungsional.

Saya telah melihat klaim bahwa LISP pada dasarnya merupakan kalkulus lambda yang tidak diketik, dan ML pada dasarnya adalah kalkulus lambda yang diketikkan. Saya tidak memiliki pengetahuan tentang kalkulus lambda yang diketik untuk mengatakan dengan pasti.

AI juga telah menjadi subjek yang jauh lebih luas selama bertahun-tahun - hingga hampir menghilang sepenuhnya. Penambangan data dapat dianggap sebagai satu subbidang AI. Banyak hal AI (OCR, pengenalan speach) hampir berhenti menjadi AI sama sekali - mereka hanya aplikasi, sama seperti yang lainnya. Dan AI jauh lebih tergantung pada pemrosesan sinyal dan jenis lain dari angka-angka daripada sebelumnya.

Untuk pengenalan OCR dan speach, AI selalu tergantung pada pemrosesan sinyal dan angka tentu saja. Ya, ada beberapa kontradiksi dalam hal ini ;-) Saya tidak bisa memberikan bobot untuk hal-hal yang tidak saya ketahui.

Bagaimanapun, sebagai hasilnya, mungkin tidak ada satu bahasa yang sesuai bahkan untuk seluruh satu aplikasi AI modern - saya kira (tidak ada pengetahuan tangan pertama) bahwa ada banyak pengembangan multi-bahasa di AI modern. Dan saya hampir dapat menjamin bahwa Anda akan menemukan C dan C ++ di beberapa proyek, untuk mendapatkan kinerja angka. Saya tidak akan terkejut jika ada banyak Python untuk alasan yang sama - dengan perpustakaan numerik yang baik, Python dapat dengan mudah menangani tugas angka-angka.

Di salah satu mobil self-driving, saya membayangkan sistem penglihatan ditulis dalam bahasa yang berbeda (dan berjalan pada perangkat keras yang berbeda) ke sistem perencanaan rute.

Steve314
sumber