ニューラルネットワークの分野は初めてで、Deep Belief NetworksとConvolutional Networksの違いを知りたいです。また、Deep BeliefとConvolutional Neural Netsの組み合わせであるDeep Convolutional Networkはありますか?
これは私が今までに集めたものです。間違っている場合は修正してください。
画像分類問題の場合、Deep Belief networkには多くのレイヤーがあり、各レイヤーは貪欲なレイヤーごとの戦略を使用してトレーニングされます。たとえば、画像サイズが50 x 50で、4つのレイヤーを持つDeep Networkが必要な場合、
入力層とHL1の間の重み(W1)をトレーニングするために、入力層には50 x 50 = 2500ニューロン、HL1 = 1000ニューロン(たとえば)、HL2 = 100ニューロン(たとえば)、出力層= 10ニューロンがありますAutoEncoder(2500-1000-2500)を使用して、サイズ2500 x 1000のW1を学習します(これは教師なし学習です)。次に、最初の非表示レイヤーを介してすべての画像をフィードフォワードして機能セットを取得し、別のオートエンコーダー(1000-100-1000)を使用して次の機能セットを取得し、最後に分類にsoftmaxレイヤー(100-10)を使用します。 (最後の層(HL2-softmax層である出力)の重みのみを学習するのは、教師あり学習です)。
(オートエンコーダーの代わりにRBMを使用できます)。
Convolutional Neural Networksを使用して同じ問題が解決された場合、50x50の入力画像の場合、7 x 7パッチのみを使用してネットワークを開発します(たとえば)。私のレイヤーは
重みを学習するために、サイズ50 x 50の画像から7 x 7のパッチを取得し、畳み込み層をフィードフォワードするため、サイズ(50-7 + 1)x(50-7 + 1)= 44 x 44。
次に、11x11のウィンドウをプーリングハンドに使用するため、プーリングレイヤーの出力としてサイズ(4 x 4)の25個のフィーチャマップを取得します。これらの機能マップを分類に使用します。
重みを学習する際、Deep Belief Networks(教師なし学習)のようにレイヤーごとの戦略を使用するのではなく、教師あり学習を使用して、すべてのレイヤーの重みを同時に学習します。これは正しいですか、または重みを学習する他の方法はありますか?
私が理解したことは正しいですか?
したがって、画像分類にDBNを使用する場合は、すべての画像のサイズを特定のサイズ(たとえば200x200)に変更し、入力層にその数のニューロンを配置する必要があります。一方、CNNの場合は、 (サイズ200x200の画像の場合は10 x 10と入力)、画像全体で学習した重みを畳み込みますか?
DBNはCNNよりも優れた結果を提供しますか、それとも純粋にデータセットに依存していますか?
ありがとうございました。
一般的に、DBNは制限付きボルツマンマシン(RBM)をスタックする生成ニューラルネットワークです。 RBMは生成オートエンコーダーと考えることができます。深い信念ネットが必要な場合は、ヒントンと彼の学生YehがRBMをスタックするとシグモイドの信念ネットになることを証明したため、プレーンな自動エンコーダーではなくRBMをスタックする必要があります。
畳み込みニューラルネットワークは、MNISTなどのベンチマークコンピュータビジョンデータセットに関する現在の文献で、DBNよりも優れたパフォーマンスを発揮しています。データセットがコンピュータービジョンのものではない場合、DBNのパフォーマンスはほぼ間違いなく向上します。理論的には、DBNは最適なモデルである必要がありますが、現時点で結合確率を正確に推定することは非常に困難です。 Leeに興味があるかもしれません。 al(2009)は、2つを組み合わせることを検討しているConvolutional Deep Belief Networksで作業しています。
靴を学ぶことで状況を説明しようと思います。
DBNを使用してこれらの画像を学習する場合、ここで学習アルゴリズムで起こる悪いことがあります
別の場所に靴があります。
すべてのニューロンは、靴内だけでなく、画像内の靴の位置も学習しようとします。これは、重み内に「ローカル画像パッチ」の概念がないためです。
DBNは、すべての画像がサイズ、平行移動、回転によって位置合わせされている場合に意味があります。
たたみ込みネットワークの考え方は、ウェイトシェアリングと呼ばれる概念があるということです。この「ウェイトシェアリング」の概念を拡張しようとすると
最初に7x7のパッチを見て、あなたの例によれば-最初の層の3つのニューロンの例として、彼らはこれらの靴の「前」、「後ろ」、「後ろ」の部分を学んだと言うことができますすべての靴を通る7x7パッチのように見えます。
通常、アイデアは、学習するために複数の畳み込み層を次々に持つことです
これら3つの異なることを、3つの異なるニューロンと考えることができます。画像の一部に靴があると、画像内のそのような領域/ニューロンが発火します。
プーリングは、画像をサブサンプリングし、低次元の空間を作成しながら、より高いアクティベーションを保護し、計算をより簡単かつ実行可能にします。
したがって、最後のレイヤーで25X4x4、つまり400次元ベクトルを見ると、写真のどこかに靴がある場合、「靴のニューロン」がアクティブになり、非靴のニューロンはゼロに近くなります。
そして、どのニューロンが靴用でどれがそうでないかを理解するために、その400次元のベクトルを別の教師付き分類器に配置します(これは、マルチクラスSVMのようなもの、またはソフトマックス層と言ったものです)
翻訳不変性と線->円弧->半円->靴の前部->靴のアイデア( http://www.cs .princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf )。論文の画像を見るだけでも、いくつかのアイデアが得られます。