Modelo do Google Inception: por que existem vários softmax?

13

A topologia do modelo do Google Inception pode ser encontrada aqui: Google Inception Netowrk

Percebi que há 3 camadas de softmax neste modelo (# 154, # 152, # 145) e duas delas são algum tipo de fuga precoce desse modelo.

Pelo que sei, a camada softmax é para saída final, então por que existem tantas? qual é o objetivo de outras 2 camadas?

skywalkerytx
fonte

Respostas:

27

Resposta curta: arquiteturas profundas e especificamente o GoogLeNet (22 camadas) correm o risco de desaparecer os gradientes durante o treinamento (algoritmo de retropropagação). Os engenheiros da GoogLeNet resolveram esse problema adicionando classificadores nas camadas intermediárias, de modo que a perda final seja uma combinação da perda intermediária e da perda final. É por isso que você vê um total de três camadas de perda, diferente da camada única usual como a última camada da rede.

Resposta mais longa: No Machine Learning clássico, geralmente há uma distinção entre engenharia de recursos e classificação. As redes neurais são famosas por sua capacidade de resolver problemas "de ponta a ponta", ou seja, combinam os estágios de aprender uma representação dos dados e treinar um classificador. Portanto, você pode pensar em uma rede neural com uma arquitetura padrão (por exemplo, AlexNet) como sendo composta por uma fase de "aprendizado de representação" (as camadas até o anterior ao último) e uma fase de "classificação", que, como esperado, inclui uma função de perda.

Ao criar redes mais profundas, surge um problema cunhado como o problema dos "gradientes de fuga". Na verdade, não é específico para redes neurais; em vez de qualquer método de aprendizado baseado em gradiente. Não é tão trivial e, portanto, merece uma explicação adequada para si; veja aqui para uma boa referência. Intuitivamente, você pode pensar nos gradientes que transportam cada vez menos informações, à medida que avançamos na rede, o que é uma grande preocupação, já que ajustamos os parâmetros (pesos) da rede com base apenas nos gradientes, usando o "suporte traseiro "algoritmo.

Como os desenvolvedores do GoogLeNet lidaram com esse problema? Eles reconheceram o fato de que não são apenas os recursos das camadas finais que carregam toda a informação discriminatória: os recursos intermediários também são capazes de discriminar rótulos diferentes; e, mais importante, seus valores são mais "confiáveis", pois são extraídos de camadas anteriores nas quais o gradiente carrega mais informações. Com base nessa intuição, eles adicionaram "classificadores auxiliares" em duas camadas intermediárias. Esse é o motivo das camadas de perda de "escape antecipado" no meio da rede às quais você referenciou na sua pergunta.

A perda total é então uma combinação dessas três camadas de perda. Cito o artigo original:

Esses classificadores assumem a forma de redes convolucionais menores, colocadas sobre a saída dos módulos Inception (4a) e (4d). Durante o treinamento, sua perda é adicionada à perda total da rede com um peso de desconto (as perdas dos classificadores auxiliares são ponderadas em 0,3). No tempo de inferência, essas redes auxiliares são descartadas.

Visualmente:

insira a descrição da imagem aqui

galoosh33
fonte
11
"... camadas anteriores nas quais o gradiente carrega mais informações" - por que isso?
max
2

Além da resposta de @ galoosh33: Parece-me que os classificadores auxiliares usam os mesmos rótulos que o classificador de saída final. Fonte: slide 34 em https://pdfs.semanticscholar.org/0b99/d677883883584d9a328f6f2d54738363997a.pdf

Anteriormente, eu me perguntava se esses classificadores auxiliares usavam outro tipo de etiqueta (por exemplo, simplesmente cachorro em vez de husky siberiano).

gebbissimo
fonte