[Esta questão também foi colocada no estouro de pilha]
A questão em suma
Estou estudando redes neurais convolucionais e acredito que essas redes não tratam todos os neurônios de entrada (pixel / parâmetro) de maneira equivalente. Imagine que temos uma rede profunda (muitas camadas) que aplica convolução em alguma imagem de entrada. Os neurônios no "meio" da imagem têm muitas vias únicas para muitos neurônios da camada mais profunda, o que significa que uma pequena variação nos neurônios do meio tem um forte efeito sobre a saída. No entanto, os neurônios na borda da imagem têm apenas caminho (ou, dependendo da implementação exata, da ordem de ) caminhos pelos quais suas informações fluem através do gráfico. Parece que estes estão "sub-representados".
Estou preocupado com isso, pois essa discriminação de neurônios de borda aumenta exponencialmente com a profundidade (número de camadas) da rede. Mesmo a adição de uma camada de pool máximo não interromperá o aumento exponencial, apenas uma conexão completa coloca todos os neurônios em pé de igualdade. Não estou convencido de que meu raciocínio esteja correto, portanto, minhas perguntas são:
- Estou certo de que esse efeito ocorre em redes convolucionais profundas?
- Existe alguma teoria sobre isso, alguma vez foi mencionada na literatura?
- Existem maneiras de superar esse efeito?
Como não tenho certeza se isso fornece informações suficientes, vou elaborar um pouco mais sobre a declaração do problema e por que acredito que isso é uma preocupação.
Explicação mais detalhada
Imagine que temos uma rede neural profunda que captura uma imagem como entrada. Suponha que aplicamos um filtro convolucional de pixels sobre a imagem, onde alteramos a janela de convolução em pixels por vez. Isso significa que todo neurônio na entrada envia sua ativação para neurônios na camada . Cada um desses neurônios pode enviar sua ativação para outros , de modo que nosso neurônio superior esteja representado em neurônios de saída, e assim por diante.
No entanto, isso não é verdade para os neurônios nas bordas: eles podem ser representados em apenas um pequeno número de janelas de convolução, fazendo com que eles ativem (da ordem de) apenas neurônio na próxima camada. Usar truques como espelhar ao longo das bordas não ajudará: os neurônios da segunda camada que serão projetados ainda estão nas bordas, o que significa que os neurônios da segunda camada ficarão sub-representados (limitando assim a importância de nossos neurônios de borda também). Como pode ser visto, essa discrepância escala exponencialmente com o número de camadas.
Eu criei uma imagem para visualizar o problema, que pode ser encontrada aqui (não tenho permissão para incluir imagens no próprio post). Esta rede possui uma janela de convolução de tamanho . Os números próximos aos neurônios indicam o número de caminhos até o neurônio mais profundo. A imagem lembra o Triângulo de Pascal .
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
Por que isso é um problema?
Esse efeito não parece ser um problema à primeira vista: em princípio, os pesos devem se ajustar automaticamente de forma que a rede faça seu trabalho. Além disso, as bordas de uma imagem não são tão importantes assim no reconhecimento de imagem. Esse efeito pode não ser perceptível nos testes diários de reconhecimento de imagem, mas ainda me preocupa por dois motivos: 1. generalização para outros aplicativos e 2. problemas que surgem no caso de redes muito profundas.
1. Pode haver outras aplicações, como reconhecimento de fala ou som, em que não é verdade que os neurônios mais centrais são os mais importantes. A aplicação da convolução geralmente é feita neste campo, mas não consegui encontrar nenhum documento que mencione o efeito com o qual estou preocupado.
2. Redes muito profundas notarão um efeito exponencialmente ruim da discriminação de neurônios de fronteira, o que significa que os neurônios centrais podem ser super-representados por ordem de magnitude múltipla (imagine que temos camadas, de forma que o exemplo acima daria maneiras os neurônios centrais podem projetar suas informações). À medida que se aumenta o número de camadas, é possível atingir um limite em que os pesos não podem compensar esse efeito de maneira viável.265 10
Agora imagine que perturbamos todos os neurônios em uma pequena quantidade. Os neurônios centrais farão com que a saída mude mais fortemente em várias ordens de magnitude, em comparação com os neurônios da borda. Acredito que para aplicações gerais e para redes muito profundas, devem ser encontradas formas de contornar o meu problema?