Abandono: escalar a ativação versus inverter o abandono

9

Ao aplicar o abandono em redes neurais artificiais, é preciso compensar o fato de que, no tempo de treinamento, uma porção dos neurônios foi desativada. Para fazer isso, existem duas estratégias comuns:

  • escalando a ativação no momento do teste
  • invertendo a desistência durante a fase de treinamento

As duas estratégias estão resumidas nos slides abaixo, extraídos de Standford CS231n: Redes neurais convolucionais para reconhecimento visual .

Qual estratégia é preferível e por quê?


Escalando a ativação no momento do teste:

insira a descrição da imagem aqui

Invertendo a desistência durante a fase de treinamento:

insira a descrição da imagem aqui

Franck Dernoncourt
fonte
Por que devemos dimensionar vez de ? Minha intuição é que quanto mais desistência, mais devemos compensar, certo? Veja a relação entre a taxa de desistência e o fator de redimensionamento: <br> <br> <br> <br> <br> <br> <br> <br> 11p dropout->111p 0,2->5->1,250,5->2->20,8->1,25->5dropout>1p>11p0.2>5>1.250.5>2>20.8>1.25>5
Ken Chan
"quanto mais a desistência, mais devemos compensar" Correto, é por isso que usamos 1 / p. Se p = 0,1, para que 90% das saídas sejam descartadas, precisamos escalar esses valores em 10. Observe que 1 / .1 = 10, enquanto 1 / (1-.1) = 1 / (. 9) = 1.1
Tahlor 31/10/19

Respostas:

5

"inverter a desistência durante a fase de treinamento" deve ser preferível.

Teoricamente, se considerarmos o abandono de Bernoulli como um método de adicionar ruído à rede, é melhor que o ruído possa ter uma média zero. Se fizermos a escala no momento do treinamento para cancelar a parte das unidades desativadas, a média do ruído será zero.

Existem outros tipos de métodos de abandono / ruído publicados mais tarde (por exemplo , abandono multiplicativo gaussiano, ruído aditivo gaussiano ) que também possuem uma média zero.

Em termos de treinamento e teste de redes neurais na prática, há uma razão para preferir essa implementação também. Digamos que eu queira comparar o desempenho de dois modelos com a mesma arquitetura, um é treinado por desistência e o outro não.

Se eu "escalar a ativação no momento do teste", precisarei de duas redes diferentes no momento do teste. Se eu usar a "versão invertida", poderia aplicar a mesma rede de teste (código) aos dois conjuntos de parâmetros treinados.

dontloo
fonte
Deixe-me garantir que estou entendendo corretamente: o modelo não-invertido e treinado para abandono teria uma arquitetura diferente, porque precisaria implementar a multiplicação por p em cada camada? Então o computador vê como topologicamente diferente?
Eric Auld
@EricAuld oi, desculpe pela resposta tardia, sim, isso é basicamente o que eu quis dizer, apenas com "aplicar a mesma rede de teste", eu quis dizer que você não precisará alterar o código.
23418 dontloo
4

Outra vantagem de fazer o abandono invertido (além de não precisar alterar o código no momento do teste) é que, durante o treinamento, pode-se ter fantasia e alterar a taxa de abandono dinamicamente. Isso foi denominado como abandono "recozido". Essencialmente, a lógica é que adicionar "ruído" de abandono no início do treinamento ajuda a impedir que a otimização fique travada no mínimo local, enquanto diminui para zero no final, resultando em uma rede sintonizada mais fina com melhor desempenho.

TREINAMENTO ANULADO DE DROPOUT DE REDES PROFUNDAS

Dropout modificado para treinamento de rede neural

JPJ
fonte
2

Andrew fez uma excelente explicação em seu curso de Deep Learning sobre esta sessão Regularização do abandono escolar :

  • Abandono invertido é mais comum, pois facilita muito os testes
  • O objetivo da inversão é garantir que o valor de Z não seja impactado pela redução de W.

Diga a3 = a3 / keep_probna última etapa da implementação:

Z [4] = W [4] * a [3] + b [4] , o tamanho do elemento de a [3] foi reduzido keep_probde D3 (uma porcentagem de elementos foi eliminada por D3), portanto, o valor de Z [4] também será reduzido, portanto, para compensar isso aproximadamente , inverteremos a alteração dividindo keep_probpara garantir que o valor de Z [4] não seja impactado.

insira a descrição da imagem aqui

xmindata
fonte