Dropout: opeta verkko toimimaan puuttuvilla aktivaatioilla
Dropout poistaa aktivaatioita satunnaisesti koulutuksen aikana. Verkko ei voi luottaa täsmälleen samojen aktivaatioiden läsnäoloon joka askeleella, mikä voi vähentää ylisovittamista.
Tavallisessa käänteisen dropoutin käytännössä säilyvät aktivaatiot jaetaan säilymistodennäköisyydellä. Niiden odotusarvo säilyy, mutta yksittäisen otoksen summa ei välttämättä säily.
Maski muuttuu koulutuskierrosten välillä
NumPy-toteutus näyttää operaation. Sama syöte saa kahdella ajokerralla eri maskit.
import numpy as np
rng = np.random.default_rng(7)
def dropout(hidden, rate):
keep = rng.random(hidden.shape) >= rate
return hidden * keep / (1 - rate)
hidden = np.ones((4, 8))
first = dropout(hidden, 0.25)
second = dropout(hidden, 0.25)
Tavallisessa ajossa dropout poistetaan käytöstä ja aktivaatio kulkee muuttumatta läpi. Kirjaston koulutus- tai arviointitila vaikuttaa siksi toimintaan, vaikka painot ovat samat.
Dropout ei vähennä tallennettujen parametrien määrää eikä tarkoita verkon pysyvää karsimista. Poistotodennäköisyys on koulutusvalinta: liian suuri arvo voi estää hyödyllisten piirteiden oppimisen. Sopiva arvo riippuu mallista, aineistosta ja muusta regularisoinnista.