La funzione di attivazione è un elemento essenziale per la progettazione di una rete neurale. La scelta della funzione di attivazione vi darà il controllo completo sul processo di formazione del modello di rete. Dopo aver aggiunto queste funzioni negli strati nascosti, il modello imparerà in modo efficiente. Il tipo di previsioni dipende dalla scelta della funzione di attivazione. Pertanto, si dovrebbe scegliere attentamente la funzione di attivazione per ogni rete di apprendimento profondo.
Funzioni di attivazione
Una funzione di attivazione indica la trasformazione dell’input con l’aiuto di una somma ponderata all’output. Utilizza un singolo nodo o più nodi per la rete per generare la predizione. Ci si può anche riferire alla funzione di attivazione come una funzione di trasferimento. Oppure, si può chiamare una funzione di schiacciamento quando la gamma di uscita ha dei limiti. Le funzioni di attivazione possono anche essere non lineari e ci si riferisce alla non linearità del design della rete. Non importa quale funzione di attivazione scegliete, essa vanterà un impatto significativo sulle prestazioni e la capacità di diverse parti nel modello di apprendimento automatico.
È meglio utilizzare la funzione di attivazione all’interno e dopo aver utilizzato l’elaborazione interna per ogni nodo della rete. Tuttavia, il design del modello incoraggia l’uso di funzioni di attivazione identiche in uno strato. Ecco i tre strati che una rete comprende:
– Strati di ingresso
Gli strati di input raccolgono l’input grezzo e lo usano nel processo di calcolo.
– Strati nascosti
Gli strati nascosti raccolgono l’input dall’altro strato e generano l’output per l’altro strato.
– Strati di uscita
Gli strati di uscita prevedono il risultato.
Ogni strato nascosto si basa sulla stessa funzione di attivazione. Lo strato di output include varie funzioni di attivazione. Raccoglie informazioni dagli strati nascosti. Questo strato dipende dalla generazione di diversi tipi di previsioni che il modello richiede.
Le reti neurali apprendono dalla backpropagation dell’algoritmo dell’errore. Per aggiornare i pesi dello strato nascosto, il modello richiede le derivate dell’errore predittivo. Potete facilmente differenziare le funzioni di attivazione per calcolare la derivata di primo ordine per un dato valore di input. Le reti neurali includono numerosi tipi di funzioni di attivazione. Ma per migliorare le prestazioni degli strati nascosti e di uscita, si dovrebbero usare solo alcune funzioni.
Vantaggi della funzione di attivazione lineare rettificata
Mentre si sviluppano diversi tipi di reti neurali, la funzione di attivazione lineare rettificata sta diventando una scelta predefinita degli scienziati dei dati. I principali vantaggi della funzione di attivazione rettificata sono:
1. Semplicità di calcolo
Non è importante implementare la funzione rettificatrice quando si richiede una funzione max(). Questo è diverso dalla funzione di attivazione sigmoide e tanh, per le quali si richiede il calcolo esponenziale.
2. Sparsità rappresentazionale
Un altro vantaggio della funzione rettificatrice è la capacità di generare output con un vero valore zero. Indica che gli ingressi negativi produrranno un’uscita vera zero. In questo modo, le reti neurali possono abilitare strati nascosti e includere uno o più valori di vero zero. Ci si può riferire a questo come rappresentazione rada, poiché semplifica il modello e accelera il processo di apprendimento. Questo rende la funzione desiderabile per l’apprendimento rappresentazionale.
3. Comportamento lineare
La funzione rettificatrice è simile alla funzione di attivazione lineare. Ha le stesse prestazioni e azioni. In generale, si può facilmente ottimizzare il comportamento delle reti neurali quando il comportamento è vicino a quello lineare.
Come codificare la funzione ReluActivation
Useremo Python per l’implementazione della lineare rettificata con il metodo facile e diretto. L’applicazione più semplice dell’uso di questa funzione sarebbe la funzione max(). Ecco l’esempio per utilizzare correttamente la funzione:
# funzione lineare rettificata
def rettificato(x):
return max(0.0,x)
Secondo l’aspettativa, il valore positivo tornerà invariato. Tuttavia, il valore negativo o il valore di ingresso di 0,0 ritornerà a 0,0. Qui potete trovare alcuni esempi di input e output della funzione di attivazione Relu:
# dimostrazione della funzione lineare rettificata
# funzione lineare rettificata
def rettificata(x):
returnmax(0.0,x)
# dimostrazione con un ingresso positivo
x=1.0
print(‘rettificato(%.1f) è %.1f’%(x,rettificato(x))
x=1000.0
print(‘rettificato(%.1f) è %.1f’%(x,rettificato(x))
# dimostrare con un ingresso nullo
x=0.0
print(‘rettificato(%.1f) è %.1f’%(x,rettificato(x))
# dimostrazione con un input negativo
x=-1.0
print(‘rettificato(%.1f) è %.1f’%(x,rettificato(x))
x=-1000.0
print(‘rettificato(%.1f) è %.1f’%(x,rettificato(x))
Durante l’esecuzione degli esempi precedenti, possiamo identificare il ritorno di valori positivi indipendentemente dalla loro dimensione. Tuttavia, i valori negativi scatteranno al valore 0,0.
1 rettificato(1.0) è 1.0
2 rettificato(1000.0) è 1000.0
3 rettificato(0.0) è 0.0
4 rettificato(-1.0) è 0.0
5 rettificato(-1000.0) è 0.0
Dopo aver tracciato le serie di ingresso e le uscite calcolate, capiremo la relazione tra gli ingressi e le uscite. Ecco alcuni esempi di generazione di una serie di numeri interi a partire da -10 a 10. Questo aiuta nel calcolo della Reluactivation per ogni singolo input. Successivamente, il modello traccerà i risultati.
# tracciare gli input e gli output
da matplotlib importa pyplot
# funzione lineare rettificata
def rettificata(x):
returnmax(0.0,x)
# definire una serie di ingressi
serie_in=[xforxinrange(-10,11)]
# calcoliamo le uscite per i nostri ingressi
serie_out=[rettificato(x)perxinserie_in]
# tracciare la linea degli input grezzi con gli output rettificati
pyplot.plot(serie_in,serie_out)
pyplot.show()
Conclusione
La funzione Reluactivation aiuta le reti neurali a formare modelli di apprendimento profondo. A causa dei problemi di gradiente evanescente in diversi strati, non è possibile utilizzare l’attivazione a tangente iperbolica e sigmoide. È possibile superare i problemi di gradiente attraverso la funzione di attivazione Relu. Questo permette al modello di eseguire meglio e imparare più velocemente. Quando sviluppate il Perceptron convoluzionale e multistrato, le reti neurali rettificate funzione di attivazione lineare sarà l’opzione predefinita.