Importância da normalização da resposta local na CNN

41

Descobri que o Imagenet e outras CNNs grandes usam camadas de normalização de resposta local. No entanto, não consigo encontrar tanta informação sobre eles. Quão importantes são e quando devem ser usados?

Em http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers :

"A camada de normalização de resposta local executa um tipo de" inibição lateral "normalizando sobre as regiões de entrada locais. No modo ACROSS_CHANNELS, as regiões locais se estendem por canais próximos, mas não têm extensão espacial (ou seja, têm formato local_size x 1 x 1) No modo WITHIN_CHANNEL, as regiões locais se estendem espacialmente, mas estão em canais separados (ou seja, têm a forma 1 x tamanho_ local x tamanho_s local). Cada valor de entrada é dividido por (1+ (α / n) ∑ix2i) β, onde n é o tamanho de cada região local e a soma é calculada sobre a região centralizada nesse valor (o preenchimento zero é adicionado quando necessário). "

Editar:

Parece que esses tipos de camadas têm um impacto mínimo e não são mais usados. Basicamente, seu papel foi superado por outras técnicas de regularização (como abandono e normalização de lotes), melhores inicializações e métodos de treinamento. Veja minha resposta abaixo para mais detalhes.

pir
fonte

Respostas:

20

Parece que esses tipos de camadas têm um impacto mínimo e não são mais usados. Basicamente, seu papel foi superado por outras técnicas de regularização (como abandono e normalização de lotes), melhores inicializações e métodos de treinamento. É o que está escrito nas notas de aula do Curso Stanford CS321n sobre ConvNets:

Camada de normalização

Muitos tipos de camadas de normalização foram propostos para uso em arquiteturas ConvNet, às vezes com a intenção de implementar esquemas de inibição observados no cérebro biológico. No entanto, essas camadas caíram recentemente em desuso porque, na prática, sua contribuição demonstrou ser mínima, se houver. Para vários tipos de normalizações, consulte a discussão na API da biblioteca cuda-convnet de Alex Krizhevsky.

pir
fonte
20

De fato, parece não haver uma boa explicação em um único local. O melhor é ler os artigos de onde vem:

O artigo original da AlexNet explica um pouco na Seção 3.3:

  • Krizhevsky, Sutskever e Hinton, Classificação ImageNet com redes neurais convolucionais profundas, NIPS 2012. pdf

A maneira exata de fazer isso foi proposta em (mas não muita informação extra aqui):

  • Kevin Jarrett, Koray Kavukcuoglu, Marc'Aurelio Ranzato e Yann LeCun, Qual é a melhor arquitetura de vários estágios para reconhecimento de objetos ?, ICCV 2009. pdf

Foi inspirado pela neurociência computacional:

  • S. Lyu e E. Simoncelli. Representação de imagem não linear usando normalização divisiva. CVPR 2008. pdf . Este artigo vai mais fundo na matemática e está de acordo com a resposta de seanv507.
  • [24] N. Pinto, DD Cox e JJ DiCarlo. Por que o reconhecimento de objetos de vídeo do mundo real é difícil? PLoS Biologia Computacional, 2008.
Jasper Uijlings
fonte
15

XXTX

A solução ideal seria esfera / embranquecer as entradas de cada neurônio, porém isso é computacionalmente muito caro. A LCN pode ser justificada como um clareamento aproximado, com base na suposição de um alto grau de correlação entre pixels (ou canais) vizinhos. Portanto, eu diria que o benefício é que a superfície de erro é mais benigna para o SGD ... Uma única taxa de aprendizado funciona bem através das dimensões de entrada (de cada neurônio)

seanv507
fonte
2
Normalização de lotes: acelerando o treinamento em rede profunda, reduzindo a mudança de Covariável Interna Sergey Ioffe, Christian Szegedy, arxiv.org/abs/1502.03167 faz um redimensionamento (cuidadosamente projetado) das entradas de neurônios e alcança acelerações substanciais ao poder usar taxas de aprendizado maiores.
precisa saber é
Você pode editar essas informações em sua resposta usando o botão editar abaixo do texto da resposta.
Reintegrar Monica
10

Com esta resposta, gostaria de resumir as contribuições de outros autores e fornecer uma explicação única da técnica LRN (ou normalização contrastiva) para aqueles que querem apenas conhecer o que é e como funciona.

