いくつかのニューロンを削除すると、モデルのパフォーマンスが向上する場合は、そもそも層数とニューロン数が少ない単純なニューラルネットワークを使用してみませんか?最初に大きくて複雑なモデルを作成し、後でその一部を抑制するのはなぜですか?
いくつかのニューロンを削除すると、モデルのパフォーマンスが向上する場合は、そもそも層数とニューロン数が少ない単純なニューラルネットワークを使用してみませんか?最初に大きくて複雑なモデルを作成し、後でその一部を抑制するのはなぜですか?
回答:
ドロップアウトの機能は、モデルの堅牢性を高め、ニューロン間の単純な依存関係を削除することです。
ニューロンは、ネットワークを介した前後の単一パスでのみ削除されます。つまり、そのパスの重みは合成的にゼロに設定されるため、エラーも同様に、つまり重みは更新されません。ドロップアウトは、正規化の形としても機能します。これは、複雑さのためにモデルに多少のペナルティを課すためです。
Michael NielsenのDeep Learning book(無料およびオンライン)のDropoutセクションを読むことをお勧めします。この本は、優れた直観を提供し、図/説明も非常に役立ちます。彼は説明します:
ドロップアウトは、正則化のための根本的に異なる手法です。L1およびL2の正則化とは異なり、ドロップアウトはコスト関数の変更に依存しません。代わりに、ドロップアウトでネットワーク自体を変更します。
ここに素敵な要約記事があります。その記事から:
いくつかの観察:
- ドロップアウトにより、ニューラルネットワークは、他のニューロンのさまざまなランダムサブセットと組み合わせて使用できる、より堅牢な機能を学習します。
- ドロップアウトにより、収束に必要な反復回数が約2倍になります。ただし、各エポックのトレーニング時間は短くなります。
- H個の隠れユニットがあり、それぞれをドロップできるため、2 ^ H個の可能なモデルがあります。テスト段階では、ネットワーク全体が考慮され、各アクティベーションは係数pだけ削減されます。
私にお茶を一杯作ってほしいと頼むことを想像してください-あなたはいつも水を注ぐのに右手を使い、水のレベルを測定するために左目を使い、そしてスプーンでお茶をかき混ぜるために再び右手を使います。これは、左手と右目がほとんど役に立たないことを意味します。ドロップアウトを使用すると、たとえば、右手を背中の後ろに縛り、左手を使用するように強制します。片方の目または片方の手で行動を起こさずにお茶を20杯作った後、あなたは利用可能なすべてのものを使うことについてよりよく訓練されています。たぶん、あなたは小さなキッチンでお茶を作ることを余儀なくされるでしょう。左腕でケトルを使用することしかできません...そしてドロップアウトを使用した後、あなたはそれをする経験があります!目に見えないデータに対してより堅牢になりました。
ドロップアウトは実際にニューロンを削除するのではなく、特定のバッチに対して特定のニューロンが何の役割も果たさない(アクティブにされない)だけです。
例 -8車線の道路があるとします-トラックが来ると、レーン1、2、4、6、7を通過し、車が来ると、レーン2、3、4、7、8を通過し、自転車が来ると、レーン1、2、5、8を通過します。そのため、車両に関係なく、すべての車線が存在しますが、そのうちの一部のみが使用されます。
同様に、すべてのニューロンはモデル全体で使用されますが、データの特定のバッチに対してニューロンのサブセットのみがアクティブ化されます。また、モデルは後で削減されず、モデルの複雑さはそのまま残ります。
ドロップアウトを使用する理由
Ian Goodfellowによるディープラーニングの本にあるように、
ドロップアウトは、重量減衰、フィルター基準制約、スパースアクティビティ正則化など、他の標準的な計算的に安価な正則化よりも効果的です。
彼も言います
ドロップアウトの利点の1つは、計算コストが非常に安いことです。
ドロップアウトのもう1つの重要な利点は、使用できるモデルまたはトレーニング手順のタイプを大幅に制限しないことです。分散表現を使用するほぼすべてのモデルでうまく機能し、確率的勾配降下法でトレーニングできます。これには、フィードフォワードニューラルネットワーク、制限付きボルツマンマシンなどの確率モデル(Srivastava et al。、2014)、リカレントニューラルネットワーク(Bayer and Osendorfer、2014; Pascanu et al。、2014a)が含まれます。
この本は言う-
コアとなるアイデアは、レイヤーの出力値にノイズを導入すると、重要ではない出来事のパターンが崩れ、ノイズが存在しない場合にネットワークが記憶を開始するというものです。
ドロップアウトの機能を見る別の方法は、ベイズモデルの共変量(つまり、元の共変量と複雑な関数変換の複雑な相互作用項)の係数のスラブスパイクのようなものです。これは、Yarin Galが彼の論文で提案した解釈です(彼の出版物のリストを参照)。
これがなぜそうなのかについての簡単な手を振る議論です:
なぜスラブアンドスパイクを優先するのでしょうか?つまり、ニュートラルネットワークが本当に完全な可能な複雑さを必要とするかどうかについて不確実性を表し、この不確実性を適切に考慮に入れることができます。予測。これは、データに過剰に適合できる中立ネットワークの主要な問題に対処します(もちろん、それを達成する唯一の方法ではありません)。
ドロップアウト層は無差別にニューロンの指定部分をカリングし、問題のモデルの表現能力を低下させます。これにより、ネットワークが複雑な非線形決定境界(つまり、データセットの「ノイズ」)に適合しないため、過剰適合が防止(または改善)されます。