Como exatamente o DropOut funciona com camadas convolucionais?


10

O abandono ( papel , explicação ) define a saída de alguns neurônios para zero. Portanto, para um MLP, você pode ter a seguinte arquitetura para o conjunto de dados de flores Iris :

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

Funcionaria assim:

softmumax(W3tanh(W2mascarar(D,tanh(W1 1Eunpvocêt_vector)))

com , W umR 50 × 4 , D { 0 , 1 } 50 × 1 , W 2R 20 × 50 , W 3R 20 × 3 (ignorando vieses por uma questão de simplicidade).Eunpvocêt_vectorR4×1 1W1 1R50.×4D{0 0,1 1}50.×1 1W2R20×50.W3R20×3

Com eD=(d)Euj

dEujB(1 1,p=0,5)

onde a operação da multiplica D ponto a ponto com M (consulte o produto Hadamard ).mascarar(D,M)DM

Portanto, apenas amostramos a matriz cada vez e, assim, o dropout se torna uma multiplicação de um nó com 0.D

Mas para as CNNs, não está claro para mim o que exatamente é descartado. Eu posso ver três possibilidades:

  1. Descartar mapas de recursos completos (daí um kernel)
  2. Eliminando um elemento de um kernel (substituindo um elemento de um kernel por 0)
  3. Eliminando um elemento de um mapa de recursos

Adicione uma referência / citação à sua resposta.

Meus pensamentos

Eu acho que Lasanha faz (3) (ver código ). Isso pode ser o mais simples de implementar. No entanto, pode estar mais próximo da ideia original (1).

Parece ser semelhante para Caffe (consulte o código ). Para o tensorflow, o usuário precisa decidir ( código - não tenho certeza do que acontece quando noise_shape=Noneé passado).

Como deve ser

(2) e (3) não fazem muito sentido, pois isso faria com que a rede adicionasse invariância às posições espaciais, o que provavelmente não é desejado. Portanto (1) é a única variante que faz sentido. Mas não tenho certeza do que acontece se você usar a implementação padrão.


Também fiz a pergunta no grupo de usuários Lasanha .
Martin Thoma

Meu amigo observou que (2) e (3) podem não ser uma boa idéia, porque podem forçar a rede a espalhar informações espacialmente.
Martin Thoma

Respostas:


1

euW(eu+1 1)

Para mais detalhes, acho que a seção 3 deste documento pode ajudá-lo: Máx. Pool e desistência convolucional . Especificamente 3.2.

Ao testar, você usa todos os nós da rede, mas com os pesos do filtro dimensionados pela probabilidade de retenção, conforme explicado no documento.

Sinta-se à vontade para refinar ou corrigir minha resposta.

Espero que isso ajude pelo menos um pouco.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.