Wie genau funktioniert DropOut mit Faltungsschichten?


10

Dropout ( Papier , Erklärung ) setzt die Ausgabe einiger Neuronen auf Null. Für ein MLP könnten Sie also die folgende Architektur für den Irisblumendatensatz haben :

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

Es würde so funktionieren:

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

mit , , , , (der Einfachheit halber werden Vorurteile ignoriert).input_vectorR4×1W1R50×4D{0,1}50×1W2R20×50W3R20×3

Mit undD=(d)ij

dijB(1,p=0.5)

Dabei multipliziert die Operation punktweise mit (siehe Hadamard-Produkt ).mask(D,M)DM

Daher tasten wir jedes Mal nur die Matrix und somit wird der Ausfall eine Multiplikation eines Knotens mit 0.D

Aber für CNNs ist mir nicht klar, was genau herausgefallen ist. Ich kann drei Möglichkeiten sehen:

  1. Löschen vollständiger Feature-Maps (daher ein Kernel)
  2. Löschen eines Elements eines Kernels (Ersetzen eines Elements eines Kernels durch 0)
  3. Löschen eines Elements einer Feature-Map

Bitte fügen Sie Ihrer Antwort eine Referenz / ein Zitat hinzu.

Meine Gedanken

Ich denke, Lasagne tut (3) (siehe Code ). Dies ist möglicherweise am einfachsten zu implementieren. Näher an der ursprünglichen Idee könnte jedoch (1) sein.

Scheint für Caffe ähnlich zu sein (siehe Code ). Für den Tensorflow muss der Benutzer entscheiden ( Code - ich bin nicht sicher, was passiert, wenn er übergeben noise_shape=Nonewird).

Wie es sein sollte

(2) und (3) sind nicht sehr sinnvoll, da dies dazu führen würde, dass das Netzwerk räumlichen Positionen eine Invarianz hinzufügt, was wahrscheinlich nicht erwünscht ist. Daher ist (1) die einzige sinnvolle Variante. Ich bin mir jedoch nicht sicher, was passiert, wenn Sie die Standardimplementierung verwenden.


Ich habe die Frage auch in der Lasagne-Benutzergruppe gestellt .
Martin Thoma

Mein Freund bemerkte, dass (2) und (3) möglicherweise keine gute Idee sind, da dies das Netzwerk dazu zwingen könnte, Informationen räumlich zu verbreiten.
Martin Thoma

Antworten:


1

Wie Sie erwähnen, wird die Maskenmatrix mit den Aktivierungen in der Merkmalskarte auf der Schicht abgetastet und multipliziert zu erzeugen , die mit dem Filter werden dann bei der nächsten Schicht gefaltet abgefallen modifizierten Aktivierungen . (3)W ( l + 1 )lW(l+1)

Für weitere Details denke ich, dass Abschnitt 3 in diesem Dokument Ihnen helfen könnte: Max-Pooling & Convolutional Dropout . Insbesondere 3.2.

Wenn Sie testen, verwenden Sie alle Knoten des Netzwerks, wobei jedoch die Filtergewichte durch die Beibehaltungswahrscheinlichkeit skaliert werden, wie im Dokument erläutert.

Bitte zögern Sie nicht, meine Antwort zu verfeinern oder zu korrigieren.

Hoffe das hilft zumindest ein wenig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.