O que as camadas totalmente conectadas fazem nas CNNs?

19

Entendo as camadas convolucionais e de pool, mas não vejo o motivo de uma camada totalmente conectada nas CNNs. Por que a camada anterior não está diretamente conectada à camada de saída?

jeff
fonte

Respostas:

31

A saída das camadas convolucionais representa recursos de alto nível nos dados. Embora essa saída possa ser achatada e conectada à camada de saída, adicionar uma camada totalmente conectada é uma maneira (geralmente) barata de aprender combinações não lineares desses recursos.

Essencialmente, as camadas convolucionais estão fornecendo um espaço de característica significativo, de baixa dimensão e de certa forma invariável, e a camada totalmente conectada está aprendendo uma função (possivelmente não linear) nesse espaço.

NOTA: É trivial converter de camadas FC para camadas Conv. A conversão dessas camadas superiores do FC em camadas Conv pode ser útil, conforme descrito nesta página.

jamesmf
fonte
Obrigado pela sua resposta James. Então, estamos aprendendo os pesos entre as camadas conectadas com propagação traseira, está correto?
jeff
Sim, o erro se propaga novamente através da camada totalmente conectada às camadas convolucionais e de pool.
Jamesmf
Está bem. Portanto, o objetivo da camada fc pode ser pensado como um PCA não linear, ele retifica os recursos "bons" e diminui os outros, aprendendo o conjunto completo de pesos.
jeff
1
Permite principalmente a combinação não linear de recursos. Todos os recursos podem ser bons (supondo que você não tenha recursos "mortos"), mas as combinações desses recursos podem ser ainda melhores.
Jamesmf 17/11
@jamesmf: O que é um recurso morto? e quais são as combinações de recursos que você está falando? o que você quer dizer com uma combinação não linear? O uso de uma camada totalmente conectada é obrigatório em um cnn? ou pode ser substituído sem nenhum efeito adverso na precisão? Agradecemos antecipadamente. Eu ficaria grato se você pudesse dar uma intuição sobre as perguntas que fiz.
Rika 17/05
4

Encontrei esta resposta de Anil-Sharma no Quora útil.

Podemos dividir toda a rede (para classificação) em duas partes:

  • Extração de recursos : nos algoritmos de classificação convencionais, como os SVMs, costumávamos extrair recursos dos dados para fazer a classificação funcionar. As camadas convolucionais estão servindo ao mesmo propósito de extração de recursos. As CNNs capturam uma melhor representação dos dados e, portanto, não precisamos fazer engenharia de recursos.

  • Classificação : Após a extração do recurso, precisamos classificar os dados em várias classes, isso pode ser feito usando uma rede neural totalmente conectada (FC). No lugar de camadas totalmente conectadas, também podemos usar um classificador convencional como o SVM. Mas geralmente acabamos adicionando camadas FC para tornar o modelo de ponta a ponta treinável.

rocksyne
fonte