Estou curioso para saber como os gradientes são propagados novamente através de uma rede neural usando módulos ResNet / pular conexões. Eu já vi algumas perguntas sobre o ResNet (por exemplo, rede neural com conexões de camada de salto ), mas esta pergunta especificamente sobre a propagação de retorno de gradientes durante o treinamento.
A arquitetura básica está aqui:
Li este artigo, Estudo de redes residuais para reconhecimento de imagens , e na Seção 2 eles falam sobre como um dos objetivos do ResNet é permitir um caminho mais curto / claro para o gradiente se propagar novamente para a camada base.
Alguém pode explicar como o gradiente está fluindo através desse tipo de rede? Não entendo bem como a operação de adição e a falta de uma camada parametrizada após a adição permitem uma melhor propagação do gradiente. Tem algo a ver com a forma como o gradiente não muda ao fluir através de um operador add e é de alguma forma redistribuído sem multiplicação?
Além disso, eu posso entender como o problema do gradiente de fuga é aliviado se o gradiente não precisar fluir através das camadas de peso, mas se não houver fluxo de gradiente nos pesos, como eles serão atualizados após a passagem para trás?
the gradient doesn't need to flow through the weight layers
, você poderia explicar isso?Respostas:
Adicionar envia o gradiente de volta igualmente para ambas as entradas. Você pode se convencer disso executando o seguinte no tensorflow:
Saída:
Portanto, o gradiente será:
Edit: existe uma pergunta: "qual é a operação no ponto em que a conexão da rodovia e o bloco da rede neural se unem novamente, na parte inferior da Figura 2?"
A resposta é: eles são somados. Você pode ver isso na fórmula da Figura 2:
O que isso diz é que:
Edição 2:
Reescrevendo com palavras ligeiramente diferentes:
Os blocos residuais modificam os gradientes que fluem para trás, mas não há funções de 'esmagamento' ou 'ativação' pelas quais os gradientes fluem. As funções 'squashing' / 'activation' são o que causa o problema do gradiente de explosão / desaparecimento; portanto, removendo-as do próprio barramento, mitigamos esse problema consideravelmente.
Editar 3: Pessoalmente, imagino uma ressnet na minha cabeça como o diagrama a seguir. É topologicamente idêntico à figura 2, mas mostra com mais clareza, talvez, como o barramento flui direto através da rede, enquanto os blocos residuais apenas clicam nos valores e adicionam / removem algum pequeno vetor no barramento:
fonte