O que é a camada máxima global de pooling e qual é a sua vantagem sobre a camada maxpool?

Respostas:

69

Global max pooling = camada máxima comum de pooling com tamanho de pool igual ao tamanho da entrada (menos o tamanho do filtro + 1, para ser mais preciso). Você pode ver que MaxPooling1Dleva um pool_lengthargumento, enquanto GlobalMaxPooling1Dnão.

Por exemplo, se a entrada da camada de pool máximo for , o pool máximo global produzirá 5 , enquanto a camada de pool máximo comum com tamanho de pool será igual a 3 saídas 2 , 2 , 5 , 5 , 5 (assumindo passo = 1).0,1,2,2,5,1,252,2,5,5,5

Isso pode ser visto no código :

class GlobalMaxPooling1D(_GlobalPooling1D):
    """Global max pooling operation for temporal data.
    # Input shape
        3D tensor with shape: `(samples, steps, features)`.
    # Output shape
        2D tensor with shape: `(samples, features)`.
    """

    def call(self, x, mask=None):
        return K.max(x, axis=1)

Em alguns domínios, como processamento de linguagem natural, é comum usar o pool máximo global. Em alguns outros domínios, como a visão computacional, é comum usar um pool máximo que não é global.

Franck Dernoncourt
fonte
4
Vim aqui procurando pooling média global (GAP), mas a partir de sua simples, mas muito eficaz exemplo, eu acho que posso adivinhar o que GAP faz :)
josh
Obrigado por esta resposta muito sucinta. +1. O pequeno exemplo que você deu foi o que realmente me fez entender o que o Global Max Pooling está fazendo.
rayryeng - Reinstala Monica
13

Conforme descrito neste artigo, propusemos o pool médio global (GAP):

As redes neurais convolucionais convencionais realizam convolução nas camadas inferiores da rede. Para classificação, os mapas de características da última camada convolucional são vetorizados e alimentados em camadas totalmente conectadas, seguidas por uma camada de regressão logística softmax. Essa estrutura liga a estrutura convolucional aos classificadores de redes neurais tradicionais. Ele trata as camadas convolucionais como extratores de recursos, e o recurso resultante é classificado de maneira tradicional.

No entanto, as camadas totalmente conectadas são propensas a sobreajuste, prejudicando a capacidade de generalização de toda a rede. O abandono é proposto por Hinton et al como um regularizador que aleatoriamente define metade das ativações para as camadas totalmente conectadas como zero durante o treinamento. Ele melhorou a capacidade de generalização e evita amplamente o ajuste excessivo.

Neste artigo, propomos outra estratégia chamada pool médio global para substituir as camadas tradicionais totalmente conectadas na CNN. A idéia é gerar um mapa de recursos para cada categoria correspondente da tarefa de classificação na última camada mlpconv. Em vez de adicionar camadas totalmente conectadas sobre os mapas de recursos, calculamos a média de cada mapa de recursos e o vetor resultante é alimentado diretamente na camada softmax. Uma vantagem do pool médio global sobre as camadas totalmente conectadas é que ele é mais nativo da estrutura de convolução, impondo correspondências entre mapas de recursos e categorias. Assim, os mapas de recursos podem ser facilmente interpretados como mapas de confiança de categorias. Outra vantagem é que não há parâmetro para otimizar o pool médio global, portanto, o super ajuste é evitado nessa camada. Além disso, o agrupamento médio global resume as informações espaciais, portanto, é mais robusto às traduções espaciais da entrada. Podemos ver o pool médio global como um regularizador estrutural que aplica explicitamente os mapas de recursos como mapas de confiança de conceitos (categorias). Isso é possível pelas camadas mlpconv, pois elas fazem uma melhor aproximação aos mapas de confiança do que os GLMs.

Edit: Como sugerido por @MaxLawnboy, aqui está outro artigo sobre o mesmo tópico .

Tshilidzi Mudau
fonte
Outro artigo sobre todos os modelos da CNN arxiv.org/pdf/1412.6806v3.pdf
Maxim Mikhaylov
Obrigado @MaxLawnboy, vou editar a resposta para incluí-lo.
Tshilidzi Mudau