Alguém pode explicar o que é uma camada global máxima de pool e por que e quando a usamos para treinar uma rede neural. Eles têm alguma vantagem sobre a camada máxima comum de pooling?
Alguém pode explicar o que é uma camada global máxima de pool e por que e quando a usamos para treinar uma rede neural. Eles têm alguma vantagem sobre a camada máxima comum de pooling?
Respostas:
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 MaxPooling1D
leva um pool_length
argumento, enquanto GlobalMaxPooling1D
nã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).
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.
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 .