Motivação: ' Esse tipo de normalização de resposta (LRN) implementa uma forma de inibição lateral inspirada no tipo encontrado em neurônios reais, criando competição por grandes atividades entre as saídas de neurônios computadas usando diferentes núcleos. « AlexNet 3.3

Em outras palavras, o LRN permite diminuir respostas uniformemente grandes para a vizinhança e tornar a ativação grande mais pronunciada dentro de uma vizinhança, ou seja, criar maior contraste no mapa de ativação. prateekvjoshi.com afirma que é particularmente útil com funções de ativação ilimitadas como RELU.

Fórmula original: para cada posição específica (x, y) e kernel i que corresponde a uma única saída de 'pixel', aplicamos um 'filtro', que incorpora informações sobre as saídas de outros n núcleos aplicados na mesma posição. Essa regularização é aplicada antes da função de ativação. Essa regularização, de fato, depende da ordem dos núcleos, que é, que eu saiba, apenas uma infeliz coincidência.

LRN

Na prática (veja Caffe ), 2 abordagens podem ser usadas:

  1. WITHIN_CHANNEL. Normalize a vizinhança local de um único canal (correspondente a um único filtro convolucional). Em outras palavras, divida a resposta de um único canal de um único pixel de acordo com os valores de saída do mesmo neurônio para os pixels próximos.
  2. ACROSS_CHANNELS. Para um único pixel, normalize os valores de cada canal de acordo com os valores de todos os canais para o mesmo pixel

Uso real O LRN foi usado com mais frequência nos primeiros dias de convets como o LeNet-5. A implementação atual do GoogLeNet (Inception) no Caffe geralmente usa o LRN em conexão com as técnicas de pool, mas parece ser feita apenas para tê-lo. Nem o Inception / GoogLeNet original ( aqui ) nem nenhuma das versões a seguir mencionam o LRN de forma alguma. Além disso, a implementação do TensorFlow das redes de Iniciação (fornecidas e atualizadas pela equipe dos autores originais) não usa o LRN, apesar de estar disponível.

Conclusão A aplicação do LRN junto com a camada de pool não prejudicaria o desempenho da rede, desde que os valores de hiperparâmetros sejam razoáveis. Apesar disso, não conheço nenhuma justificativa recente para aplicar a normalização LRN / contraste em uma rede neural.

y.selivonchyk
fonte
Eu também acrescentaria que o LRN é um tipo de "normalização competitiva", de acordo com a página 374 em Géron, Aurélien. Aprendizado de máquina prático com o Scikit-Learn e o TensorFlow: conceitos, ferramentas e técnicas para construir sistemas inteligentes. "O'Reilly Media, Inc.", 2017 . (Menciono isso porque Hinton única chama de "normalização competitiva" na palestra redes Convolucionais para reconhecimento de objetos em seu curso Coursera.
Oren Milman
7

O tipo de camada Normalização de Resposta Local (LRN) se mostra útil ao usar neurônios com ativações ilimitadas (por exemplo, neurônios lineares retificados), porque permite a detecção de recursos de alta frequência com uma grande resposta neuronal, enquanto amortece respostas uniformemente grandes em um bairro local. É um tipo de regularizador que incentiva a "competição" por grandes atividades entre grupos próximos de neurônios.

src- https://code.google.com/p/cuda-convnet/wiki/LayerParams#Local_response_normalization_layer_(same_map)

vivkul
fonte
0

i

xi=xi(k+(αjxj2))β

k,α,βRκ=0α=1β=12

No entanto, existe uma técnica muito mais nova chamada "normalização em lote" (consulte o documento ), que funciona de maneira bastante semelhante e sugere não usar mais o LRN. A normalização de lote também funciona em termos de pixel:

y=xμσ2+ϵγ+β

μσ2ε>0γ,βR

Portanto, a resposta é: a normalização da resposta local não é mais importante, porque temos algo que funciona melhor e substitui o LRN: normalização em lote.

Veja também

Martin Thoma
fonte
Eu acho que isso não está correto. O LRN é aplicado na saída do kernel, não na entrada (embora o Alexnet use a normalização de entrada, mas isso é separado).
Shital Shah