Tại sao Lisp là một ngôn ngữ tốt cho AI?


30

Tôi đã nghe trước đây từ các nhà khoa học máy tính và từ các nhà nghiên cứu trong lĩnh vực AI rằng Lisp là một ngôn ngữ tốt để nghiên cứu và phát triển trí tuệ nhân tạo. Điều này vẫn còn áp dụng, với sự phổ biến của mạng lưới thần kinh và học tập sâu? Lý do của họ cho điều này là gì? Những ngôn ngữ hiện tại hệ thống học tập sâu hiện đang được xây dựng?

Câu trả lời:


30

Đầu tiên, tôi đoán rằng bạn có nghĩa là Common Lisp (là một đặc tả ngôn ngữ tiêu chuẩn, xem HyperSpec của nó ) với các triển khai hiệu quả (à SBCL ). Nhưng một số triển khai gần đây của Đề án cũng có thể có liên quan (với các triển khai tốt như Bigloo hoặc Chicken / Scheme ). Cả Common Lisp và Scheme (và thậm chí cả Clojure ) đều thuộc cùng một gia đình Lisp. Và như một ngôn ngữ kịch bản điều khiển các ứng dụng dữ liệu lớn hoặc máy học, Guile có thể một sự thay thế hữu ích cho Python và cũng là một phương ngữ Lisp. BTW, tôi khuyên bạn nên đọc SICP, một giới thiệu tuyệt vời về lập trình bằng Scheme.

Sau đó, Common Lisp (và các phương ngữ khác của Lisp) là tuyệt vời cho AI tượng trưng. Tuy nhiên, nhiều thư viện máy học gần đây được mã hóa bằng các ngôn ngữ chính hơn, ví dụ: TensorFlow được mã hóa bằng C ++ và Python. Các thư viện học tập sâu chủ yếu được mã hóa bằng C ++ hoặc Python hoặc C (và đôi khi sử dụng OpenCL hoặc Cuda cho các bộ phận điện toán GPU).

Lisp thông thường là tuyệt vời cho trí tuệ nhân tạo tượng trưng bởi vì:

  • nó có các triển khai rất tốt (ví dụ SBCL , nó biên dịch thành mã máy mỗi biểu thức được cung cấp cho REPL )
  • nó là homoiconic , vì vậy rất dễ xử lý các chương trình dưới dạng dữ liệu, đặc biệt rất dễ tạo ra các chương trình [phụ], đó là sử dụng các kỹ thuật lập trình meta .
  • nó có Vòng đọc-Eval-Print để dễ dàng lập trình tương tác
  • nó cung cấp một bộ máy vĩ mô rất mạnh (về cơ bản, bạn xác định ngôn ngữ con cụ thể cho tên miền của riêng bạn cho vấn đề của bạn), mạnh hơn nhiều so với các ngôn ngữ khác như C.
  • nó bắt buộc một trình thu gom rác (thậm chí mã có thể là rác được thu thập)
  • nó cung cấp nhiều kiểu dữ liệu trừu tượng chứa và có thể dễ dàng xử lý các ký hiệu.
  • bạn có thể mã cả mã cấp cao (gõ động) và mã cấp thấp (ít nhiều được gõ bắt đầu), thông qua các chú thích thích hợp.

Tuy nhiên, hầu hết các thư viện mạng máy & thư viện thần kinh không được mã hóa trong CL. Lưu ý rằng cả mạng lưới thần kinh và học tập sâu đều không thuộc lĩnh vực trí tuệ nhân tạo tượng trưng. Xem thêm câu hỏi này .

Một số hệ thống AI mang tính biểu tượng như Eurisko hoặc CyC đã được phát triển trong CL (thực tế, trong một số DSL được xây dựng trên CL).

Lưu ý rằng ngôn ngữ lập trình có thể không quan trọng lắm. Trong chủ đề nghiên cứu Trí thông minh chung nhân tạo , một số người làm việc dựa trên ý tưởng về một hệ thống AI sẽ tạo ra tất cả mã của riêng nó (vì vậy đang thiết kế nó với phương pháp bootstrapping ). Sau đó, mã được tạo bởi một hệ thống như vậy thậm chí có thể được tạo bằng các ngôn ngữ lập trình cấp thấp như C. Xem blog của J.Pitrat


1
Tôi muốn thêm vào đây, rằng tenorflow và theano dựa trên các biểu đồ tính toán, thực sự là lập trình biểu tượng, nhưng trong ngôn ngữ bắt buộc.
Maxim

@Basile: Vui lòng chia sẻ hướng dẫn hoặc tài liệu tham khảo LISP phổ biến
Ved Prakash

@VedPrakash: Tôi muốn liên lạc với bạn qua email. Của tôi là basile@starynkevitch.net; Tôi quá già để sử dụng twitter
Basile Starynkevitch

15

