問題タブ [rbm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - GRBM の実装
MATLAB でガウス入力ベースの RBM を実装しています。
vi
次元は 100*784、w
次元は 784*500、sigma
次元は 1*784 です。
p(h|v)= sigmoid(cj+wij*vi/sigma^2)
. 掛けると寸法誤差が出ますw*v/sigma^2
。以下のように実装しましたが、
コードのエラーの原因は何ですか
rbm - rbm のガウス可視単位
私はGaussian RBMを実装したいと思っています。そのために、データの平均と単位分散をゼロにしたいのです。私のデータはMNISTデータセットです。データセットは次のリンクから取得されたものです。
http://www.cs.toronto.edu/~hinton/code/makebatches.m にアクセスしてください
以下の方法で実装しましたが、私のデータはNANになります。データを標準偏差で除算するとNANになります。
%START ポジティブ フェーズ
%ゼロ平均と単位分散
私はこれを小さな例のセットで試しました.うまくいきます.NANになる理由は何ですか.
これを取り除き、ゼロ平均と単位分散でガウス入力を作成する方法。
machine-learning - RBM を使用したディープ オートエンコーダー
RBM を使用してディープ オートエンコーダーを実装しています。ネットワークを展開するには、エンコーダーの転置された重みをデコーダーに使用する必要があることを理解しています。しかし、デコーダーにどのバイアスを使用すればよいかわかりません。誰かが私のために詳しく説明したり、疑似コードのリンクを送ってくれたりしてくれれば幸いです。
machine-learning - 制限付きボルツマン マシンの実装をテストする方法は?
単純なバイナリ制限付きボルツマン マシンの実装を開発しましたが、それをテストしたいと思います。(最終的には DBN に使用するつもりですが、個別にテストしたいと思います)。
MNIST データセットのテストについて何人かの人々や論文が話しているのを見ましたが、それを行う方法の詳細は見つかりませんでした。
隠れユニットに接続された新しい分類レイヤーを追加し、逆伝播を使用してトレーニングする必要がありますか? 別の方法はありませんか?
重みをプロットしている人もいますが (これも MNIST で)、重みをプロットする方法と、それが何を表しているかについて問題があります...
ありがとう
c++ - RBM が正しく機能しない理由を見つける方法は?
RBM を実装しようとしていて、MNIST データセットでテストしています。しかし、収束しないようです。
28x28 の可視ユニットと 100 の非表示ユニットがあります。サイズ 50 のミニバッチを使用しています。エポックごとに、データセット全体をトラバースします。学習率は 0.01、運動量は 0.5 です。重みは、平均 0.0 および stdev 0.01 のガウス分布に基づいてランダムに生成されます。可視バイアスと非表示バイアスは 0 に初期化されます。アクティブ化としてロジスティック シグモイド関数を使用しています。
各エポックの後、すべてのミニバッチの平均再構築エラーを計算します。取得したエラーは次のとおりです。
チェックする重みのヒストグラムをプロットしました (左から右: 非表示、重み、可視、上: 重み、下: 更新):
エポック 3 後の重みのヒストグラムエポック 3 後 の重みのヒストグラム http://baptiste-wicht.com/static/finals/histogram_epoch_3.png
エポック 4 後の重みのヒストグラムエポック 4 後 の重みのヒストグラム http://baptiste-wicht.com/static/finals/histogram_epoch_4.png
しかし、少し奇妙に見える隠れた偏見を除けば、残りは問題ないようです。
私はまた、隠された重みをプロットしようとしました:
エポック 3 後の重み
エポック 3 後の重み http://baptiste-wicht.com/static/finals/hiddens_weights_epoch_3.png
エポック 4 後の重み
エポック 4 後の重み http://baptiste-wicht.com/static/finals/hiddens_weights_epoch_4.png
(それらは、その関数を使用して 2 色でプロットされます。
)
そして、ここでは、それらはまったく意味がありません...
さらに進むと、再構築エラーはもう少し減少しますが、0.025 を超えないようにしてください。しばらくして勢いを変えても、上がったり下がったりするけど面白くない。さらに、エポックが増えると、重みは意味をなさなくなります。私が見たほとんどの実装例では、完全なデータ セットを 2 ~ 3 回繰り返した後、重みがある程度意味を成していました。
また、可視ユニットから画像を再構築しようとしましたが、結果はほぼランダムに見えます。
実装で何が問題なのかを確認するにはどうすればよいですか? 重みはある範囲内にあるべきですか?データ内で何かが本当に奇妙に見えますか?
完全なコード: https://github.com/wichtounet/dbn/blob/master/include/rbm.hpp