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:
mit , , , , (der Einfachheit halber werden Vorurteile ignoriert).
Mit und
Dabei multipliziert die Operation punktweise mit (siehe Hadamard-Produkt ).
Daher tasten wir jedes Mal nur die Matrix und somit wird der Ausfall eine Multiplikation eines Knotens mit 0.
Aber für CNNs ist mir nicht klar, was genau herausgefallen ist. Ich kann drei Möglichkeiten sehen:
- Löschen vollständiger Feature-Maps (daher ein Kernel)
- Löschen eines Elements eines Kernels (Ersetzen eines Elements eines Kernels durch 0)
- 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=None
wird).
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.