2010-03-02 7 views
6

Có ai biết một ví dụ mã hoạt động của thuật toán tổng sản phẩm cho niềm tin (loopy) cho Bayesian Networks không? Tôi đã cọ rửa trái đất trong một vài ngày nhưng không có nhiều may mắn. Tôi không quan tâm đến ngôn ngữ của nó.Niềm tin khó tin Tuyên truyền mã ví dụ

Tất cả các tài liệu tôi đã tìm thấy về chủ đề này có đầy đủ các phép toán không rõ ràng và vô lý. Nó không có vẻ giống như một thuật toán khó, nhưng tôi không thể chắc chắn vì một số bit khó hiểu được tô bóng quá nhiều.

Cách khác, một ví dụ sử dụng số thực (chứ không phải tên biến) có thể sẽ thực hiện thủ thuật.

Trả lời

2

Tôi đã triển khai thuật toán tuyên truyền niềm tin của Pearl cho Mạng Bayesian. Nó cũng hỗ trợ quá trình truyền bá loopy, vì nó sẽ kết thúc khi các giá trị niềm tin thông báo hội tụ trong khoảng 0.001.

Tất cả các mã trong Java, và nó có thể được tìm thấy trong tôi Google code pen-ui svn repo.

này không làm cho rõ ràng một đồ thị yếu tố.

Lớp "Hỗ trợ" có chức năng chính và một vài phương pháp tĩnh tạo các mạng nhỏ mà bạn có thể chơi cùng. Đặc biệt, tôi đã triển khai mạng lưới ba nút Burlar-FreightTruck-Alarm được tìm thấy trong sách của Neapolitan, và các con số của tôi sẽ được kiểm tra. (Không hứa hẹn gì ngoài điều đó!)

2

Tôi đang ở trong tình huống tương tự. Tôi đang sử dụng cuốn sách "Nhận dạng mẫu và học máy" của Christopher M. Bishop để giới thiệu lý thuyết, mặc dù tôi muốn sử dụng thuật toán trong một số ngữ cảnh khác. Chương về "sản phẩm tối đa" và "sản phẩm tổng hợp" mô tả tuyên truyền niềm tin, mặc dù nó rất toán học.

Tôi vẫn đang tìm kiếm một ví dụ số nhỏ vì vậy nếu bạn tìm thấy một cái tôi rất quan tâm.

Trong khi đó, bạn có thể xem libDAI, một thư viện nguồn mở triển khai BP.

+0

Quyển sách: "Learning Bayesian Networks" của Neapolitan đưa ra hai phiên bản của thuật toán. Không có chi tiết nào bị bỏ sót, mặc dù nó có một số cú pháp toán học crufty. Ông cũng đưa ra các ví dụ số * phong phú về những gì xảy ra khi các thuật toán chạy. Tôi có thể gửi cho bạn PDF nếu bạn muốn (hơn 700 trang, bleh). Nó không giải quyết một cách rõ ràng sự lan truyền loopy, nhưng đó là điều mà tôi có thể đoán ra. Tài nguyên tốt ở đây: http://www.mcs.vuw.ac.nz/courses/COMP421/2008T1/documents/marcus/ Tôi đang triển khai bản thân mình (bằng Java) nên tôi sẽ đăng nội dung nào đó khi nó hoạt động và được gỡ lỗi. –

+0

Ngoài ra, hãy xem http://www.mcs.vuw.ac.nz/courses/COMP421/2008T1/code/GM/markov.py để triển khai Python. Mặc dù tôi tin rằng nó là lỗi, và tôi không hiểu nó. –

+1

Nhận sách của Neapolitan từ thư viện. Thực sự tốt đẹp để có một số ví dụ tốt! Cảm ơn vì tiền hỗ trợ. Thật không may nó không giải thích mối quan hệ của các mạng Bayesian, markov lưới và các biểu đồ yếu tố mà dường như là liên kết Tôi hiện đang thiếu để hiểu đầy đủ BP điên rồ. Một số tài nguyên khác mà tôi thấy hữu ích một phần: http://www.stanford.edu/~montanar/BOOK/partD.pdf http://www.kyb.tuebingen.mpg.de/bs/people/jorism /articles/thesis-mooij-hyperref.pdf – dudemeister

0

Tôi đang triển khai thuật toán nhân bản đồ thị/niềm tin trong Clojure, nhưng mã chưa sẵn sàng. (Mã của tôi cũng nâng mạng Bayes từ logic mệnh đề đầu tiên đặt hàng/bậc cao logic.)

Dù sao, tôi muốn chia sẻ một số lời khuyên:

  1. Đầu tiên, lưu ý rằng mặc dù bên lề được biểu thị dưới dạng tổng kết, các thuộc tính của nó khác với tổng kết. Đặc biệt, nó đi kèm với các sản phẩm của các bảng xác suất (được gọi là tiềm năng). Đó là lý do tại sao trong dẫn xuất toán học, tổng và sản phẩm có thể được trao đổi, trong khi trong số học thông thường họ không thể.

  2. Lưu ý rằng trong thuật toán của Trân Châu, các thông điệp đi ngược dòng và hạ lưu là khác nhau - khả năng đi ngược dòng và xác suất đi xuống hạ lưu. (Đây là lý do tại sao quy tắc của Bayes hoạt động trong việc truyền bá niềm tin).

  3. Trong thuật toán biểu đồ yếu tố, thư là CPT (bảng xác suất có điều kiện) như P (A | K). Các CPT của P (A | K) và P (K | A) và P (A, K) chứa thông tin cơ bản giống nhau. Tại một nút đầu cuối, chúng ta phải marginalize cũng như điều kiện CPT qua các biến thích hợp. Điều này dường như bị che khuất trong các ký hiệu toán học.