Tanh (Hyperbolic Tangent)
Scopri come la funzione di attivazione Tanh migliora l'addestramento delle reti neurali portando i dati a media zero. Esplora il suo ruolo nelle RNNs, nelle GANs e nei modelli Ultralytics YOLO26.
La funzione Tanh (Tangente iperbolica) è una funzione di attivazione matematica ampiamente utilizzata nei livelli nascosti delle reti neurali artificiali. Trasforma i valori di input in un intervallo di output compreso tra -1 e 1, creando una curva a forma di S simile a quella della funzione sigmoide, ma centrata su zero. Questa proprietà di centratura su zero è fondamentale perché consente al modello di apprendere in modo più efficiente normalizzando l'output dei neuroni e assicurando che i dati che attraversano la rete abbiano una media più vicina a zero. Gestendo esplicitamente i valori negativi, Tanh aiuta le reti neurali a catturare schemi e relazioni più complessi all'interno dei dati.
Il meccanismo di Tanh nel deep learning#
Nell'architettura dei modelli di deep learning, le funzioni di attivazione introducono la non linearità, consentendo alla rete di apprendere confini complessi tra diverse classi di dati. Senza funzioni come Tanh, una rete neurale si comporterebbe come un semplice modello di regressione lineare, indipendentemente dal numero di livelli di cui dispone. La funzione Tanh è particolarmente efficace nelle reti neurali ricorrenti (RNN) e in alcuni tipi di reti feed-forward, dove mantenere una distribuzione delle attivazioni equilibrata e centrata su zero aiuta a prevenire il problema del gradiente evanescente durante la retropropagazione.
Quando gli input vengono mappati nell'intervallo da -1 a 1, gli input fortemente negativi producono output negativi, mentre quelli fortemente positivi producono output positivi. Questo differisce dalla funzione Sigmoide, che comprime i valori tra 0 e 1. Poiché gli output di Tanh sono simmetrici rispetto allo zero, il processo di discesa del gradiente spesso converge più rapidamente, poiché i pesi nei livelli successivi non si spostano costantemente in un'unica direzione (un fenomeno noto nell'ottimizzazione come percorso a "zig-zag").
Applicazioni nel mondo reale#
Tanh continua a svolgere un ruolo fondamentale in architetture e casi d'uso specifici, in particolare quando sono necessarie l'elaborazione di sequenze e la stima di valori continui.
- Elaborazione del linguaggio naturale (NLP): in architetture come le reti Long Short-Term Memory (LSTM) e le Gated Recurrent Units (GRU), Tanh viene utilizzata come attivazione principale per regolare il flusso delle informazioni. Ad esempio, nelle attività di traduzione automatica, in cui un modello traduce il testo dall'inglese al francese, Tanh aiuta i gate interni della LSTM a decidere quanta parte del contesto precedente (la memoria) conservare o dimenticare. Questo consente al modello di gestire le dipendenze a lungo termine nella struttura delle frasi.
- Reti generative avversarie (GANs): nel componente generatore di molte reti generative avversarie, Tanh viene spesso utilizzata come funzione di attivazione finale del livello di output. Poiché le immagini vengono spesso normalizzate in un intervallo da -1 a 1 durante la pre-elaborazione, l'uso di Tanh assicura che il generatore produca valori dei pixel nello stesso intervallo valido. Questa tecnica aiuta a sintetizzare immagini realistiche per applicazioni come la generazione da testo a immagine.
Confronto: Tanh vs. Sigmoide vs. ReLU#
Per capire quando utilizzarla, è utile distinguere Tanh dalle altre funzioni comuni.
- Tanh vs. Sigmoide: entrambe sono curve a forma di S. Tuttavia, la Sigmoide produce valori tra 0 e 1, il che può causare la scomparsa dei gradienti più rapidamente rispetto a Tanh. La Sigmoide viene generalmente riservata al livello di output finale dei problemi di classificazione binaria (previsione della probabilità), mentre Tanh è preferita nei livelli nascosti delle RNN.
- Tanh vs. ReLU (Unità lineare rettificata): nelle moderne reti neurali convoluzionali (CNNs), come YOLO26, ReLU e le sue varianti (come SiLU) sono generalmente preferite a Tanh per i livelli nascosti. Questo perché ReLU evita il problema del gradiente evanescente in modo più efficace nelle reti molto profonde ed è meno costosa dal punto di vista computazionale. Tanh è più costosa dal punto di vista computazionale a causa dei calcoli esponenziali coinvolti.
Implementazione delle funzioni di attivazione in PyTorch#
Sebbene i modelli di alto livello come Ultralytics YOLO26 gestiscano internamente le definizioni delle attivazioni nei propri file di configurazione, capire come applicare Tanh usando PyTorch è utile per la creazione di modelli personalizzati.
import torch
import torch.nn as nn
# Define a sample input tensor with positive and negative values
input_data = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0])
# Initialize the Tanh activation function
tanh = nn.Tanh()
# Apply Tanh to the input data
output = tanh(input_data)
# Print results to see values squashed between -1 and 1
print(f"Input: {input_data}")
print(f"Output: {output}")Per chi è interessato ad addestrare architetture personalizzate o a gestire i dataset in modo efficace, la Ultralytics Platform offre un ambiente ottimizzato per sperimentare con diversi iperparametri del modello, visualizzare le metriche di addestramento e implementare soluzioni senza dover programmare manualmente ogni livello della rete neurale.









