14 KiB
14 KiB
Certamente, ecco gli appunti dettagliati in formato Markdown per il tuo blocco note Obsidian, basati sui PDF forniti:
Reti Neurali
- Funzione Score Lineare:
f = Wx
- Rete Neurale a 2-layer:
f = W₂ max(0, W₁x)
Fully Connected Neural Net
- Problema:
- Spatial correlation locale
- Molti parametri: 10^12 per una immagine 1000x1000 con 1M hidden units
- Meglio usare le risorse altrove
Locally Connected Neural Net
- Soluzione:
- Input connessi localmente.
- Meno parametri.
- 100M per una immagine 1000x1000 con 1M hidden units e filter size 10x10
- Problema: Staticità dei parametri.
Convolutional Neural Net
- Soluzione:
- Condivide i parametri su diverse locazioni
- Convolution con learned kernels
- Impara multipli filtri,
- Esempio con 100 filtri e dimensione 10x10, si hanno 10k parametri.
- Motivazioni:
- Le reti standard crescono quadraticamente con la dimensione dell'input.
- Non sfruttano la staticità.
- Connette ogni unità nascosta con un piccolo input patch.
- Condivide i pesi.
Pooling
- Scopo: Filtra risposte a diverse locazioni, ottenendo robustezza.
- Max e Average.
Neural Nets for Vision
- Connessione hidden layer a patch dell'input, condividendo i pesi.
- Cnn: convolutional network.
Layer Fully Connected
- Si applica dopo la fase di feature extraction.
- Output lineare:
Wx
- Output è un numero se si applica
Wx
Layer Convoluzionale
- Preserva la struttura spaziale
- Dimensione filtro tipica 5x5x3.
- Applica la convoluzione tra filtro e chunk di immagine.
Layer Convoluzionale Multiplo
- Si possono usare più filtri, ottenendo più mappe di attivazione.
- Si stackano le mappe di attivazione.
- Ogni mappa è un nuovo channel.
ConvNet
- Sequenza di convolutional layers, alternate da funzioni di attivazione (RELU).
VGG-16
- Bassi livelli: low level features.
- Medio livello: mid level features.
- Alti livelli: high level features.
- Dopo i vari layers la classificazione è lineare.
CONV layer in Pytorch
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
- Input: N (batch size), C(channel), H(height) e W(width).
- Output: N, Cout, Hout, Wout.
out(N, C) = bias(Cout) + sum_{k=0}^{C_in-1} weight(Cout, k) * input(N, k)
- Parametri:
kernel_size, stride, padding, dilation
sono parametri int o tuple. - Hyperparameters:
* Numero di filtri
K
* Dimensione dei filtriF
* StrideS
* PaddingP
Pooling Layer
- Rende la rappresentazione più piccola e gestibile.
- Opera indipendentemente per ogni mappa di attivazione.
- Downsampling:
- 224 diventa 112.
Max Pooling
- No learnable parameters.
- Introduce spatial invariance.
Struttura tipica CNN
- CONV -> RELU -> POOL (più volte) -> FC (linear) -> Softmax.
- Struttura di base:
[(CONV-RELU)*N-POOL?]*M-(FC-RELU)*K,SOFTMAX
Spero che questi appunti ti siano utili. Buono studio per il tuo esame! Se hai altre domande, non esitare a chiedere.
Appunti su Reti Neurali e Convoluzionali
Dropout
- Definizione: Tecnica di regolarizzazione per prevenire l'overfitting in reti neurali.
- Funzionamento (Training):
- Disattiva casualmente una frazione di neuroni durante ogni iterazione di training.
- I neuroni disattivati (dropped-out) hanno attivazione zero.
- La probabilità di dropout è controllata dall'iperparametro p (dropout rate), dove 0 ≤ p < 1.
- I pesi dei neuroni attivi vengono aggiornati normalmente con backpropagation.
- I neuroni disattivati non contribuiscono al forward o backward pass.
- Formula:
h = r ⊙ x
, doverᵢ ~ Bernoulli(1-p)
e⊙
è la moltiplicazione elemento per elemento.
- Funzionamento (Inferenza):
- Nessun neurone viene disattivato.
- Le attivazioni vengono scalate in base al dropout rate (p). Tipicamente si moltiplica per 1-p per compensare la minore attività dei neuroni in training.
- Formula:
h = (1-p)x
- Inverse Dropout:
- La scalatura delle attivazioni viene fatta durante il training, non l'inferenza.
- Assicura la consistenza dei valori delle attivazioni tra training e inferenza.
- Formula:
h = (r ⊙ x) / (1-p)
- Obiettivo: Forzare la rete a imparare caratteristiche robuste che non dipendono da neuroni specifici.
- Efficacia: Non è sempre efficace.
Connessioni Residue (Residual Connections)
- Definizione: Introdotte nelle Residual Networks (ResNets) per affrontare il problema del vanishing gradient.
- Funzionamento:
- Aggiungono l'input di un layer direttamente al suo output, "saltando" uno o più layer.
- Formula:
h = F(x) + x
- Ogni layer aggiunge un "residuo" al valore precedente.
- Backpropagation:
- Se i parametri sono tali che
F(x) = 0
, allora l'input passa inalterato (funzione identità). - I derivati non si annullano grazie alla forma
F(x) + x
.
- Se i parametri sono tali che
- Deep Residual Networks:
- Consistono in molti layer con unità residue.
- Per la visione, F sono tipicamente 2-3 layer convolution nets.
- Performance migliore con profondità maggiori rispetto alle reti normali.
- Esempio ImageNet:
- ResNet 152 layers: errore top-5 4.49%
- Ensemble ResNet: 3.57%
- Precedente SOTA: 6.6% (GoogLeNet)
- Umani: 5.1%
- ResNets fino a 1000 layers, ma le performance si stabilizzano a 150 layer.
Normalizzazione
-
Standard Scaling:
- Preprocessa i dati in modo che ogni feature (colonna) abbia media zero e varianza unitaria.
- Formula:
X' = (X - μ) / sqrt(σ²)
μ
: media della feature, calcolata comeμⱼ = (1/n) Σᵢ Xᵢⱼ
σ²
: varianza della feature, calcolata comeσ²ⱼ = (1/n) Σᵢ (Xᵢⱼ - μⱼ)²
-
Batch Normalization (BN):
- Normalizza gli output di ogni layer o blocco in una rete neurale.
- Obiettivo: imparare media e varianza ottimali per ogni unità del layer durante il training.
- La media e la varianza di un layer cambiano durante l'ottimizzazione.
- Calcola media e varianza su un mini-batch anziché sull'intero dataset.
- Formula:
H' = (H - μ) / (sqrt(σ²) + ε)
- Formula:
- BN(H) imposta una nuova media e varianza:
BN(H) = αH'ᵢⱼ + βⱼ
α
eβ
sono trainati via gradient descent.- Inferenza:
- Post-Training Stats: Calcola media e varianza sull'intero dataset e le usa fisse.
- Moving Average: Mantiene medie mobili di media e varianza durante il training, le usa fisse in inferenza.
- BN Convoluzioni:
- Media e varianza sono calcolate per canale, non per feature.
- Sfide:
- Mini-batch dependencies: Limita l'efficacia in scenari come distributed optimization.
- High variance: Con batch piccoli, la stima di media e varianza è poco affidabile.
-
Layer Normalization (LN):
- Normalizza gli input a un layer attraverso le features (non mini-batch).
- Comunemente usata in forecasting con time series e transformers (batch size variabile o spesso = 1).
- Vengono allenate le variabili alfa e beta.
Data Augmentation
- Definizione: Tecnica per aumentare la dimensione del training set applicando trasformazioni casuali ai dati.
- Funzionamento:
- Campiona un mini-batch dal dataset.
- Applica una o più trasformazioni casuali (flipping, cropping, rotazione...).
- Allena il modello sul mini-batch trasformato.
- Benefici: Previene overfitting e migliora la robustezza del modello.
- Trasformazioni Geometriche:
- Flipping (orizzontale/verticale)
- Rotazione (angoli casuali)
- Traslazione (shift in x/y)
- Scaling (ridimensionamento)
- Cropping (ritaglio)
- Zooming
- Affine (combinazione di altre)
- Trasformazioni Colore/Luce:
- Brightness/Contrast/Saturation/Hue
- Color Jittering
- Grayscale
- Noise and Distortion:
- Gaussian Noise
- Salt-and-Pepper Noise
- Elastic Deformations
- Cutout/Masking:
- Cutout
- Random Erasing
- Combinazione Tecniche:
- Mixup
- CutMix
Convoluzioni 1D
- Definizione: Usata per dati time series dove l'informazione è ordinata in sequenza.
- Obiettivo: Estrarre feature locali o pattern che evolvono nel tempo.
- Input: Time series di n passi,
x₀, x₁,..., xₙ₋₁
, dove ogni passo ha c features.- Rappresentata come matrice
X (n, c)
: ogni riga è un timestep, ogni colonna è una feature.
- Rappresentata come matrice
- Convoluzione 1D: Definità da un receptive field di dimensione 2k:
Hᵢ = φ( Σⱼ₌₋ₖᵏ Σ₂₁ᶜ Wⱼ₊ₖ,₂ * Xᵢ₊ⱼ,₂)
- Scopi:
- Local Pattern Detection: Catturare dipendenze locali nei time series.
- Parameter Sharing: Stesso filtro applicato a tutti i passi, riducendo i parametri.
- Translation Invariance: Robustezza a shift nel tempo.
- Applicazioni:
- Forecasting
- Anomaly Detection
- Classification
- Signal Processing
- Causal Convolution:
- L'output a un tempo i dipende solo dai passi precedenti (non futuri).
- Utile per forecasting e modelli che non devono "vedere" il futuro.
Hᵢ = φ( Σⱼ₌₀ᵏ Σ₂₁ᶜ Wⱼ,₂ * Xᵢ₋ⱼ,₂)
Causal Model
- Forecasting: Prevedere il passo successivo nei time series.
- Opzioni:
- Poola l'output
H
e applica un regressor per predirexₙ
. - Definisce un target
Y = [x₁, x₂,..., xₙ]
e allena il modello in modo cheHᵢ ≈ Hᵢ₊₁
- Quest'ultimo funziona solo con modelli causali.
- Poola l'output
Autoregressive Generation
- Modelli allenati a prevedere il passo successivo possono essere usati per generazione autoregressiva.
- Funzionamento:
- Inizia con una sequenza iniziale come prompt.
- Il modello predice il passo successivo.
- Aggiungi la predizione all'input e ripeti.
Self-Attention
- Scopo: Modellare sequenze.
- Confronto con 1D Convolution:
- 1D Convolution: Filtro a dimensione fissa, cattura pattern locali.
- Self-Attention: Calcola le interazioni tra ogni elemento della sequenza, imparando le dipendenze globali.
- Funzionamento:
- Calcola gli "attention scores" tra tutti gli elementi di una sequenza.
- L'output è la somma pesata degli elementi, dove i pesi sono gli attention scores.
- Q, K, V Matrices:
- Ogni token viene trasformato in 3 vettori: Query (Q), Key (K), Value (V).
- Analogia web search:
- Query (Q): la search term
- Key (K): titoli delle pagine web
- Value (V): contenuto delle pagine web.
- Il modello usa Q, K, V per calcolare gli attention scores.
- Masked Self-Attention:
- Attention Score:
dot product
di Q e K. - Masking: Blocca i token futuri (upper triangle) ponendo i loro scores a
-inf
. - Softmax: Converte gli scores in probabilità.
- Attention Score:
- Multi-Head Attention:
- Multipli self-attention heads, ognuno cattura relazioni diverse tra i tokens.
- Output concatenati e passati per una proiezione lineare.
- MLPs:
- I risultati del multi-head self-attention vengono elaborati da un Multilayer Perceptron.
- Transformer Block:
Add \& Norm
: connessione residua, layer normalization.- Layernorm applicato prima di MHA e MLP
- Il blocco si ripete "Nx" volte.
Text Embeddings
- Tokens: Il testo viene diviso in unità più piccole (parole o subwords).
- Embeddings: I tokens sono convertiti in vettori numerici.
- Problematiche con encoders a livello di parola:
- Difficoltà a gestire le boundaries delle parole.
- Parole con forme simili trattate come separate.
- Char encoders: Riducono la complessità ma sono difficili da usare.
- Subword Encoders (Byte Pair Encoding):
- Algoritmo che parte dal vocabolario base con tutti i caratteri.
- Conta la frequenza delle coppie di caratteri.
- Unisce la coppia più frequente in un nuovo simbolo.
- Aggiunge il simbolo al vocabolario, re-tokenizza i dati.
- Si ferma dopo un numero di step.
- GPT-2 utilizza BPE su byte e aggiunge regole per il merging process.
Positional Encoding
- Problema: I transformers processano i tokens simultaneamente, perdendo informazione di sequenza.
- Positional Encoding: Aggiunge informazione di posizione ai token vectors, consentendo al modello di differenziarli.
- Sinusoidal Embeddings:
- $$p(t)ᵢ= { sin(ωₖ * t) se i = 2k
cos(ωₖ * t) se i = 2k+1
ωₖ = 1/10000^(2k/d)
- $$p(t)ᵢ= { sin(ωₖ * t) se i = 2k
cos(ωₖ * t) se i = 2k+1
ωₖ = 1/10000^(2k/d)
- Relative Positional Embeddings:
- Considera la distanza relativa
i-j
tra i tokens, non la posizione assoluta. - Es. ALiBi (Attention with Linear Biases): bᵢⱼ aggiunto basato sulla distanza relativa.
- In ALiBi non si usano positional embeddings all'inizio.
- Considera la distanza relativa
- Output del Transformer:
- L'output è proiettato nello spazio 50,257 dimensionale (grandezza vocabolario).
- Ogni valore è un logit, raw score del token.
- Softmax: i logits vengono trasformati in probabilità (distribuzione), si sceglie il token più probabile.
- Temperature:
- Iperparametro che controlla la randomicità della generazione.
- Temp = 1: nessun effetto.
- Temp < 1: distribuisce "sharper", più deterministico.
- Temp > 1: distribuisce "softer", più casuale, più creativa.