Iniziamo con una definizione di funzione di attivazione
"Nelle reti neurali artificiali, ogni neurone forma una somma ponderata dei suoi input e trasmette il valore scalare risultante attraverso una funzione denominata funzione di attivazione". — Definizione da Wikipedia
Suona un po' complicato? Non preoccuparti! Dopo aver letto questo articolo, avrai una migliore comprensione delle funzioni di attivazione. Negli esseri umani, il nostro cervello riceve input dal mondo esterno, esegue l'elaborazione sul neurone che riceve input e attiva la coda del neurone per generare le decisioni richieste. Allo stesso modo, nelle reti neurali, forniamo input come immagini, suoni, numeri, ecc., e l'elaborazione viene eseguita sul neurone artificiale, con un algoritmo che attiva lo strato di neurone finale corretto per generare risultati.
Prerequisiti :
Perché abbiamo bisogno di funzioni di attivazione?
Una funzione di attivazione determina se un neurone deve essere attivato o meno . Ciò implica che utilizzerà alcune semplici operazioni matematiche per determinare se l'input del neurone alla rete è rilevante o meno nel processo di previsione. La capacità di introdurre la non linearità in una rete neurale artificiale e generare output da una raccolta di valori di input alimentati a uno strato è lo scopo della funzione di attivazione.
Tipi di funzioni di attivazione
Le funzioni di attivazione possono essere suddivise in tre tipi:
Funzione di attivazione lineare
La funzione di attivazione lineare, spesso chiamata funzione di attivazione dell'identità , è proporzionale all'input. L'intervallo della funzione di attivazione lineare sarà (da -∞ a ∞). La funzione di attivazione lineare somma semplicemente il totale ponderato degli input e restituisce il risultato.
Matematicamente, può essere rappresentato come:
Pro e contro
Non è un'attivazione binaria perché la funzione di attivazione lineare fornisce solo una serie di attivazioni. Possiamo sicuramente connettere alcuni neuroni insieme e, se ci sono più attivazioni, possiamo calcolare il massimo (o il massimo morbido) in base a quello.
La derivata di questa funzione di attivazione è una costante. Vale a dire, il gradiente non è correlato alla x (input).
Funzione di attivazione passo binario
Un valore di soglia determina se un neurone deve essere attivato o meno in una funzione di attivazione a passi binari.
La funzione di attivazione confronta il valore di ingresso con un valore di soglia. Se il valore di input è maggiore del valore di soglia, il neurone viene attivato. È disabilitato se il valore di input è inferiore al valore di soglia, il che significa che il suo output non viene inviato al livello successivo o nascosto.
Matematicamente, la funzione di attivazione binaria può essere rappresentata come:
Pro e contro
Non può fornire output multivalore, ad esempio non può essere utilizzato per problemi di classificazione multiclasse.
Il gradiente della funzione passo è zero, il che rende difficile la procedura di propagazione all'indietro.
Funzioni di attivazione non lineare
Le funzioni di attivazione non lineare sono le funzioni di attivazione più utilizzate. Semplificano l'adattamento di un modello di rete neurale artificiale a una varietà di dati e la differenziazione tra gli output.
Le funzioni di attivazione non lineare consentono l'impilamento di più livelli di neuroni, poiché l'output sarebbe ora una combinazione non lineare di input passati attraverso più livelli. Qualsiasi output può essere rappresentato come output di calcolo funzionale in una rete neurale.
Queste funzioni di attivazione sono principalmente suddivise in base alla loro portata e alle loro curve. Il resto di questo articolo delineerà le principali funzioni di attivazione non lineare utilizzate nelle reti neurali.
1. Sigmoide
Sigmoid accetta un numero come input e restituisce un numero compreso tra 0 e 1. È semplice da usare e ha tutte le qualità desiderabili delle funzioni di attivazione: non linearità, differenziazione continua, monotonia e un intervallo di output impostato.
Questo è utilizzato principalmente nei problemi di classificazione binaria. Questa funzione sigmoidea fornisce la probabilità dell'esistenza di una classe particolare.
Matematicamente, può essere rappresentato come:
Pro e contro
È di natura non lineare. Anche le combinazioni di questa funzione non sono lineari e darà un'attivazione analogica, a differenza della funzione di attivazione a passi binari. Ha anche un gradiente uniforme ed è buono per un problema di tipo classificatore.
L'uscita della funzione di attivazione sarà sempre nell'intervallo (0,1) rispetto a (-∞, ∞) della funzione di attivazione lineare. Di conseguenza, abbiamo definito un intervallo per le nostre attivazioni.
La funzione Sigmoide dà origine a un problema di "gradienti evanescenti" e i Sigmoidi saturano e uccidono i gradienti.
Il suo output non è centrato sullo zero e fa sì che gli aggiornamenti del gradiente vadano troppo lontano in direzioni diverse. Il valore di output è compreso tra zero e uno, quindi rende più difficile l'ottimizzazione.
La rete si rifiuta di saperne di più o è estremamente lenta.
2.TanH (tangente iperbolica)
TanH comprime un numero con valore reale nell'intervallo [-1, 1] . Non è lineare, ma è diverso da Sigmoid e il suo output è centrato sullo zero . Il vantaggio principale di ciò è che gli input negativi verranno mappati fortemente sugli input negativi e zero verranno mappati quasi a zero nel grafico di TanH.
Matematicamente, la funzione TanH può essere rappresentata come:
Pro e contro
TanH ha anche il problema del gradiente di scomparsa, ma il gradiente è più forte per TanH rispetto al sigmoide (i derivati sono più ripidi).
TanH è centrato sullo zero e i gradienti non devono spostarsi in una direzione specifica.
3.ReLU (Unità Lineare Rettificata)
ReLU sta per Rectified Linear Unit ed è una delle funzioni di attivazione più comunemente utilizzate nelle applicazioni. È stato risolto il problema della sfumatura sfumata perché il valore massimo del gradiente della funzione ReLU è uno. Ha anche risolto il problema della saturazione del neurone, poiché la pendenza non è mai zero per la funzione ReLU.
L'intervallo di ReLU è compreso tra 0 e infinito.
Matematicamente, può essere rappresentato come:
Pro e contro
Poiché solo un certo numero di neuroni viene attivato, la funzione ReLU è molto più efficiente dal punto di vista computazionale rispetto alle funzioni sigmoide e TanH.
ReLU accelera la convergenza della discesa del gradiente verso il minimo globale della funzione di perdita grazie alla sua proprietà lineare e non saturante.
Uno dei suoi limiti è che dovrebbe essere utilizzato solo all'interno di livelli nascosti di un modello di rete neurale artificiale.
Alcuni gradienti possono essere fragili durante l'allenamento.
In altre parole, per le attivazioni nella regione (x<0) di ReLu, la pendenza sarà 0 per cui i pesi non verranno regolati durante la discesa. Ciò significa che quei neuroni che entrano in quello stato smetteranno di rispondere alle variazioni di input (semplicemente perché il gradiente è 0, non cambia nulla). Questo è chiamato problema ReLu morente .
4. ReLU che perde
Leaky ReLU è una versione aggiornata della funzione di attivazione ReLU per risolvere il problema ReLU morente, poiché ha una piccola pendenza positiva nell'area negativa. Tuttavia, la coerenza del vantaggio tra le attività è attualmente ambigua.
Matematicamente, può essere rappresentato come
Pro e contro
I vantaggi di Leaky ReLU sono gli stessi di ReLU, oltre al fatto che consente la backpropagation, anche per valori di input negativi.
Apportando piccole modifiche ai valori di input negativi, il gradiente del lato sinistro del grafico risulta essere un valore reale (diverso da zero). Di conseguenza, non ci sarebbero più neuroni morti in quell'area.
Le previsioni potrebbero non essere stabili per valori di input negativi.
5.ELU (Unità lineari esponenziali)
ELU è anche una delle varianti di ReLU che risolve anche il problema ReLU morto. ELU, proprio come ReLU che perde, considera anche i valori negativi introducendo un nuovo parametro alfa e moltiplicandolo per un'altra equazione.
ELU è leggermente più costoso dal punto di vista computazionale rispetto a ReLU che perde ed è molto simile a ReLU ad eccezione degli input negativi. Sono entrambi in forma di funzione identità per input positivi.
Matematicamente, può essere rappresentato come:
Pro e contro
ELU è una forte alternativa a ReLU. Diversamente dalla ReLU, ELU può produrre uscite negative.
Le operazioni esponenziali sono presenti in ELU, quindi aumenta il tempo di calcolo.
Non avviene alcuna conoscenza del valore 'a' e il problema del gradiente di esplosione.
6. Softmax
Una combinazione di molti sigmoidi viene definita funzione Softmax. Determina la probabilità relativa. Simile alla funzione di attivazione sigmoidea, la funzione Softmax restituisce la probabilità di ciascuna classe/etichetta. Nella classificazione multiclasse, la funzione di attivazione softmax è più comunemente utilizzata per l'ultimo livello della rete neurale.
La funzione softmax fornisce la probabilità della classe corrente rispetto alle altre. Ciò significa che considera anche la possibilità di altre classi.
Matematicamente, può essere rappresentato come:
Pro e contro
Imita l'unica etichetta codificata meglio dei valori assoluti.
Perderemmo informazioni se usiamo valori assoluti (modulo), ma l'esponenziale si occupa di questo da solo.
La funzione softmax dovrebbe essere utilizzata anche per la classificazione multi-etichetta e l'attività di regressione.
7. Swish
Swish consente la propagazione di alcuni numeri di pesi negativi, mentre ReLU imposta tutti i pesi non positivi a zero. Questa è una proprietà cruciale che determina il successo delle funzioni di attivazione regolare non monotoniche, come quelle di Swish, in reti neurali progressivamente profonde.
È una funzione di attivazione automatica creata dai ricercatori di Google.
Matematicamente, può essere rappresentato come:
Pro e contro
Swish è una funzione di attivazione regolare che significa che non cambia improvvisamente direzione come fa ReLU vicino a x uguale a zero. Piuttosto, si piega dolcemente da 0 verso valori < 0 e poi di nuovo verso l'alto.
I valori non positivi sono stati azzerati nella funzione di attivazione ReLU. I numeri negativi, d'altra parte, possono essere utili per rilevare i modelli nei dati. A causa della scarsità, i grandi numeri negativi vengono spazzati via, risultando in una situazione vantaggiosa per tutti.
La funzione di attivazione del fruscio non essendo monotona migliora il termine dei dati di input e il peso da apprendere.
Con il tempo, probabilmente sorgeranno problemi leggermente più costosi dal punto di vista computazionale e più problemi con l'algoritmo.
Considerazioni importanti sulle funzioni di Attivazione
Nella scelta della corretta funzione di attivazione, è necessario considerare i seguenti problemi e problematiche:
Il gradiente di fuga è un problema comune riscontrato durante l'allenamento della rete neurale. Come una funzione di attivazione sigmoidea, alcune funzioni di attivazione hanno un piccolo intervallo di uscita (da 0 a 1). Quindi un enorme cambiamento nell'input della funzione di attivazione del sigmoide creerà una piccola modifica nell'output. Pertanto, anche la derivata diventa piccola. Queste funzioni di attivazione vengono utilizzate solo per reti poco profonde con solo pochi livelli. Quando queste funzioni di attivazione vengono applicate a una rete multistrato, il gradiente potrebbe diventare troppo piccolo per l'allenamento previsto.
I gradienti esplosivi sono situazioni in cui si accumulano enormi gradienti errati durante l'allenamento, con conseguenti enormi aggiornamenti dei pesi del modello di rete neurale. Quando ci sono gradienti esplosivi, potrebbe formarsi una rete instabile e la formazione non può essere completata. A causa dell'esplosione dei gradienti, i valori dei pesi possono potenzialmente crescere fino al punto in cui traboccano, con conseguente perdita di valori di NaN .
Note finali sulle funzioni di Attivazione
Tutti i livelli nascosti utilizzano generalmente le stesse funzioni di attivazione. La funzione di attivazione ReLU deve essere utilizzata solo nel livello nascosto per ottenere risultati migliori.
Le funzioni di attivazione Sigmoid e TanH non dovrebbero essere utilizzate negli strati nascosti a causa del gradiente di fuga, poiché rendono il modello più suscettibile ai problemi durante l'allenamento.
La funzione Swish viene utilizzata nelle reti neurali artificiali con una profondità superiore a 40 strati.
I problemi di regressione dovrebbero utilizzare funzioni di attivazione lineare
I problemi di classificazione binaria dovrebbero utilizzare la funzione di attivazione sigmoidea
I problemi di classificazione multiclasse possono utilizzare la funzione di attivazione softmax
Architettura della rete neurale e loro funzioni di attivazione utilizzabili:
Rete neurale convoluzionale (CNN): funzione di attivazione ReLU
Recurrent Neural Network (RNN): funzioni di attivazione di TanH o sigmoide
Vuoi mettere in pratica quello che hai letto ?
Oppure segui i tutorial correlati :
Tutorial di Regressione Logistica per l'apprendimento automatico
Riconoscimento facciale con Python, in meno di 25 righe di codice
Tutorial di Regressione Logistica per l'apprendimento automatico
Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale
Feature Engineering e Feature Selection per Principianti e non
Spiegazione della più semplice rete neurale per principianti
Il tuo Primo Programma di Machine Learning con Python e Google Colab
Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step
Come costruire modelli predittivi sanitari utilizzando PyHealth?
Implementare le reti neurali ricorrenti (RNN) con Python e Keras
Deep learnign e python : Object Recognition e Object Predict esempio
コメント