Aktivaatiofunktiot: tee muunnoksesta epälineaarinen
Aktivaatiofunktio (activation function) muuttaa kerroksen numeerista vastetta. Ilman epälineaarisia operaatioita affiinisten kerrosten ketju pysyy yhtenä affiinisena muunnoksena. Aktivaatiot antavat verkolle mahdollisuuden esittää monipuolisempia riippuvuuksia ja muovaavat gradienttien kulkua koulutuksessa.
ReLU säilyttää positiiviset syötteet ja muuttaa negatiiviset nollaksi. Transformereissa tavalliset GELU ja SiLU käyttävät pehmeämpiä vasteita. Tavallisella kiinteällä skaalallaan SiLU tunnetaan myös nimellä Swish.
Portti, joka ei vain sulkeudu
SiLU kertoo syötteen sen sigmoidilla. Sigmoidikerroin on nollan ja yhden välissä, mutta SiLU:n lopullinen tulos voi olla negatiivinen. Se painottaa syötettä pehmeästi eikä tee kovaa päälle–pois-valintaa.
import numpy as np
def silu(x):
return x / (1 + np.exp(-x))
Kohtuullisen negatiiviselle syötteelle ReLU antaa nollan, kun taas SiLU säilyttää pienen negatiivisen arvon. Myös niiden derivaatat eroavat. Paikalliset erot vaikuttavat siihen, millaisia parametripäivityksiä verkko voi saada.
Aktivaatio voi ohjata toista haaraa
Portitettu eteenpäinkytketty verkko laskee kaksi projektiota. Toinen kulkee aktivaatiofunktion läpi ja kertoo toisen alkioittain. Tulos projisoidaan takaisin mallin leveyteen. SwiGLU käyttää portissaan SiLU:a.
Tämä eroaa softmaxista: softmax kytkee ehdokkaat yhteisen normalisoinnin kautta, kun taas tässä alkioittainen aktivaatio käsittelee komponentit erikseen.
Aktivaatiofunktio ei opi tehtävää yksinään. Sen rooli riippuu ympäröivistä painoista, koulutustavoitteesta ja arkkitehtuurista. Kiinnostava valinta on, miten vaste ja gradientti toimivat yhteen muun laskennan kanssa.