Questo è il motivo per cui è probabilmente un'idea migliore usare PReLU, ELU o altre attivazioni simili a ReLU che non si estinguono solo a 0, ma che cadono a qualcosa come 0.1 * x quando x diventa negativo per continuare ad imparare. Per molto tempo mi è sembrato che le ReLU siano una storia come il sigmoide, anche se per qualche ragione la gente pubblica ancora articoli con queste. Perché? Non lo so.
Dmytro Mishkin e altri ragazzi hanno effettivamente testato una rete con molti diversi tipi di attivazione, dovresti esaminare i loro risultati sulle prestazioni delle diverse funzioni di attivazione e altre cose. Alcune funzioni, come XOR, tuttavia, vengono apprese meglio con ReLU semplice. Non pensare a nessun materiale neurale in termini di dogma, perché le reti neurali sono molto in fase di sviluppo. Nessuno al mondo in realtà li conosce e li capisce abbastanza bene da dire la verità divina. Nessuno. Prova le cose, fai le tue scoperte. Ricorda che l'utilizzo di ReLU stesso è uno sviluppo molto recente e per decenni tutti i diversi dottorandi del settore hanno utilizzato funzioni di attivazione troppo complicate di cui ora possiamo solo ridere. Troppo spesso "conoscere" troppo può ottenere risultati negativi. È importante capire che le reti neurali non sono una scienza esatta. Nulla in matematica dice che le reti neurali funzioneranno davvero bene come loro. È euristico. E quindi è molto malleabile.
FYI anche l'attivazione a valore assoluto ottiene buoni risultati su alcuni problemi, ad esempio problemi di tipo XOR. Diverse funzioni di attivazione sono più adatte a scopi diversi. Ho provato Cifar-10 con abs () e sembrava funzionare peggio. Tuttavia, non posso dire che "è una funzione di attivazione peggiore per il riconoscimento visivo", perché non sono sicuro, ad esempio, se la mia pre-inizializzazione fosse ottimale, ecc. Il fatto stesso che imparasse relativamente bene mi ha stupito.
Inoltre, nella vita reale, i "derivati" che passi al backprop non devono necessariamente corrispondere ai derivati matematici effettivi.
Vorrei anche dire che dovremmo vietare di chiamarli "derivati" e iniziare a chiamarli qualcos'altro, ad esempio, error activation functions
non chiudere le nostre menti alle possibilità di armeggiare con loro. In realtà è possibile, ad esempio, utilizzare l'attivazione ReLU, ma fornire 0,1 o qualcosa del genere invece di 0 come derivata per x <0. In un certo senso, hai quindi una semplice ReLU, ma con i neuroni che non sono in grado di "morire di adattabilità". Io lo chiamo NecroRelu, perché è una ReLU che non può morire. E in alcuni casi (sicuramente non nella maggior parte dei casi, però) funziona meglio del semplice LeakyReLU, che in realtà ha 0,1 derivate x x 0 e migliore del solito ReLU. Non penso che troppi altri abbiano studiato tale funzione, sebbene questa o qualcosa di simile possa in realtà essere una funzione di attivazione generalmente interessante che nessuno ha considerato solo perché è troppo concentrato sulla matematica.
Per quanto riguarda ciò che viene generalmente utilizzato, per la funzione di attivazione tanH (x) è normale passare 1 - x² invece di 1 - tanH (x) ² come derivato per calcolare le cose più velocemente.
Inoltre, tieni presente che ReLU non è poi così "ovviamente migliore" di, ad esempio, TanH. TanH può probabilmente essere migliore in alcuni casi. Solo, così sembra, non nel riconoscimento visivo. Tuttavia, ELU, ad esempio, ha un po 'di morbidezza sigmoidea ed è una delle funzioni di attivazione più conosciute per il riconoscimento visivo al momento. Non ci ho ancora provato, ma scommetto che uno può impostare diversi gruppi con diverse funzioni di attivazione sullo stesso livello di livello a un vantaggio. Perché, una diversa logica è meglio descritta con diverse funzioni di attivazione. E a volte probabilmente hai bisogno di diversi tipi di valutazione.
Si noti che è importante disporre di una inizializzazione che corrisponda al tipo di funzione di attivazione. Le ReLU che perdono hanno bisogno di altri init che le semplici ReLU, per esempio.
EDIT: In realtà, ReLU standard sembra meno incline a sovralimentare rispetto a quelli che perdono con le architetture moderne. Almeno nel riconoscimento delle immagini. Sembra che se stai cercando una rete ad altissima precisione con un carico enorme di parametri, potrebbe essere meglio attenersi a semplici opzioni ReLU vs perdite. Ma, naturalmente, prova tutto questo da solo. Forse, alcune cose che perdono funzioneranno meglio se viene data una maggiore regolarizzazione.