Bedste svar
ReLU defineres som f (x) = max (0, x). Softplus er dets differentierede surrogat og er defineret som f (x) = ln (1 + e ^ x).
Både ReLU og Softplus er stort set ens, undtagen nær 0, hvor softplus er lokkende glat og differentierbar. Det er meget lettere og effektivt at beregne ReLU og dets afledte end for softplus-funktionen, der har log (.) Og exp (.) I sin formulering. Interessant nok er afledningen af softplus-funktionen den logistiske funktion: f “(x) = \ frac {1} {1 + e ^ {- x}}.
I dyb læring beregnes aktiveringsfunktionen og dets afledte er lige så hyppig som addition og subtraktion i aritmetik. Ved at skifte til ReLU er de fremadgående og bagudgående passeringer meget hurtigere, samtidig med at den ikke-lineære natur af aktiveringsfunktionen er nødvendig for at dybe neurale netværk skal være nyttige.
Svar
Hele pointen for en aktiveringsfunktion er at være ikke-lineær.
Lad mig forklar hvorfor. Hvis du har et netværk af flere lag (såkaldt “dybt” mod et “lavvandet” netværk), kan din model potentielt lære at registrere eller håndtere meget mere sofistikerede eksempler. Når du opererer, bruger dit netværk flere sammenkoblinger mellem vægte (og sandsynligvis flere vægte). Når man foretager beregningerne, betyder meget af det faktisk at multiplicere og tilføje tal sammen som:
y = f (W x + b).
hvor f (\ cdot) er en eller anden aktiveringsfunktion.
Når du “kaskaderer” lagene, bliver output fra hvert lag et input til det næste. For f.eks. 2 lag:
y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).
Hvis f (\ cdot) var en lineær funktion f (x) = \ alpha x + \ beta så ville hele netværket “kollapse” til bare et-lags netværk, simpelthen fordi det ethvert lineær kombination af lineære funktioner er en lineær funktion i sig selv.
Ligningen ovenfor ville gengive:
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 “.
Dette er ligesom hvis du havde et enkeltlagsnetværk med lidt forskellige vægte.
Nu introducerer ReLU ikke-linearitet, hvilket betyder, at ovenstående udsagn ikke længere holder, så optimizer er nødt til at “prøve hårdere” for virkelig at træne vejene og få det hele til at fungere. Der er selvfølgelig også andre ikke-lineære funktioner (f.eks. Sigmoid, tanh osv.), Men hele pointen er, at de skal være ikke-lineære.
Endelig er eksemplet, der netop er skrevet, baseret på et simpelt tæt forbundet netværk, men jeg antager, at det også gælder for andre tilfælde.