Como as CNN evitam o problema do gradiente de fuga

15

Eu tenho lido muito sobre redes neurais convolutivas e queria saber como elas evitam o problema de gradiente que desaparece. Sei que redes de crenças profundas empilham codificadores automáticos de nível único ou outras redes rasas pré-treinadas e, portanto, podem evitar esse problema, mas não sei como é evitado nas CNNs.

De acordo com a Wikipedia :

"apesar do mencionado" problema de gradiente de fuga "mencionado acima, o poder superior de processamento das GPUs torna viável a propagação reversa simples para redes neurais de avanço profundo com muitas camadas".

Não entendo por que o processamento da GPU removeria esse problema?

Aly
fonte
2
O artigo da wikipedia não justificou por que a GPU ajudou a resolver o problema do gradiente de fuga? É porque, embora os gradientes sejam pequenos, como as GPUs são tão rápidas, ainda conseguimos melhorar os parâmetros executando várias etapas graças às GPUs?
Charlie Parker
2
Exatamente. O problema do gradiente de fuga é a razão pela qual os pesos inferiores da camada são atualizados em uma taxa muito pequena e, portanto, leva uma eternidade para treinar a rede. Mas, como nas GPUs, você pode fazer mais cálculos (ou seja, mais atualizações nos pesos) em menos tempo, com mais e mais processamento de GPU, o problema de gradiente de fuga desaparece um pouco até certo ponto.
Sangram
@CharlieParker, você poderia GPU's are fast correlated with vanishing gradientsentender, eu posso entender a lógica rápida com grande largura de banda de memória para processar várias multiplicações de matriz! mas você poderia explicar o que isso tem a ver com os derivativos? A questão do gradiente de fuga parece fazer mais com a inicialização do peso , não é!
anu

Respostas:

13

O problema do gradiente que desaparece exige que usemos pequenas taxas de aprendizado com descida do gradiente, que precisam de muitos pequenos passos para convergir. Este é um problema se você tiver um computador lento, que leva muito tempo para cada etapa. Se você possui uma GPU rápida que pode executar muito mais etapas em um dia, isso é menos problemático.

Existem várias maneiras de resolver o problema do gradiente de fuga. Eu diria que o maior efeito para as CNNs veio da mudança de unidades não lineares sigmóides para unidades lineares retificadas. Se você considerar uma rede neural simples cujo erro depende do peso w i j apenas por y j , em queEWEujyj

yj=f(EuWEujxEu),

seu gradiente é

WEujE=EyjyjWEuj=Eyjf(EuWEujxEu)xEu.

fff

f(você)=max(0 0,você),

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf

Lucas
fonte
2
Estou um pouco intrigado com as unidades lineares retificadas. Sim, para sigmóides, etc., o gradiente geralmente é muito pequeno - mas para unidades lineares retificadas, geralmente é exatamente zero. Isso não é pior? Assim, se os pesos de uma unidade forem infelizes, eles nunca mudarão.
Hans-Peter Störr 15/09/2015
2
Pensando nisso, as ReLUs com vazamento e / ou com ruído podem estar em uso por esse motivo.
sunside
5
Por que sua primeira frase é verdadeira? Ou seja, "o problema do gradiente de fuga requer que usemos pequenas taxas de aprendizado com descida de gradiente, que precisam de muitos pequenos passos para convergir". Por que precisamos de pequenas taxas de aprendizado para lidar com o problema do gradiente que desaparece? Se os gradientes já são pequenos devido aos gradientes que desaparecem, eu esperava que diminuí-los apenas piorasse as coisas.
Charlie Parker
2
Boa pergunta, eu deveria ter explicado melhor essa afirmação. O problema do gradiente de fuga não é que todos os gradientes sejam pequenos (que poderíamos corrigir facilmente usando grandes taxas de aprendizado), mas que os gradientes desaparecem à medida que você retropropagou pela rede. Ou seja, os gradientes são pequenos em algumas camadas, mas grandes em outras. Se você usa altas taxas de aprendizado, a coisa toda explode (porque alguns gradientes são grandes), então você precisa usar uma pequena taxa de aprendizado. O uso de múltiplas taxas de aprendizado é outra abordagem para resolver o problema, ao custo da introdução de mais hiperparâmetros.
Lucas
3
Eu argumentaria que a taxa de aprendizado está principalmente ligada ao problema do gradiente explosivo . Escalar o gradiente para baixo com uma taxa de aprendizado exageradamente baixa não impede os gradientes de desaparecimento, apenas atrasa o efeito, pois o aprendizado diminui consideravelmente. O efeito em si é causado pela aplicação repetida de não linearidades e multiplicação de pequenos valores. Obviamente, existe uma tendência a aumentar as taxas de aprendizado (devido ao poder de computação), mas isso não tem nada a ver com os gradientes que desaparecem, pois apenas controla o quão bem o espaço de estado é explorado (dadas condições estáveis).
Run