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?

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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.