Número e tamanho de camadas densas em uma CNN

10

A maioria das redes que eu já vi tem uma ou duas camadas densas antes da camada final do softmax.

  • Existe alguma maneira de escolher o número e o tamanho das camadas densas?
  • Duas camadas densas são mais representativas que uma, para o mesmo número de parâmetros?
  • O dropout deve ser aplicado antes de cada camada densa ou apenas uma vez?
geometrikal
fonte

Respostas:

14

Em primeiro lugar:

Não há como determinar uma boa topologia de rede apenas a partir do número de entradas e saídas. Depende criticamente do número de exemplos de treinamento e da complexidade da classificação que você está tentando aprender. [1]

e Yoshua Bengio propôs uma regra muito simples:

Continue adicionando camadas até que o erro de teste não melhore mais. [2]

Além disso:

Os recursos anteriores de um ConvNet contêm recursos mais genéricos (por exemplo, detectores de borda ou detectores de bolhas de cores) que devem ser úteis para muitas tarefas, mas as camadas posteriores do ConvNet se tornam progressivamente mais específicas aos detalhes das classes contidas no conjunto de dados original. [ 3]

Por exemplo, em um método para aprender detectores de recursos:

a primeira camada aprende os detectores de borda e as camadas subseqüentes aprendem recursos mais complexos, e as camadas de nível superior codificam recursos mais abstratos. [4]

Portanto, usar duas camadas densas é mais recomendável do que uma camada.

Finalmente:

O artigo original sobre Dropout fornece várias heurísticas úteis a serem consideradas ao usar o dropout na prática. Um deles é: use o dropout nas unidades de entrada (visíveis) e ocultas. A aplicação de desistência em cada camada da rede mostrou bons resultados. [5]

na CNN, geralmente, uma camada Dropout é aplicada após cada camada de pool e também após a camada Densa. Um bom tutorial está aqui [6]

Referências:

[1] https://www.cs.cmu.edu/Groups/AI/util/html/faqs/ai/neural/faq.html

[2] Bengio, Yoshua. "Recomendações práticas para o treinamento baseado em gradiente de arquiteturas profundas." Redes neurais: truques do comércio. Springer Berlin Heidelberg, 2012. 437-478.

[3] http://cs231n.github.io/transfer-learning/

[4] http://learning.eng.cam.ac.uk/pub/Public/Turner/Teaching/ml-lecture-3-slides.pdf

[5] https://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

[6] https://cambridgespark.com/content/tutorials/convolutional-neural-networks-with-keras/index.html

moh
fonte