La sigmoid è la più antica delle activation function. Formula: 1 / (1 + e^(-x)). Prende qualunque numero e lo comprime tra 0 e 1, con una bella curva a S.
Perché è importante storicamente: è stata l'activation principale dagli anni '80 ai primi 2010. Reti neurali, regressione logistica, primi modelli di deep learning: tutti con sigmoid.
Perché oggi non si usa più dentro le reti profonde:
- Vanishing gradient: per input grandi (positivi o negativi), la derivata della sigmoid è quasi zero. Il gradiente muore. I primi strati di una rete profonda non imparano più.
- Output non centrato in zero: sempre tra 0 e 1, mai negativo. I gradienti dei pesi a valle sono tutti dello stesso segno, ottimizzazione lenta.
- Lenta da calcolare: l'esponenziale costa più di un max(0,x) della ReLU.
Dove sopravvive ancora:
- Output binario: classificare "spam o non spam", "positivo o negativo". Sigmoid finale dà la probabilità.
- Multi-label classification: una sigmoid per ogni etichetta, ognuna indipendente.
- Gating in LSTM/GRU: controlla flussi di informazione. Anche se RNN sono fuori moda, qualche cosa si fa ancora.
- SiLU/Swish: x * sigmoid(x), usata internamente in modelli moderni.
Insomma: sigmoid è il nonno delle activation function. Lo rispettiamo, ma per costruire ChatGPT non l'abbiamo invitato.