回答:
?転送ラーニングは不利(@mediaのおかげで)である-ド読む (私にとって非常に有益なルックスなので、この回答の完全な1作るためにここに追加...)
あなたの質問への回答..(ここから始まります)
転移学習はあなたが探しているものです。
画像のデータセットでたたみ込みニューラルネットワーク(Covnet)をトレーニングするなどのディープラーニングタスクが与えられた場合、最初の本能はネットワークを最初からトレーニングすることです。ただし、実際には、Covnetのようなディープニューラルネットワークには、多くの場合数百万の範囲の膨大な数のパラメーターがあります。小さなデータセット(パラメーターの数よりも小さいデータセット)でCovnetをトレーニングすると、Covnetの一般化能力に大きく影響し、しばしばオーバーフィッティングが発生します。
したがって、実際には、ImageNet(1.2Mラベル付きイメージ)などの大規模なデータセットでトレーニングされている既存のネットワークを、より小さなデータセットで引き続きトレーニング(つまり、逆伝播を実行)して微調整することがより頻繁にあります。データセットのコンテキストが元のデータセット(ImageNetなど)と大幅に異なることがなければ、事前トレーニング済みのモデルには、独自の分類問題に関連する機能がすでに学習されています。
いつモデルを微調整するのですか?
一般に、データセットのコンテキストが事前トレーニング済みモデルがトレーニングされているデータセットと大幅に異なっていない場合は、微調整を行う必要があります。ImageNetのような大規模で多様なデータセットで事前にトレーニングされたネットワークは、初期のレイヤーの曲線やエッジなどの普遍的な機能をキャプチャします。
もちろん、データセットが非常に特定のドメイン(医療画像や中国語の手書き文字など)を表し、そのようなドメインの事前トレーニング済みネットワークが見つからない場合は、ネットワークを最初からトレーニングすることを検討する必要があります。
もう1つの懸念は、データセットが小さい場合、特にVGGネットワークの場合のように、ネットワークの最後の数層が完全に接続された層である場合、小さいデータセットで事前トレーニング済みネットワークを微調整すると、過剰適合につながる可能性があることです。私の経験から言えば、数千の生サンプルがあり、一般的なデータ拡張戦略(翻訳、回転、フリッピングなど)が実装されている場合、通常は微調整するとより良い結果が得られます。
データセットが本当に小さい場合、つまりサンプル数が1,000未満の場合、完全に接続されたレイヤーの前に中間レイヤーの出力をフィーチャ(ボトルネックフィーチャ)として取得し、線形分類子(SVMなど)をトレーニングすることをお勧めしますそれ。SVMは、小さなデータセットに決定の境界を描くのに特に適しています。
微調整テクニック
以下は、実装を微調整するための一般的なガイドラインです。
一般的な方法は、事前トレーニング済みネットワークの最後のレイヤー(softmaxレイヤー)を切り捨て、それを私たち自身の問題に関連する新しいsoftmaxレイヤーで置き換えることです。たとえば、ImageNetの事前トレーニング済みネットワークには、1000カテゴリのsoftmaxレイヤーが付属しています。
私たちのタスクが10カテゴリの分類である場合、ネットワークの新しいsoftmaxレイヤーは1000カテゴリではなく10カテゴリになります。次に、ネットワークで伝播を実行して、事前トレーニング済みの重みを微調整します。ネットワークが一般化できるように、相互検証が実行されていることを確認してください。
より低い学習率を使用してネットワークをトレーニングします。ランダムに初期化された重みと比較して、事前トレーニング済みの重みはすでに非常に優れていると予想しているため、それらをあまり速く、そしてあまり歪ませたくない。一般的な方法は、初期学習率をスクラッチトレーニングに使用されるものよりも10倍小さくすることです。
また、事前トレーニング済みネットワークの最初の数層の重みを固定することも一般的な方法です。これは、最初のいくつかのレイヤーが曲線やエッジなどの新しい機能に関連する普遍的な機能をキャプチャしているためです。これらの重みはそのままにしたいと考えています。代わりに、後続のレイヤーでデータセット固有の機能を学習することにネットワークを集中させます。
この場合、私が間違っていないかのように、それらを再度トレーニングする必要があります。壁紙はImage-netモデルのクラスではありません。モデルを最初から作成するのは難しくありません(できれば浅いモデルはここでも..)
さらに読むために、