DropOutはどの程度正確に畳み込みレイヤーで機能しますか?


10

ドロップアウト(論文説明)は、一部のニューロンの出力をゼロに設定します。したがって、MLPの場合、アイリスの花データセットに対して次のアーキテクチャを使用できます。

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

これは次のように機能します。

softmax(W3tanh(W2mask(D,tanh(W1input_vector)))

、、、、(簡略化のためにバイアスを無視)。 W 1R 50 × 4 D { 0 1 } 50 × 1 W 2R 20 × 50 W 3R 20 × 3input_vectorR4×1W1R50×4D{0,1}50×1W2R20×50W3R20×3

D=(d)ij

dijB(1,p=0.5)

ここで操作乗算のポイント単位と(参照アダマール積を)。D Mmask(D,M)DM

したがって、マトリックス毎回サンプリングするだけなので、ドロップアウトはノードと0の乗算になります。D

しかし、CNNの場合、何がドロップアウトされているのかは明確ではありません。私は3つの可能性を見ることができます:

  1. 完全な機能マップの削除(したがってカーネル)
  2. カーネルの1つの要素を削除する(カーネルの要素を0で置き換える)
  3. 機能マップの1つの要素を削除する

回答に参照/引用を追加してください。

私の考え

私はラザニアがそうだと思います(3)(コードを参照)。これは実装するのが最も簡単かもしれません。ただし、元のアイデアにより近い(1)かもしれません。

Caffeでも同様のようです(コードを参照)。tensorflowの場合、ユーザーが決定する必要があります(コード - noise_shape=Noneが渡されたときに何が起こるかわかりません)。

それがどうあるべきか

(2)と(3)は、ネットワークが空間位置に不変性を追加するため、あまり意味がありません。これはおそらく望ましくありません。したがって、(1)は意味のある唯一のバリアントです。しかし、デフォルトの実装を使用するとどうなるかわかりません。



私は友人に、(2)と(3)はネットワークに情報を空間的に拡散させる可能性があるため、良い考えではないかもしれないと述べました。
マーティントーマ2017年

回答:


1

既に述べたように、マスクマトリックスがサンプリングされ、レイヤー機能マップのアクティベーションと乗算されて、ドロップアウトされた変更されたアクティベーションを生成し、次のレイヤーフィルターと畳み込みます。(3)W l + 1 lW(l+1)

詳細については、このペーパーのセクション3が役立つと思います:最大プーリングとたたみ込みドロップアウト。具体的には3.2。

テストするときは、ネットワークのすべてのノードを使用しますが、論文で説明されているように、フィルターの重みを保持確率でスケーリングします。

私の回答を自由に修正または訂正してください。

これが少なくとも少し役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.