Sigmoid
La funzione sigmoide mappa qualsiasi numero reale su un valore compreso tra 0 e 1, trasformando gli output del modello in probabilità. Confronto con altre funzioni di attivazione.
La funzione Sigmoid è un componente matematico fondamentale, ampiamente utilizzato nei campi del machine learning (ML) e del deep learning (DL). Spesso definita «funzione di compressione», accetta in input qualsiasi numero reale e lo mappa su un valore compreso tra 0 e 1. Questa caratteristica curva a «S» la rende estremamente utile per convertire gli output grezzi dei modelli in probabilità interpretabili. Nel contesto di una rete neurale (NN), la funzione Sigmoid agisce da funzione di attivazione, introducendo non linearità che permette ai modelli di apprendere schemi complessi oltre le semplici relazioni lineari. Sebbene sia stata in gran parte sostituita da altre funzioni nei livelli nascosti profondi, resta una scelta standard per i livelli di output nelle attività di classificazione binaria.
Il funzionamento di Sigmoid nell'AI#
In sostanza, la funzione Sigmoid trasforma i dati in input, spesso chiamati logit, in un intervallo normalizzato. Questa trasformazione è fondamentale per le attività che mirano a prevedere la probabilità di un evento. Limitando l'output a valori compresi tra 0 e 1, la funzione fornisce un punteggio di probabilità chiaro.
- Regressione logistica: Nei modelli statistici tradizionali, Sigmoid è alla base della regressione logistica. Consente ai data scientist di stimare la probabilità di un esito binario, ad esempio se un cliente abbandonerà il servizio o resterà.
- Classificazione binaria: Nelle reti neurali progettate per distinguere due classi, ad esempio «gatto» e «cane», il livello finale utilizza spesso un'attivazione Sigmoid. Se l'output supera una soglia, comunemente 0.5, il modello predice la classe positiva.
- Classificazione multilabel: A differenza dei problemi multiclasse, in cui le classi si escludono a vicenda, le attività multilabel consentono a un'immagine o a un testo di appartenere contemporaneamente a più categorie. In questo caso, Sigmoid viene applicata in modo indipendente a ogni nodo di output, permettendo al modello di rilevare un «auto» e una «persona» nella stessa scena senza conflitti.
Differenze principali rispetto ad altre funzioni di attivazione#
Sebbene un tempo Sigmoid fosse la funzione predefinita per tutti i livelli, i ricercatori ne hanno scoperto alcuni limiti, come il problema del gradiente evanescente, in cui i gradienti diventano troppo piccoli per aggiornare efficacemente i pesi nelle reti profonde. Questo ha portato all'adozione di alternative per i livelli nascosti.
- Sigmoid vs. ReLU (unità lineare rettificata): ReLU è più veloce dal punto di vista computazionale ed evita il problema dei gradienti evanescenti restituendo direttamente l'input se è positivo e zero altrimenti. ReLU e le varianti uniformi come SiLU, utilizzata da YOLO26, sono le scelte preferite per i livelli nascosti nelle architetture moderne, mentre Sigmoid viene riservata al livello di output finale in attività specifiche.
- Sigmoid vs. Softmax: Entrambe mappano gli output nell'intervallo da 0 a 1, ma hanno scopi diversi. Sigmoid tratta ogni output in modo indipendente, risultando ideale per attività binarie o multilabel. Softmax forza la somma di tutti gli output a 1, creando una distribuzione di probabilità usata nella classificazione multiclasse, in cui è corretta una sola classe.
Applicazioni nel mondo reale#
La funzione Sigmoid è utile in diversi settori che richiedono la stima delle probabilità.
-
Diagnosi medica: I modelli AI utilizzati nell'analisi delle immagini mediche spesso usano output Sigmoid per predire la probabilità che una malattia sia presente in una radiografia o in una scansione MRI. Ad esempio, un modello potrebbe restituire 0.85, indicando una probabilità dell'85% che sia presente un tumore e aiutando i medici a individuarlo precocemente.
-
Rilevamento dello spam: I sistemi di filtraggio della posta elettronica utilizzano modelli di elaborazione del linguaggio naturale (NLP) con classificatori Sigmoid per determinare se un messaggio in arrivo è «spam» o «non spam». Il modello analizza parole chiave e metadati, restituendo un punteggio che determina se l'email finisce nella posta in arrivo o nella cartella della posta indesiderata.
Implementazione pratica#
Puoi osservare come Sigmoid trasforma i dati usando PyTorch, una libreria diffusa per creare modelli di deep learning. Questo semplice esempio mostra l'effetto di "compressione" su un intervallo di valori in ingresso.
import torch
import torch.nn as nn
# Create a Sigmoid layer
sigmoid = nn.Sigmoid()
# Define input data (logits) ranging from negative to positive
input_data = torch.tensor([-5.0, -1.0, 0.0, 1.0, 5.0])
# Apply Sigmoid to squash values between 0 and 1
output = sigmoid(input_data)
print(f"Input: {input_data}")
print(f"Output: {output}")
# Output values near 0 for negative inputs, 0.5 for 0, and near 1 for positive inputsPer chi desidera addestrare modelli che sfruttano questi concetti senza scrivere codice di basso livello, la piattaforma Ultralytics offre un'interfaccia intuitiva per gestire i dataset e addestrare modelli all'avanguardia come YOLO26. Gestendo automaticamente le complessità architetturali, consente agli utenti di concentrarsi sulla raccolta di dati di addestramento di alta qualità per le proprie applicazioni specifiche di visione artificiale.










