Dropout

Čo je dropout?

Dropout je regularizačná technika používaná pri trénovaní neurónových sietí, ktorá pomáha predchádzať pretrénovaniu (overfitting). Počas trénovania náhodne deaktivuje určité percento neurónov v sieti, čím núti model učiť sa robustnejšie reprezentácie dát. Táto metóda patrí medzi najpoužívanejšie regularizačné techniky v oblasti hlbokého učenia.

Ako dropout funguje pri trénovaní

Dropout je technika, ktorá počas učenia zámerne „náhodne oslabuje“ sieť, aby bola odolnejšia a menej náchylná na preučenie.

Počas tréningu má každý neurón v určitej vrstve nastavenú pravdepodobnosť (často 20–50%), že sa v danom kroku dočasne vypne. To znamená, že v tomto kroku nepošle svoj výstup ďalej a nedostane ani spätný signál pri výpočte chyby. Sieť tak v každej iterácii funguje trochu inak – akoby sa trénovalo veľa podobných, ale mierne odlišných modelov naraz. Vďaka tomu sa model nenaučí spoliehať na úzku skupinu neurónov, ale rozloží „zodpovednosť“ za naučené vzory medzi viac prvkov.

Pri testovaní alebo nasadení do produkcie sa dropout nepoužíva: všetky neuróny sú zapnuté, len ich výstupy sa vhodne škálujú (napr. násobením pravdepodobnosťou ponechania), aby boli numericky porovnateľné s tým, na čo sa sieť učila počas tréningu.

Prečo dropout zabraňuje pretrénovaniu

Pretrénovanie nastáva, keď sa neurónová sieť príliš prispôsobí tréningovým dátam a nedokáže dobre generalizovať na nové, nevidené dáta. Dropout tento problém rieši niekoľkými mechanizmami. Predovšetkým bráni vzniku silných závislostí medzi neurónmi – jednotlivé neuróny sa nemôžu spoliehať na to, že ich „susedia“ budú vždy prítomní.

Dropout sa dá chápať aj ako nepriamy spôsob, ako trénovať viac modelov naraz a potom ich „spriemerovať“ do jedného. Pri každej tréningovej iterácii je aktívna iná podmnožina neurónov, takže sieť sa pozerá na problém z viacerých mierne odlišných perspektív. Tento efekt pôsobí podobne ako ensemble metódy – výsledný model je robustnejší a menej kolíše vo svojich predikciách.

Vieš, že
Vieš, že…

…dropout predstavili Geoffrey Hinton a jeho kolegovia v roku 2012 a stal sa štandardnou súčasťou moderných neurónových sietí?

Praktické nastavenie dropout

Dropout sa v praxi nastavuje cez „pravdepodobnosť, že neurón vypneme“ v danom kroku učenia.

V skrytých vrstvách sa často používajú hodnoty približne 0,2 – 0,5, zatiaľ čo pri vstupnej vrstve býva dropout zvyčajne nižší (okolo 0,1 – 0,2), aby sa príliš neničili informácie z dát. Ak je miera dropout príliš vysoká, model sa učí príliš ťažko a môže zostať podtrénovaný – nedokáže zachytiť komplexnejšie vzory.

Najčastejšie sa dropout používa na plne prepojené (dense) vrstvy. Pri konvolučných sieťach existujú prispôsobené varianty, napríklad spatial dropout, ktorý vypína celé mapy príznakov namiesto jednotlivých neurónov. Konkrétna voľba hodnoty závisí od typu architektúry, veľkosti a kvality dát aj náročnosti úlohy, preto sa v praxi často dolaďuje experimentovaním.

Obmedzenia a alternatívy

Dropout zvyčajne predlžuje čas trénovania, pretože sieť sa učí v „zoslabenej“ konfigurácii a často potrebuje viac krokov, kým dosiahne stabilný výkon. Pri niektorých typoch architektúr, najmä pri rekurentných sieťach, je jeho použitie technicky náročnejšie a nie vždy prináša očakávaný efekt. V praxi sa preto dropout kombinuje alebo nahrádza inými regularizačnými technikami – napríklad L1/L2 penalizáciou váh, normalizáciou priebežných hodnôt vo vrstvách či rozširovaním tréningových dát (data augmentation) – aby sa dosiahla lepšia generalizácia modelu.

Zdroje a odkazy

Použité zdroje:

  • Hinton et al. (2012) – Improving neural networks by preventing co-adaptation of feature detectors: https://arxiv.org/abs/1207.0580
  • Srivastava et al. (2014) – Dropout: A Simple Way to Prevent Neural Networks from Overfitting: https://jmlr.org/papers/v15/srivastava14a.html

Odporúčané zdroje:

  • TensorFlow Documentation – Dropout layer implementation: https://tensorflow.org
  • PyTorch Documentation – Dropout modules: https://pytorch.org

Uvedené informácie sú orientačné a môžu sa líšiť v závislosti od verzie, implementácie a prostredia.