David Nolen (người đóng góp cho ClojureClojureScript ; người tạo ra Core Logic một cổng miniKanren) trong một cuộc nói chuyện có tên LISP vì quá mạnh mẽ đã nói rằng vào thời của ông, LISP đã đi trước hàng thập kỷ so với các ngôn ngữ lập trình khác. Có nhiều lý do tại sao ngôn ngữ không thể duy trì tên của nó.

Bài viết này nhấn mạnh một số điểm chính tại sao LISP tốt cho AI

  • Dễ dàng xác định một ngôn ngữ mới và thao tác thông tin phức tạp.
  • Hoàn toàn linh hoạt trong việc xác định và thao tác các chương trình cũng như dữ liệu.
  • Nhanh chóng, vì chương trình ngắn gọn cùng với chi tiết cấp thấp.
  • Môi trường lập trình tốt (gỡ lỗi, trình biên dịch gia tăng, biên tập viên).

Hầu hết bạn bè của tôi trong lĩnh vực này thường sử dụng Matlab cho Mạng thần kinh nhân tạo và Học máy. Nó ẩn các chi tiết cấp thấp mặc dù. Nếu bạn chỉ tìm kiếm kết quả và không làm thế nào bạn đạt được điều đó, thì Matlab sẽ tốt. Nhưng nếu bạn muốn tìm hiểu ngay cả những thứ chi tiết cấp thấp, thì tôi sẽ đề nghị bạn đi qua LISP ít nhất một lần.
Ngôn ngữ có thể không quan trọng nếu bạn có hiểu biết về các thuật toán và kỹ thuật AI khác nhau. Tôi sẽ đề nghị bạn đọc "Trí tuệ nhân tạo: Cách tiếp cận hiện đại (của Stuard J. Russell và Peter Norvig" . Tôi hiện đang đọc cuốn sách này, và nó là một cuốn sách rất hay.


4

AI là một lĩnh vực rộng vượt xa học máy, học sâu, mạng lưới thần kinh, v.v ... Trong một số lĩnh vực này, ngôn ngữ lập trình hoàn toàn không thành vấn đề (ngoại trừ vấn đề tốc độ), vì vậy LISP chắc chắn sẽ không phải là chủ đề ở đó .

Ví dụ, trong lập kế hoạch tìm kiếm hoặc AI, các ngôn ngữ tiêu chuẩn như C ++ và Java thường là lựa chọn đầu tiên, vì chúng nhanh (đặc biệt là C ++) và vì nhiều dự án phần mềm như hệ thống lập kế hoạch là nguồn mở, vì vậy sử dụng ngôn ngữ chuẩn là quan trọng ( hoặc ít nhất là khôn ngoan trong trường hợp một người đánh giá cao phản hồi hoặc phần mở rộng). Tôi chỉ biết về một kế hoạch duy nhất được viết bằng LISP. Chỉ để cho một số ấn tượng về vai trò của sự lựa chọn ngôn ngữ lập trình trong lĩnh vực AI này, tôi sẽ đưa ra một danh sách một số nhà hoạch định nổi tiếng nhất và do đó quan trọng nhất:

Fast-Downward:
description:
URL hệ thống lập kế hoạch cổ điển nổi tiếng nhất có thể được biết đến : http://www.fast-downward.org/
ngôn ngữ: C ++, các bộ phận (tiền xử lý) có trong Python

FF:
Mô tả: cùng với Fast-Xuống các cổ điển hệ thống quy hoạch mọi người đều biết
URL: https://fai.cs.uni-saarland.de/hoffmann/ff.html
ngôn ngữ: C

VHPOP:
mô tả: một trong những hệ thống lập kế hoạch liên kết theo nguyên nhân từng phần (POCL) được biết đến nhiều nhất
URL: http://www.tempastic.org/vhpop/
ngôn ngữ: C ++

SHOP và SHOP2:
mô tả:
URL hệ thống lập kế hoạch HTN (phân cấp) nổi tiếng nhất : https://www.cs.umd.edu/projects/shop/
ngôn ngữ: có hai phiên bản SHOP và SHOP2. Các phiên bản gốc đã được viết bằng LISP. Các phiên bản mới hơn (được gọi là JSHOP và JSHOP2) đã được viết bằng Java. Pyshop là một biến thể khác của SHOP được viết bằng Python.

PANDA:
mô tả:
URL hệ thống lập kế hoạch HTN (và lai) nổi tiếng khác : http://www.uni-ulm.de/en/in/ki/research/software/panda/panda-planning-system/
ngôn ngữ: có là các phiên bản khác nhau của trình lập kế hoạch: PANDA1 và PANDA2 được viết bằng Java, PANDA3 được viết chủ yếu bằng Java với một số phần nằm trong Scala.

Đây chỉ là một số hệ thống lập kế hoạch nổi tiếng nhất xuất hiện trong tâm trí tôi. Những cuộc thi gần đây hơn có thể được lấy từ Cuộc thi Lập kế hoạch Quốc tế (IPC, http://www.icaps-conference.org/index.php/Main/Competitions ), diễn ra hai năm một lần. Mã của các nhà quy hoạch cạnh tranh được công bố nguồn mở (trong một vài năm).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.