Una funzione di attivazione in una rete neurale Γ¨ ciΓ² che decide se un neurone particolare deve essere attivato o meno. In parole semplici, puoi immaginarla come un filtro che prende il segnale in entrata e decide se Γ¨ abbastanza importante da essere passato al prossimo strato della rete.
Ecco alcune delle tipologie piΓΉ comuni di funzioni di attivazione:
-
Step (o Funzione Gradino): Questa Γ¨ forse la piΓΉ semplice delle funzioni di attivazione. Funziona come un interruttore on/off. Se lβinput Γ¨ superiore a una certa soglia, il neurone viene attivato (emette un segnale, di solito 1), altrimenti resta inattivo (emette 0). Non Γ¨ molto utilizzata nelle reti neurali moderne a causa della sua natura binaria e della mancanza di gradiente (non puΓ² essere utilizzata per metodi basati sul gradiente come la discesa stocastica del gradiente), ma Γ¨ utile per comprendere le basi del funzionamento dei neuroni artificiali.
-
Sigmoid: Questa funzione trasforma i valori in entrata in un range tra 0 e 1. Γ utile per problemi di classificazione binaria. Tuttavia, non Γ¨ molto usata oggi a causa di alcuni problemi come la scomparsa del gradiente.
-
ReLU (Rectified Linear Unit): Γ una delle funzioni piΓΉ popolari. Trasforma tutti i valori negativi in zero e lascia invariati i valori positivi. Γ efficiente e generalmente funziona bene in molte applicazioni.
-
Leaky Relu: A differenza della ReLU standard, la Leaky ReLU consente ad una piccola quantitΓ di informazione di passare anche quando lβinput Γ¨ negativo. La sua espressione matematica Γ¨:
dove Γ¨ un piccolo valore positivo (generalmente nellβordine di 0.01), noto come il parametro di βleakinessβ.
La Leaky ReLU Γ¨ stata introdotta per superare il problema della βdying ReLUβ, che si verifica quando i neuroni ReLU diventano inattivi durante lβaddestramento e smettono di imparare completamente. Lβaggiunta del termine βleakyβ consente di mantenere il flusso di informazioni anche attraverso i neuroni con input negativi. In generale, puΓ² essere una scelta utile quando si vuole evitare la morte dei neuroni ReLU o quando si ha una quantitΓ significativa di dati con valori negativi.
model = tf.keras.Sequential([
Input(shape=(input_size,)),
Dense(128),
LeakyReLU(alpha=0.01),
Dense(output_size, activation='softmax')
])
- Tanh (Tangente Iperbolica): Trasforma i valori in un range tra -1 e 1. Γ simile alla sigmoid ma spesso funziona meglio perchΓ© i valori negativi possono essere gestiti in modo piΓΉ efficace.
Quale funzione di attivazione utilizzare
Questa risposta non esiste e va ad esperienza ma una buona tecnica Γ¨ usare una RELU per gli strati nascosti mentre per gli strati finali in base al problema che ho.
Classificazione monoclasse
In questo caso ho una classificazione semplice bianco/nero, esempio classico Γ¨ tumore/non tumore. In questo caso avrΓ² un solo neurone come livello di output che indica la probabilitΓ che lβoggetto in ingresso sia quello ricercato e utilizzerΓ² come funzione di attivazione la sigmoide.
Classificazione con classi indipendenti
Se devo fare una classificazione di un oggetto in cui le classi di appartenenza sono indipendenti tra di loro, che significa che unβoggetto puΓ² appartenere sia alla classe 1 che alla classe 2 (es. se ricerco gli argomenti di un articolo di giornale, questo puΓ² trattare sia sport che attualitΓ ) allora utilizzo come funzione di attivazione la sigmoide. Ogni valore del nodi di output sarΓ tra 0 e 1 (in quanto utilizzo il sigmoide come funzione di attivazione dellβultimo strato) e indica la probabilitΓ che lβoggetto in ingresso appartenga alla classe
Nellβesempio sopra ottengo che lβoggetto in ingresso appartiene con il 75% di probabilitΓ alla classe , con il 90% alla classe e con il 45% alla classe .
Notare che la somma di queste probabilitΓ non fa 1, proprio perchΓ© lβoggetto puΓ² appartenere a piΓΉ classi contemporaneamente.
Classificazione con classi dipendenti
Questo Γ¨ il caso piΓΉ classico in cui un oggetto puΓ² appartenere solo ad una classe: per esempio se sto cercando la razza di un animale questo puΓ² essere βgattoβ o βcaneβ, non puΓ² essere entrambi.
In questo caso utilizzo come funzione di attivazione dell'ultimo strato la softmax che fornisce sempre valori di probabilitΓ tra 0 e 1 ma la cui somma totale fa 1.
In questo modo il nodo con la probabilitΓ piΓΉ alta Γ¨ il nodo che indica la classe dellβoggetto di input.
Regressione
Se ho un problema di regressione e non classificazione utilizzo come funzione di attivazione la lineare.