10

制限付きボルツマン マシンに実数値データの新しい表現を学習させたい (参照: Hinton - 2010 - A Practical Guide to Training RBMs )。ガウス線形単位の実装に苦労しています。

可視層にガウス線形単位があると、エネルギーは に変化しE(v,h)= ∑ (v-a)²/2σ - ∑ bh - ∑v/σ h wます。Contrastive Divergence Learning Algorithm を変更する方法がわかりません。可視ユニットは線形であるため、これ以上サンプリングされません。状態として期待値 (平均化活性化)p(v_i=1|h)= a +∑hw + N(0,1)を使用します。関連付けは変更されません ( pos: data*p(h=1|v)'neg: p(v=1|h)*p(h=1|v)')。しかし、これはデータを再構築したい場合にのみランダムノイズにつながります。エラー率は 50% 前後で改善しなくなります。

最後に、両方のレイヤーでガウス線形単位を使用したいと考えています。隠しユニットの状態を取得するにはどうすればよいですか?平均場活性化を使用することをお勧めしますp(h_i=1|v)= b +∑vw + N(0,1)が、よくわかりません。

4

2 に答える 2

3

ヒントン自身が提供したガウス RBM を見ることができます。ここで見つけてください。 http://www.cs.toronto.edu/~hinton/code/rbmhidlinear.m

于 2013-10-18T09:38:32.937 に答える
1

私は、c++ と matlab mexfunction を使用して RBM を実装する同様のプロジェクトに取り組んでいます。ヒントン教授 (matlab 内) の実装から、可視ユニットのバイナリ アクティベーションがシモイド関数を使用していることがわかりました。すなわち: vs = sigmoid(bsxfun(@plus, hs*obj.W2', obj.b)); しかし、ガウス可視単位 RBM を実装するときは、simoid を使用せずに可視単位をサンプリングするだけです。すなわち: vs = bsxfun(@plus, h0*obj.W2', obj.b); またはヒントン教授の実装をよく見てください(参照:http://www.cs.toronto.edu/~hinton/code/rbmhidlinear.m

于 2015-12-01T10:00:09.957 に答える