4

Javaで自分で自動エンコーダーを実装しようとしています。理論から、オートエンコーダーは基本的に対称ネットワークであることがわかりました。

では、合計 5 つの層を選択した場合、トレーニング (逆伝播) フェーズで 9 つの層を使用する必要がありますか、それとも 5 つの層で十分でしょうか?

私は理論を読んできましたが、それらは抽象的すぎて数式でいっぱいです.Google経由で実装の詳細を取得できませんでした.

これを行う通常の方法は何ですか?

ここに画像の説明を入力

自動エンコーダーは、トレーニング フェーズで逆伝播を使用して、エラーを最小限に抑えることを目標に、入力と同様の出力を取得しようとします。それは上に示されています。上の画像のレイヤー数は 7 ですが、トレーニング後の実際のレイヤーは 4 です。では、トレーニング中にバックプロパゲーションを 4 つだけ実装できますか? もしそうなら、どうすればこれを行うことができますか?

4

1 に答える 1

3

単純な逆伝播は、非常に多くのレイヤーでは機能しません。いわゆる勾配消失現象が原因で、3 つ以上の隠れ層を持つネットワークは合理的なことを何も学習しません。実際、隠れ層が1 つである場合に最良の結果が得られます。したがって、オートエンコーダーの場合、INPUT レイヤー、HIDDEN レイヤー、および OUTPUT レイヤーが必要です。それ以上は必要ありません。万能近似定理は、これでどんな問題にも十分であることを明確に示しています。

OOP の観点からは、このコードをさまざまな種類のニューロンで再利用する予定があるかどうかによって異なります。ニューロンの種類とは、単に異なる活性化関数よりも深い何か、つまり異なる動作 (確率的ニューロン?) を意味します。異なるトポロジ (完全に接続されたネットワークではない)。そうでない場合、各ニューロンを個別のオブジェクトとしてモデル化することは完全に冗長です。

于 2013-12-28T20:06:56.447 に答える