ドロップアウト(論文、説明)は、一部のニューロンの出力をゼロに設定します。したがって、MLPの場合、アイリスの花データセットに対して次のアーキテクチャを使用できます。
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
これは次のように機能します。
、、、、(簡略化のためにバイアスを無視)。 W 1 ∈ R 50 × 4 D ∈ { 0 、1 } 50 × 1 W 2 ∈ R 20 × 50 W 3 ∈ R 20 × 3
と
ここで操作乗算のポイント単位と(参照アダマール積を)。D M
したがって、マトリックス毎回サンプリングするだけなので、ドロップアウトはノードと0の乗算になります。
しかし、CNNの場合、何がドロップアウトされているのかは明確ではありません。私は3つの可能性を見ることができます:
- 完全な機能マップの削除(したがってカーネル)
- カーネルの1つの要素を削除する(カーネルの要素を0で置き換える)
- 機能マップの1つの要素を削除する
回答に参照/引用を追加してください。
私の考え
私はラザニアがそうだと思います(3)(コードを参照)。これは実装するのが最も簡単かもしれません。ただし、元のアイデアにより近い(1)かもしれません。
Caffeでも同様のようです(コードを参照)。tensorflowの場合、ユーザーが決定する必要があります(コード - noise_shape=None
が渡されたときに何が起こるかわかりません)。
それがどうあるべきか
(2)と(3)は、ネットワークが空間位置に不変性を追加するため、あまり意味がありません。これはおそらく望ましくありません。したがって、(1)は意味のある唯一のバリアントです。しかし、デフォルトの実装を使用するとどうなるかわかりません。