Propagação de retorno através de camadas máximas de pool


13

Eu tenho uma pequena sub-pergunta a esta pergunta .

Entendo que, quando se propaga de volta através de uma camada de pool máximo, o gradiente é roteado de volta de uma maneira que o neurônio na camada anterior, que foi selecionada como max, obtém todo o gradiente. O que eu não tenho 100% de certeza é como o gradiente na próxima camada é roteado de volta para a camada de pool.

Portanto, a primeira pergunta é se eu tenho uma camada de pool conectada a uma camada totalmente conectada - como na imagem abaixo.

Exemplo 1

Ao calcular o gradiente para o "neurônio" ciano da camada de pool, somaremos todos os gradientes dos neurônios da camada FC? Se isso estiver correto, todo "neurônio" da camada de pool tem o mesmo gradiente?

Por exemplo, se o primeiro neurônio da camada FC tem um gradiente de 2, o segundo tem um gradiente de 3 e o terceiro um gradiente de 6. Quais são os gradientes dos "neurônios" azuis e roxos na camada de pool e por quê?

E a segunda pergunta é quando a camada de pool é conectada a outra camada de convolução. Como computo o gradiente então? Veja o exemplo abaixo.

exemplo2

Para o "neurônio" mais à direita da camada de pool (o verde delineado), basta pegar o gradiente do neurônio roxo na próxima camada de conv e direcioná-lo de volta, certo?

E o verde cheio? Eu preciso multiplicar a primeira coluna de neurônios na próxima camada por causa da regra da cadeia? Ou preciso adicioná-los?

Por favor, não publique um monte de equações e me diga que minha resposta está correta porque tenho tentado entender as equações e ainda não entendo perfeitamente, é por isso que estou fazendo essa pergunta de uma maneira simples. caminho.


Com relação à sua primeira pergunta, a retropropagação é ver quais pesos e entradas influenciam sua perda de que maneira. No caso do agrupamento máximo, apenas o máximo dos neurônios influencia a saída (exceto quando há um empate). Portanto, apenas propague o erro para o neurônio que teve o valor máximo de ativação.
Jan van der Vegt

Sim, eu entendo isso e também disse isso em uma recapitulação no início do meu post. Mas não entendo como "combino" o gradiente dos neurônios da próxima camada para propagar de volta. Espero que você entenda o que eu quero dizer.
Majster 21/08/16

Respostas:


5

Se isso estiver correto, todo "neurônio" da camada de pool tem o mesmo gradiente?

Não . Depende dos pesos e da função de ativação. E, geralmente, os pesos são diferentes do primeiro neurônio da camada de pool para a camada FC, da segunda camada da camada de pool para a camada FC.

Então, normalmente você terá uma situação como:

FCi=f(jWijPj)

FCiPjfW

Isso significa que o gradiente em relação a P_j é

grumad(Pj)=Eugrumad(FCEu)fWEuj

O que é diferente para j = 0 ou j = 1 porque W é diferente.

E a segunda pergunta é quando a camada de pool é conectada a outra camada de convolução. Como computo o gradiente então?

Não faz diferença a que tipo de camada está conectada. É a mesma equação o tempo todo. Soma de todos os gradientes na próxima camada multiplicada pela forma como a saída desses neurônios é afetada pelo neurônio na camada anterior. A diferença entre FC e Convolução é que, no FC, todos os neurônios da próxima camada fornecerão uma contribuição (mesmo que pequena), mas, na convolução, a maioria dos neurônios da próxima camada não é afetada pelo neurônio da camada anterior, portanto, sua contribuição é exatamente zero.

Para o "neurônio" mais à direita da camada de pool (o verde delineado), basta pegar o gradiente do neurônio roxo na próxima camada de conv e direcioná-lo de volta, certo?

Certo. Além disso, também o gradiente de quaisquer outros neurônios nessa camada de convolução que tomam como entrada o neurônio mais à direita da camada de agrupamento.

E o verde cheio? Eu preciso multiplicar a primeira coluna de neurônios na próxima camada por causa da regra da cadeia? Ou preciso adicioná-los?

Adicione-os. Por causa da regra da cadeia.

mumaxgrumad(PRj)

grumad(PRj)=Eugrumad(PEu)fWEuj

f=Eudf=0 0f=1f=0 0

grumad(PRmumaxnevocêron)=Eugrumad(PEu)WEu mumax nevocêron

grumad(PRothers)=0

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.