Por que complicar se o Max Pooling apenas reduzirá a imagem mesmo assim?

13

A ideia de aplicar filtros para fazer algo como identificar arestas é uma ideia bem legal.

Por exemplo, você pode tirar uma imagem de 7. Com alguns filtros, você pode acabar com imagens transformadas que enfatizam diferentes características da imagem original. O original 7:

insira a descrição da imagem aqui

pode ser experimentado pela rede como:

insira a descrição da imagem aqui

Observe como cada imagem extraiu uma borda diferente da original 7.

Tudo isso é ótimo, mas diga que a próxima camada da sua rede é uma camada de Max Pooling.

Minha pergunta é, geralmente, isso não parece um pouco exagerado? Éramos muito cuidadosos e deliberados na identificação de arestas usando filtros - agora, não nos importamos mais com isso, pois eliminamos os valores de pixel! Por favor, corrija-me se estiver errado, mas passamos de 25 X 25 para 2 X 2! Por que não ir direto ao Max Pooling, então, não acabaremos basicamente com a mesma coisa?

Como uma extensão da minha pergunta, não posso deixar de imaginar o que aconteceria se, coincidentemente, cada um dos quatro quadrados tivesse um pixel com o mesmo valor máximo. Certamente este não é um caso raro, certo? De repente, todas as suas imagens de treinamento parecem exatamente iguais.

Monica Heddneck
fonte

Respostas:

15

O pool máximo não reduz a amostra da imagem. Faz uma amostragem reduzida dos recursos (como arestas) que você acabou de extrair. O que significa que você fica mais próximo de onde estão essas bordas ou outros recursos. Freqüentemente, é exatamente isso que a rede precisa para generalização - para classificá-la, não é necessário saber que existe uma aresta vertical entre 10,5 e 10,20, mas que existe uma aresta aproximadamente vertical cerca de 1/3 da borda esquerda a cerca de 2/3 da altura da imagem.

Essas categorias mais ásperas de recursos cobrem inerentemente mais variações na imagem de entrada por um custo muito baixo, e a redução no tamanho do mapa de recursos também é um bom efeito colateral, tornando a rede mais rápida.

Para que isso funcione bem, você ainda precisa extrair recursos para começar, o que o pool máximo não faz, portanto a camada convolucional é necessária. Você deve obter uma amostra reduzida da imagem original (para 14x14) em vez de usar a primeira camada de pool máximo e ainda assim obterá uma precisão bastante razoável. A quantidade de pool a ser feita e onde adicionar essas camadas é outro problema de hiperparâmetros ao construir uma rede neural profunda.

Neil Slater
fonte
5

Não podemos ir diretamente da camada de entrada para o pool máximo por causa do convolution layerintervalo. O motivo da convolução é extrair recursos. O pool máximo baixa amostras dos recursos que foram extraídos. Se você acha que faltam recursos devido ao salto direto de uma matriz grande para uma camada de pool máximo, você pode adicionar mais camadas de convolução até ficar satisfeito com o tamanho e fazer o pool máximo para que ele não é um exagero.

O pool máximo, que é uma forma de amostragem reduzida, é usado para identificar os recursos mais importantes. Mas o pool médio e várias outras técnicas também podem ser usadas. Normalmente trabalho com texto e não imagens. Para mim, os valores normalmente não são todos iguais. Mas se eles também forem, não faria muita diferença, porque apenas escolhe o maior valor.

Uma compreensão muito boa do wiki -The intuition is that once a feature has been found, its exact location isn't as important as its rough location relative to other features. The function of the pooling layer is to progressively reduce the spatial size of the representation to reduce the amount of parameters and computation in the network, and hence to also control overfitting. It is common to periodically insert a pooling layer in-between successive conv layers in a CNN architecture. The pooling operation provides a form of translation invariance.

Hima Varsha
fonte
Você pode explicar a última frase The pooling operation provides a form of translation invariance?
HelloWorld
@StudentT Significa que a saída do pool máximo será a mesma se o recurso for detectado em qualquer lugar da imagem. Mova a coisa na imagem que está ativando o recurso e uma entrada diferente para o pool máximo será máxima, mas a saída do pool máximo deve ser a mesma.
Mrmcgreg 23/09/16
@mrmcgreg Eu acredito que isso é verdade para o pool global, e não o pool máximo. O pool máximo fornece um tipo de invariância às traduções locais na região do pool (por exemplo, 2x2). Isso permite alguma instabilidade nos recursos.
geometrikal
0

Convolução é basicamente filtrar a imagem com um filtro de pixel menor para reduzir o tamanho da imagem sem perder a relação entre pixels (parâmetros da rede). O Pooling também reduz o tamanho espacial extraindo Max, Avg ou Sum dos pixels para o tamanho do filtro, no entanto, pode perder um parâmetro importante no processo que a convolução alcança por não reduzir significativamente o tamanho.

Siddharth Parmar
fonte