2010-03-31 42 views
12

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

+0

Slashdot, tôi đoán vậy? – Jacob

+0

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

+1

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

Trả lời

6

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

+0

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

+1

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

2

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:

Các vấn đề liên quan