Có ai đã làm việc với ngôn ngữ lập trình Church không? Bất cứ ai có thể giới thiệu các ứng dụng thực tế? Tôi mới phát hiện ra nó, và trong khi nó có vẻ như nó giải quyết một số vấn đề tồn tại lâu dài trong AI và học máy, tôi vẫn hoài nghi. Tôi đã không bao giờ nghe nói về nó, và đã rất ngạc nhiên khi thấy nó thực sự được khoảng một vài năm, đã được công bố trên giấy Church: a language for generative models.Ứng dụng cho Ngôn ngữ lập trình của Giáo hội
Trả lời
Tôi không biết phải nói gì về vấn đề ứng dụng thực tế. Mô hình hóa khả năng nhận thức với các mô hình sinh sản có phải là một "ứng dụng thực tế" trong tâm trí bạn không?
Tầm quan trọng chính của Giáo hội (ít nhất là ngay bây giờ) là nó cho phép những người trong chúng ta làm việc với các giải pháp suy luận xác suất cho các vấn đề AI một cách đơn giản hơn để mô hình hóa. Về bản chất nó là một tập con của Lisp.
Tôi không đồng ý với Chris S rằng đó là ngôn ngữ đồ chơi. Trong khi một số trong những vấn đề suy luận có thể được nhân rộng trong các ngôn ngữ khác (tôi đã xây dựng một số trong Matlab) họ thường không phải là rất tái sử dụng và bạn thực sự phải tình yêu làm việc trong 4 và 5 cho vòng sâu (tôi ghét nó).
Thay vì giải quyết vấn đề theo cách đó, Giáo hội sử dụng các ưu điểm đệ quy của calciulus lamda và cũng cho phép một cái gì đó gọi là ghi nhớ thực sự hữu ích cho các mô hình sinh sản kể từ khi mô hình sinh sản của bạn thường không giống nhau. để kiểm tra bạn thực sự cần điều này.
Tôi sẽ nói rằng nếu những gì bạn đang làm có liên quan đến Bayesian Networks, Mô hình Bayesian phân cấp, các giải pháp xác suất cho POMDP hoặc Dynamic Bayesian Networks thì tôi nghĩ Giáo hội là một trợ giúp lớn. Đối với những gì nó có giá trị, tôi đã làm việc với cả Noah và Josh (hai tác giả của Giáo Hội) và không ai có một xử lý tốt hơn về suy luận xác suất ngay bây giờ (IMHO).
Lamda calaculus đã được triển khai trong hàng chục thư viện cho một số ngôn ngữ. Và ghi nhớ là một mẫu thiết kế cũ như thời gian. Không có gì mới ở đây. Tôi vẫn chưa rõ tại sao họ cảm thấy họ cần phải phát minh ra một phương ngữ Lisp khác thay vì chỉ sử dụng Common Lisp hoặc Scheme. – Cerin
Cerin, điểm của ngôn ngữ không phải là tính toán lambda, hay ghi nhớ, nhưng khả năng biểu diễn một mô hình xác suất của "thế giới", bằng cách viết một chương trình mô phỏng nó, và sau đó đặt câu hỏi về khả năng cụ thể Ví dụ, nếu bạn viết một chương trình mô tả cách các đối tượng 3D được chiếu thành một hình ảnh 2D, bạn có thể hỏi: cho hình ảnh này, các đối tượng 3D đã tạo ra nó là gì? Nghĩa là, bạn đi từ một vấn đề chiếu hình ảnh tương đối đơn giản đến vấn đề * tầm nhìn * khó khăn hơn, tự động. Bạn cho * output * và nhận * input *, với xác suất. – user118967
Có thể, bài viết được dự định sẽ được xuất bản vào Ngày Cá tháng Tư. Đây là một bài viết khác có ngày tháng cuối năm ngoái. http://dspace.mit.edu/handle/1721.1/44963
Bạn biết công việc mô tả Giáo hội tốt hơn những gì tôi nói không? Bài viết về MIT này: http://web.mit.edu/newsoffice/2010/ai-unification.html
Nó hơi cường điệu hơn, nhưng sau đó, tôi không miễn dịch với sự lạc quan trong bài viết này.
Giáo hội là một phần của gia đình ngôn ngữ lập trình xác suất cho phép phân tách ước tính mô hình theo định nghĩa của nó. Điều này làm cho mô hình xác suất và suy luận dễ tiếp cận hơn rất nhiều cho những người muốn áp dụng học máy nhưng những người không phải là những nhà nghiên cứu học máy hardcore.
Trong một thời gian dài, lập trình xác suất có nghĩa là bạn phải đưa ra một mô hình cho dữ liệu của bạn và lấy ước tính của mô hình: bạn có một số giá trị quan sát và bạn muốn tìm hiểu các tham số. Cấu trúc của mô hình liên quan chặt chẽ đến cách bạn ước tính các tham số và bạn phải có kiến thức khá tiên tiến về việc học máy để thực hiện các phép tính một cách chính xác. Các ngôn ngữ lập trình xác suất gần đây là một nỗ lực để giải quyết vấn đề đó và làm cho mọi việc dễ tiếp cận hơn cho các nhà khoa học dữ liệu hoặc những người làm công việc áp dụng học máy.
Là một loại suy, cân nhắc những điều sau đây:
Bạn là một lập trình viên và bạn muốn chạy một số mã trên máy tính. Trở lại những năm 1970, bạn phải viết ngôn ngữ lắp ráp trên thẻ đục lỗ và cho chúng vào một máy tính lớn (mà bạn phải đặt thời gian) để chạy chương trình của bạn.Bây giờ là năm 2014 và có các ngôn ngữ đơn giản, cao cấp để học mà bạn có thể viết mã ngay cả khi không có kiến thức về cách hoạt động của kiến trúc máy tính. Sẽ rất hữu ích khi hiểu cách máy tính hoạt động để viết bằng các ngôn ngữ đó, nhưng bạn không có số và nhiều người viết mã hơn nếu bạn phải lập trình bằng thẻ đục lỗ.
Ngôn ngữ lập trình xác suất làm tương tự cho việc học máy với mô hình thống kê. Ngoài ra, Giáo Hội không phải là lựa chọn duy nhất cho việc này. Nếu bạn không phải là người sùng lập trình chức năng, bạn cũng có thể xem các khuôn khổ sau đây để suy luận Bayes trong các mô hình đồ họa:
- Infer.NET, viết bằng C# bởi Microsoft Research lab in Cambridge, UK
- stan, viết bằng C++ bởi các thống kê bộ phận tại Columbia
- 1. Ngôn ngữ lập trình PHP hoặc ngôn ngữ lập trình?
- 2. Chữ số của Giáo hội chuyển thành int không có ngôn ngữ nguyên thủy
- 3. UML cho ngôn ngữ lập trình C
- 4. Thay đổi ngôn ngữ ứng dụng theo lập trình
- 5. C# Ngôn ngữ lập trình
- 6. Sự hội tụ của Toán học và Ngôn ngữ lập trình
- 7. Ngôn ngữ lập trình Siri
- 8. Windows: Ngôn ngữ lập trình nào?
- 9. Dịch mã byte Java sang các ngôn ngữ lập trình và ngôn ngữ lập trình khác
- 10. Ấn tượng đầu tiên của ngôn ngữ lập trình Fantom?
- 11. Tôi nên chọn ngôn ngữ lập trình chức năng nào làm ngôn ngữ lập trình hàm đầu tiên?
- 12. Tạo ngôn ngữ lập trình với C#
- 13. Tìm ngôn ngữ lập trình được sử dụng
- 14. gVim và nhiều ngôn ngữ lập trình
- 15. Lời khuyên cho ngôn ngữ lập trình khai thác grokking?
- 16. ngôn ngữ lập trình không xác định
- 17. Ngôn ngữ lập trình web cho danh sách rất lớn?
- 18. Ngôn ngữ lập trình bí ẩn
- 19. Đặt ngôn ngữ Wordpress theo lập trình?
- 20. Cách tạo ngôn ngữ lập trình .Net?
- 21. Mảng trong ngôn ngữ lập trình J
- 22. Phương pháp học ngôn ngữ lập trình của Schliemann
- 23. Các ngôn ngữ thay thế cho lập trình được nhúng
- 24. Ngôn ngữ lập trình đã nhập
- 25. Ngôn ngữ lập trình nền tảng
- 26. Ngôn ngữ lập trình ô tô
- 27. Mục đích của ngôn ngữ lập trình Scala là gì?
- 28. Ý nghĩa của "1ULL" trong ngôn ngữ lập trình c
- 29. Cho phép người sử dụng một phiên bản sandbox của một ngôn ngữ lập trình
- 30. Ngôn ngữ kịch bản "chính thức" tốt nhất cho các lập trình viên của Windows
Slashdot, tôi đoán vậy? – Jacob
Tốt nhất, các câu hỏi thảo luận nên được đánh dấu là wiki cộng đồng. Hầu hết thời gian chúng không phải là định dạng thích hợp cho Stack Overflow. – danben
Sau khi đọc qua wiki và tài liệu của dự án, rõ ràng đây chỉ là một ngôn ngữ đồ chơi khác không có tương lai nghiêm túc. Không có ví dụ cụ thể nào cho Giáo hội và có thể dễ dàng được nhân bản bằng hầu hết mọi ngôn ngữ. Các bài viết đưa sự chú ý này vào sự chú ý của tôi rõ ràng đã làm đảo lộn và xuyên tạc phạm vi của dự án. Bỏ phiếu để đóng. – Cerin