8

ベイジアン ネットワークの (ルーピー) 信念の和積アルゴリズムの実際のコード例を知っている人はいますか? 私は数日間地球を精査しましたが、あまり運がありませんでした. 私はそれがどの言語であるかに無関心です。

このトピックに関して私が見つけたすべてのドキュメントは、難解で馬鹿げたほどあいまいな数学用語でいっぱいです。難しいアルゴリズムのようには見えませんが、いくつかのトリッキーなビットがあまりにも見過ごされているため、確信が持てません。

あるいは、(変数名ではなく) 実数を使用する例でも、おそらくうまくいくでしょう。

4

3 に答える 3

2

私も同じような状況にあります。他のコンテキストでアルゴリズムを使用したいのですが、理論的な紹介として、クリストファーM.ビショップの「パターン認識と機械学習」という本を使用しています。「max-product」と「sum-product」の章では、非常に数学的なものですが、確率伝搬法について説明しています。

私はまだ小さな数値の例を探しているので、もしあなたがそれを見つけたら私は非常に興味があるでしょう。

一方、BPを実装するオープンソースライブラリであるlibDAIを見ることができます。

于 2010-03-04T15:24:49.963 に答える
2

ベイジアンネットワーク用にPearlの確率伝搬アルゴリズムを実装しました。情報に基づく信念値が0.001以内に収束すると終了するため、ループ伝播もサポートします。

すべてのコードはJavaであり、私のGoogleコードpen-uisvnrepoにある可能性があります。

これは、因子グラフを明示的に作成しません。

クラス「サポート」には、メイン関数と、操作可能な小さなネットワークを作成するいくつかの静的メソッドがあります。特に、私はナポリタンの本にある3ノードのBurlar-FreightTruck-Alarmネットワークを実装し、私の番号を確認しました。(それ以上の約束はありません!)

于 2010-03-09T18:19:56.183 に答える
0

Clojure で因子グラフ/信念伝播アルゴリズムを実装していますが、コードはまだ準備ができていません。(私のコードはまた、ベイジアン ネットワークを命題論理から一次/高次論理に持ち上げます。)

とにかく、いくつかのヒントを共有したいと思います。

  1. まず、周辺化は総和として示されていますが、その性質は総和とは異なることに注意してください。特に、確率表の積 (ポテンシャルと呼ばれる) と交換します。そのため、数学的導出では和と積を交換できますが、通常の算術では交換できません。

  2. パールのアルゴリズムでは、アップストリームとダウンストリームに送られるメッセージが異なることに注意してください。可能性はアップストリームに、確率はダウンストリームに送られます。(これが、ベイズの法則が信念伝播の導出で機能する理由です)。

  3. ファクター グラフ アルゴリズムでは、メッセージは P(A|K) などの CPT (条件付き確率テーブル) です。P(A|K) と P(K|A) と P(A,K) の CPT には、本質的に同じ情報が含まれています。ターミナル ノードでは、適切な変数に対して CPT を調整するだけでなく、周辺化する必要があります。これは、数学表記ではわかりにくいようです。

于 2012-08-19T07:39:06.050 に答える