Dropout ( papier , wyjaśnienie ) ustawia moc wyjściową niektórych neuronów na zero. W przypadku MLP możesz mieć następującą architekturę zestawu danych kwiatów Iris :
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
Działa to tak:
z , W 1 ∈ R 50 × 4 , D ∈ { 0 , 1 } 50 × 1 , W 2 ∈ R 20 × 50 , W 3 ∈ R 20 × 3 (ignorowanie uprzedzeń ze względu na uproszczenie).
Przy oraz
gdzie działanie zwielokrotnia punktowo D przez M (patrz iloczyn Hadamarda ).
Stąd tylko próbkujemy macierz każdym razem, a zatem wypadanie staje się pomnożeniem węzła przez 0.
Ale w przypadku CNN nie jest dla mnie jasne, co dokładnie zostało porzucone. Widzę trzy możliwości:
- Usuwanie kompletnych map obiektów (stąd jądro)
- Usunięcie jednego elementu jądra (zastąpienie elementu jądra przez 0)
- Upuszczenie jednego elementu mapy obiektów
Dodaj odniesienie / cytat do swojej odpowiedzi.
Moje myśli
Myślę, że Lasagne ma (3) (patrz kod ). Może to być najprostszy do wdrożenia. Jednak bliżej pierwotnego pomysłu może być (1).
Wygląda podobnie do Caffe (patrz kod ). W przypadku tensorflow użytkownik musi zdecydować ( kod - nie jestem pewien, co się stanie, gdy noise_shape=None
zostanie przekazany).
Jak powinno być
(2) i (3) nie mają większego sensu, ponieważ spowodowałoby to dodanie przez sieć niezmienności do pozycji przestrzennych, co prawdopodobnie nie jest pożądane. Stąd (1) jest jedynym wariantem, który ma sens. Ale nie jestem pewien, co się stanie, jeśli użyjesz domyślnej implementacji.