Care sunt avantajele utilizării ReLU peste softplus ca funcții de activare?


Cel mai bun răspuns

ReLU este definit ca f (x) = max (0, x). Softplus este surogatul său diferențial și este definit ca f (x) = ln (1 + e ^ x).

Atât ReLU, cât și Softplus sunt în mare parte similare, cu excepția aproape de 0, unde softplus este atrăgător de neted și diferențiat. Este mult mai ușor și eficient să calculați ReLU și derivatul său decât pentru funcția softplus care are log (.) Și exp (.) În formularea sa. Interesant este că derivata funcției softplus este funcția logistică: f „(x) = \ frac {1} {1 + e ^ {- x}}.

În învățarea profundă, calculând funcția de activare iar derivatul său este la fel de frecvent ca adunarea și scăderea în aritmetică. Prin trecerea la ReLU, trecerile înainte și înapoi sunt mult mai rapide, păstrând în același timp natura neliniară a funcției de activare necesare pentru ca rețelele neuronale profunde să fie utile.

Răspuns

Punctul întreg al unei funcții de activare trebuie să fie neliniar.

Permiteți-mi explicați de ce. Dacă aveți o rețea de mai multe straturi (așa-numita „adânc” față de o rețea „superficială”), atunci modelul dvs. ar putea învăța să detecteze sau să gestioneze exemple mult mai sofisticate. între greutăți (și, cel mai probabil, mai multe greutăți). Când faceți calculele, multe din acestea înseamnă de fapt să înmulțiți și să adăugați numere împreună, cum ar fi:

y = f (W x + b).

cu f (\ cdot) fiind o funcție de activare.

Când „cascade” straturile, ieșirea fiecărui strat devine o intrare la următoarea. De exemplu, pentru 2 straturi:

y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).

Cu toate acestea, dacă f (\ cdot) a fost o funcție liniară f (x) = \ alpha x + \ beta, atunci întreaga rețea ar „prăbuși” doar o rețea cu un singur strat, pur și simplu pentru că combinația liniară de funcții liniare este o funcție liniară în sine.

Ecuația de mai sus ar reda:

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 „.

Este ca și cum ai avea o rețea cu un singur strat cu greutăți ușor diferite.

Acum, ReLU introduce non-liniaritatea, ceea ce înseamnă că declarația de mai sus nu mai este valabilă, deci optimizatorul trebuie să „încerce mai mult” pentru a antrena cu adevărat cântăririle și pentru a face totul să funcționeze. Există, desigur, și alte funcții neliniare (de exemplu, sigmoid, tanh etc.), dar tot ceea ce înseamnă este că trebuie să fie neliniare.

În sfârșit, exemplul recent scris se bazează pe o rețea simplă dens conectată, dar cred că se extinde și la alte cazuri.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *