Noções básicas sobre descida e descida de gradiente

9

Estou vendo como implementar desistências em redes neurais profundas e achei algo contra-intuitivo. Na fase avançada, oculte as ativações com um tensor aleatório de 1s e 0s para forçar a rede a aprender a média dos pesos. Isso ajuda a rede a generalizar melhor. Mas durante a fase de atualização da descida do gradiente, as ativações não são mascaradas. Isso para mim parece contra-intuitivo. Se eu mascarar ativações de conexões com abandono, por que não devo mascarar a fase de descida do gradiente?

emanuele
fonte
Não sei ao certo onde você encontrou uma referência mostrando a evasão usada para mascarar pesos ? Eu acho que isso está incorreto.
Neil Slater
você está certo, eu usei o conceito errado.
Emanuele

Respostas:

6

Na desistência, conforme descrito em http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf , os pesos não são mascarados. Em vez disso, as ativações dos neurônios são mascaradas, por exemplo, como é apresentada para o treinamento (ou seja, a máscara é aleatória para cada corrida para frente e gradiente de retorno, nunca repetida).

As ativações são mascaradas durante a passagem para frente e os cálculos de gradiente usam a mesma máscara durante a propagação de retorno desse exemplo. Isso pode ser implementado como um modificador dentro de uma descrição da camada ou como uma camada dropout separada.

Durante a fase de atualização de peso, normalmente aplicada em um minilote (em que cada exemplo teria uma máscara diferente aplicada), não há mais uso de máscaras de eliminação. Os valores de gradiente usados ​​para atualização já foram afetados pelas máscaras aplicadas durante a propagação de retorno.

Encontrei uma referência útil para aprender como o abandono funciona, talvez para se implementar, é o Deep Learn Toolbox for Matlab / Octave.

Neil Slater
fonte