Beste antwoord
ReLU wordt gedefinieerd als f (x) = max (0, x). De softplus is zijn differentiële surrogaat en wordt gedefinieerd als f (x) = ln (1 + e ^ x).
Zowel de ReLU als Softplus zijn grotendeels vergelijkbaar, behalve bij 0 waar de softplus verleidelijk soepel en differentieerbaar is. Het is veel gemakkelijker en efficiënter om ReLU en zijn afgeleide te berekenen dan voor de softplus-functie die log (.) En exp (.) In zijn formulering heeft. Interessant is dat de afgeleide van de softplus-functie de logistieke functie is: f “(x) = \ frac {1} {1 + e ^ {- x}}.
Bij diep leren, het berekenen van de activeringsfunctie en de afgeleide ervan komt even vaak voor als optellen en aftrekken in rekenkunde. Door over te schakelen naar ReLU, zijn de voorwaartse en achterwaartse passages veel sneller, terwijl de niet-lineaire aard van de activeringsfunctie behouden blijft die nodig is om diepe neurale netwerken nuttig te laten zijn.
Antwoord
Het hele punt van een activeringsfunctie is om niet-lineair te zijn.
Laat me leg uit waarom. Als u een netwerk heeft met meerdere lagen (zogenaamd diep tegen een ondiep netwerk), dan kan uw model mogelijk leren om veel geavanceerdere voorbeelden te detecteren of te verwerken. Tijdens het gebruik zou uw netwerk meer onderlinge verbindingen gebruiken tussen gewichten (en hoogstwaarschijnlijk meer gewichten). Bij het uitvoeren van de berekeningen betekent veel dat het daadwerkelijk vermenigvuldigen en optellen van getallen, zoals:
y = f (W x + b).
waarbij f (\ cdot) een of andere activeringsfunctie is.
Wanneer je de lagen “trapsgewijs” maakt, wordt de uitvoer van elke laag een invoer voor de volgende. Voor 2 lagen bijvoorbeeld:
y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).
Echter, als f (\ cdot) was een lineaire functie f (x) = \ alpha x + \ beta, dan zou het hele netwerk “instorten” tot slechts één laag netwerk, simpelweg omdat het elke lineaire combinatie van lineaire functies is zelf een lineaire functie.
De bovenstaande vergelijking zou weergeven:
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 “.
Dit is net alsof je een enkellaags netwerk had met iets verschillende gewichten.
Nu introduceert ReLU non-lineariteit, wat betekent dat de bovenstaande verklaring niet langer geldt, dus de optimizer moet “harder proberen” om de weegschalen echt te trainen en alles te laten werken. Er zijn natuurlijk ook andere niet-lineaire functies (bijv. Sigmoid, tanh, etc.), maar het gaat erom dat ze niet-lineair moeten zijn.
Ten slotte is het zojuist geschreven voorbeeld gebaseerd op een eenvoudig, nauw verbonden netwerk, maar ik denk dat het zich ook uitstrekt tot andere gevallen.