Liczba i rozmiar gęstych warstw w CNN


11

Większość sieci, które widziałem, ma jedną lub dwie gęste warstwy przed ostatnią warstwą softmax.

  • Czy istnieje jakiś zasadny sposób wyboru liczby i wielkości gęstych warstw?
  • Czy dwie gęste warstwy są bardziej reprezentatywne niż jedna dla tej samej liczby parametrów?
  • Czy należy stosować usuwanie przed każdą gęstą warstwą, czy tylko raz?

Odpowiedzi:


15

Po pierwsze:

Nie ma sposobu, aby określić dobrą topologię sieci tylko na podstawie liczby wejść i wyjść. Zależy to krytycznie od liczby przykładów szkolenia i złożoności klasyfikacji, której próbujesz się nauczyć. [1]

a Yoshua Bengio zaproponował bardzo prostą zasadę:

Po prostu dodawaj kolejne warstwy, aż błąd testu przestanie się poprawiać. [2]

Co więcej:

Wcześniejsze funkcje ConvNet zawierają bardziej ogólne funkcje (np. Detektory krawędzi lub detektory kropelek koloru), które powinny być przydatne do wielu zadań, ale późniejsze warstwy ConvNet stają się stopniowo bardziej szczegółowe dla szczegółów klas zawartych w oryginalnym zbiorze danych. [ 3]

Na przykład w metodzie uczenia detektorów funkcji:

pierwsza warstwa uczy się detektorów krawędzi, a kolejne warstwy uczą się bardziej złożonych funkcji, a warstwy wyższego poziomu kodują więcej funkcji abstrakcyjnych. [4]

Zatem użycie dwóch gęstych warstw jest bardziej zalecane niż jedna warstwa.

Wreszcie:

Oryginalny artykuł na temat Dropout zawiera szereg użytecznych heurystyk, które należy wziąć pod uwagę przy stosowaniu Dropout w praktyce. Jednym z nich jest: Użyj dropouta na przychodzących (widocznych) oraz ukrytych jednostkach. Zastosowanie przerwania na każdej warstwie sieci wykazało dobre wyniki. [5]

w CNN zwykle warstwa usuwana jest nakładana po każdej warstwie pulowania, a także po warstwie gęstej. Dobry tutorial jest tutaj [6]

Bibliografia:

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

[2] Bengio, Joshua. „Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur”. Sieci neuronowe: sztuczki handlu. 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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.