Por que a adição de uma camada de abandono melhora o desempenho profundo / aprendizado de máquina, visto que o abandono suprime alguns neurônios do modelo?

13

Se a remoção de alguns neurônios resulta em um modelo com melhor desempenho, por que não usar uma rede neural mais simples com menos camadas e menos neurônios? Por que construir um modelo maior e mais complicado no começo e suprimir partes dele mais tarde?

user781486
fonte

Respostas:

29

A função do abandono é aumentar a robustez do modelo e também remover quaisquer dependências simples entre os neurônios.

Os neurônios são removidos apenas para uma única passagem para frente e para trás através da rede - o que significa que seus pesos são sinteticamente ajustados a zero para esse passe e, portanto, seus erros também, o que significa que os pesos não são atualizados. O abandono também funciona como uma forma de regularização , pois está penalizando o modelo por sua complexidade.

Eu recomendaria ler a seção Dropout no livro Deep Learning de Michael Nielsen (gratuito e online), que fornece uma boa intuição e também tem diagramas / explicações muito úteis. Ele explica que:

O abandono é uma técnica radicalmente diferente para regularização. Diferentemente da regularização L1 e L2, o abandono não depende da modificação da função de custo. Em vez disso, no abandono, modificamos a própria rede.

Aqui está um bom artigo de resumo . Desse artigo:

Algumas observações:

  • O abandono obriga uma rede neural a aprender recursos mais robustos que são úteis em conjunto com muitos subconjuntos aleatórios diferentes dos outros neurônios.
  • O abandono dobra aproximadamente o número de iterações necessárias para convergir. No entanto, o tempo de treinamento para cada época é menor.
  • Com H unidades ocultas, cada uma das quais pode ser descartada, temos 2 ^ H modelos possíveis. Na fase de teste, toda a rede é considerada e cada ativação é reduzida por um fator p.

Exemplo

Imagine que eu peça para você me fazer uma xícara de chá - você sempre pode usar a mão direita para derramar a água, o olho esquerdo para medir o nível da água e, em seguida, a mão direita novamente para mexer o chá com uma colher. Isso significaria que a mão esquerda e o olho direito não servem para nada. O uso de abandono, por exemplo, amarraria sua mão direita atrás das costas, forçando-o a usar sua mão esquerda. Agora, depois de me preparar 20 xícaras de chá, com um olho ou uma mão fora de ação, você fica melhor treinado para usar tudo o que está disponível. Talvez mais tarde você seja forçado a fazer chá em uma pequena cozinha, onde só é possível usar a chaleira com o braço esquerdo ... e depois de usar o abandono, você tem experiência nisso! Você se tornou mais robusto para dados invisíveis.

n1k31t4
fonte
como determinar o melhor valor de desistência para a classificação de várias classes? e como determinar o melhor número de camadas de abandono?
N.IT 17/08/19
2
@ N.IT - até onde sei, não existe um método bem definido que encontre o melhor nível de evasão ou quantas camadas - além de apenas tentar várias combinações. Como em outros métodos de regularização e exploração da arquitetura, você provavelmente obterá melhores resultados treinando um modelo e comparando as curvas de perda de treinamento / validação. Confira esta explicação sobre o tópico .
N1k31t4 17/08/19
Ótima resposta. Para ser mais concreto com relação à analogia da sua cozinha, o Dropout é usado apenas durante o treinamento, não durante a inferência. Portanto, o modelo complexo não é parcialmente utilizado.
Vaibhav Garg
Estou digitando esta resposta com meus olhos fechados. gyes mais necessidade de treinamento. nwws moew seopour.
VHanded
3

O abandono não remove realmente os neurônios, é apenas que esses neurônios em particular não desempenham nenhum papel (não são ativados) para um determinado lote de dados.

Exemplo - Suponha que exista uma estrada de 8 faixas - Quando os caminhões chegam, eles passam pelas faixas 1,2,4,6,7, quando os carros chegam, eles passam pelas faixas 2,3,4,7,8 e quando as bicicletas chegam , eles passam pelas faixas 1,2,5,8. Portanto, independentemente de qualquer veículo, todas as faixas estão lá, mas apenas algumas são usadas.

Da mesma forma, todos os neurônios são usados ​​em todo o modelo, mas apenas um subconjunto de neurônios é ativado para um lote específico de dados. E o modelo não é reduzido posteriormente, a complexidade do modelo permanece como está.

Por que usar a desistência?

Conforme apresentado no livro Deep learning de Ian Goodfellow,

o abandono é mais eficaz do que outros regularizadores computacionalmente baratos, como decaimento de peso, restrições de normas de filtro e regularização de atividades esparsas.

Ele também diz:

Uma vantagem do abandono é que ele é muito computacionalmente barato.

Outra vantagem significativa do abandono é que ele não limita significativamente o tipo de modelo ou procedimento de treinamento que pode ser usado. Funciona bem com praticamente qualquer modelo que use uma representação distribuída e possa ser treinado com descida de gradiente estocástico. Isso inclui redes neurais feedforward, modelos probabilísticos, como máquinas Boltzmann restritas (Srivastava et al., 2014) e redes neurais recorrentes (Bayer e Osendorfer, 2014; Pascanu et al., 2014a).

Este livro diz:

A idéia principal é que a introdução de ruído nos valores de saída de uma camada pode quebrar padrões de ocorrência que não são significativos, que a rede começará a memorizar se nenhum ruído estiver presente.

Ankit Seth
fonte
Eu editei a pergunta para usar a palavra suprimir e não remover. A questão permanece. Por que construir tantas faixas quando apenas algumas delas são usadas no final?
user781486
@ user781486 Para alguns deles, significa alguns deles para cada lote de dados, mas todos eles serão usados ​​se você considerar dados inteiros. Como no meu exemplo, todas as faixas de 1 a 8 são usadas se você usar um conjunto combinado de números de faixas para cada veículo.
Ankit Seth
3

Outra maneira de observar o que a evasão faz é que ela é como um slab-and-spike anterior ao coeficiente de uma covariável (que é um termo de interação complexo das covariáveis ​​originais com algumas transformações funcionais complicadas) em um modelo bayesiano. Essa é a interpretação proposta por Yarin Gal em sua tese (veja sua lista de publicações ).

Aqui está um breve argumento sobre o motivo:

  • Nesses lotes, onde um neurônio é eliminado, o coeficiente de característica / covariável (construído pela conexão na rede neural que entra no neurônio) é zero (pico em zero).
  • Nesses lotes, onde o neurônio está presente, o coeficiente é irrestrito (plano inadequado anterior = laje).
  • Na média de todos os lotes, você obtém um pico e uma laje antes.

Por que queremos um pedaço de laje e espiga antes? Induz um modelo bayesiano que calcula a média entre uma rede neutra sem esse neurônio e um com ele. previsões. Isso aborda a questão principal de redes neutras serem capazes de se ajustar demais aos dados (embora, obviamente, não seja a única maneira possível de conseguir isso).

Björn
fonte
Bom ponto. Atualizará a resposta.
Björn
2

A camada de abandono separa indiscriminadamente uma porção especificada de neurônios, diminuindo a capacidade representacional do modelo em questão. Isso evita que a rede ajuste limites de decisão não lineares complexos (ou seja, o "ruído" no conjunto de dados), impedindo (ou melhorando) o ajuste excessivo.

Pranav Vempati
fonte