Legjobb válasz
Az ReLU-t f (x) = max (0, x) -ként definiáljuk. A softplus a differenciális helyettesítője, és f (x) = ln (1 + e ^ x).
A ReLU és a Softplus is nagyrészt hasonló, kivéve a 0 közelében, ahol a softplus csábítóan sima és differenciálható. Sokkal könnyebb és hatékonyabb kiszámítani a ReLU-t és annak származékát, mint a softplus függvény esetében, amelynek megfogalmazásában log (.) És exp (.) Szerepel. Érdekes módon a softplus függvény deriváltja a logisztikai függvény: f “(x) = \ frac {1} {1 + e ^ {- x}}.
A mély tanulásban az aktiválási függvény kiszámítása származéka pedig ugyanolyan gyakori, mint az összeadás és a kivonás az aritmetikában. A ReLU-ra való áttéréssel az előre- és a visszalépés sokkal gyorsabb, miközben megtartja a mély neurális hálózatokhoz szükséges aktiválási funkció nemlineáris jellegét.
Válasz
Az aktiválási függvény lényege, hogy nemlineáris legyen.
Engedje meg magyarázza el, miért. Ha több rétegű hálózata van (úgynevezett „mély” egy „sekély” hálózattal szemben), akkor a modellje megtanulhatja sokkal kifinomultabb példák felismerését vagy kezelését. Működés közben a hálózata több összekapcsolást használna súlyok (és valószínűleg nagyobb súlyok) között. A számítások során sok minden azt jelenti, hogy ténylegesen megszorozzuk és összeadjuk a számokat, például:
y = f (W x + b).
ahol az f (\ cdot) valamilyen aktiválási függvény.
Amikor „kaszkádba helyezi” a rétegeket, akkor az egyes rétegek kimenete a következő bemenetévé válik. Például 2 réteg esetén:
y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).
Ha azonban f (\ cdot) egy lineáris függvény volt f (x) = \ alpha x + \ beta, akkor az egész hálózat „összeesik” csak egyrétegű hálózatra, egyszerűen azért, mert bármilyen A lineáris függvények lineáris kombinációja maga a lineáris függvény.
A fenti egyenlet a következőket jeleníti meg:
x\_2 = \ alpha (W\_2 (\ alpha (W\_1 x\_0 + b\_1) + \ beta) + b\_2) + \ beta = \ alpha ^ 2 W\_1 W\_2 x\_0 + \ alpha ^ 2 W\_1 W\_2 b\_1 + \ alpha ^ 2 W\_2 \ beta + \ alpha W\_2 b\_1 + \ beta = \ alpha “x\_0 + \ beta “.
Ez olyan, mintha egyrétegű hálózatod lenne, kissé eltérő súlyokkal.
Most a ReLU bevezeti a nem-linearitást, ami azt jelenti, hogy a fenti utasítás már nem érvényes, így az optimalizálónak „többet kell próbálnia”, hogy valóban betanítsa a súlyokat és mindezt működőképessé tegye. Természetesen léteznek más nemlineáris függvények is (pl. Sigmoid, tanh stb.), De az a lényeg, hogy legyenek nem lineárisak.
Végül az imént írt példa egy egyszerű, sűrűn összekapcsolt hálózaton alapszik, de gondolom más esetekre is kiterjed.