vault backup: 2024-12-26 04:24:44
This commit is contained in:
parent
7192d14da1
commit
34d8577615
15 changed files with 697 additions and 146 deletions
78
Foundation of data science/notes/2 Linear Regression.md
Normal file
78
Foundation of data science/notes/2 Linear Regression.md
Normal file
|
@ -0,0 +1,78 @@
|
|||
# Linear Regression
|
||||
|
||||
## Definizione
|
||||
La regressione lineare è un metodo per modellare la relazione tra variabili indipendenti (input,$x$) e una variabile dipendente (output,$y$) assumendo che questa relazione sia approssimativamente lineare.
|
||||
|
||||
### Notazione
|
||||
-$m$: Numero di esempi di training.
|
||||
-$n$: Numero di caratteristiche (features).
|
||||
-$x^{(i)}$: Input del$i$-esimo esempio.
|
||||
-$y^{(i)}$: Output del$i$-esimo esempio.
|
||||
-$\theta$: Parametri del modello.
|
||||
|
||||
### Ipotesti del modello
|
||||
La funzione ipotesi per un modello con una variabile è:
|
||||
$$h_\theta(x) = \theta_0 + \theta_1x$$
|
||||
|
||||
Per più variabili (multivariata):
|
||||
$$h_\theta(x) = \theta_0 + \theta_1x_1 + \dots + \theta_nx_n = \theta^T x$$
|
||||
|
||||
## Funzione di costo
|
||||
Misura l'errore tra le predizioni del modello e i valori reali:
|
||||
$$J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2$$
|
||||
|
||||
## Gradient Descent
|
||||
Algoritmo iterativo per minimizzare$J(\theta)$:
|
||||
$$\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}$$
|
||||
Dove:
|
||||
- $\alpha$ è il learning rate.
|
||||
- $\frac{\partial J(\theta)}{\partial \theta_j}$è il gradiente rispetto a$\theta_j$.
|
||||
|
||||
### Varianti
|
||||
1. **Batch Gradient Descent**: Usa tutti gli esempi per calcolare il gradiente.
|
||||
2. **Stochastic Gradient Descent (SGD)**: Aggiorna $\theta$usando un solo esempio per iterazione.
|
||||
3. **Mini-batch Gradient Descent**: Combina i due approcci sopra usando piccoli gruppi (mini-batch).
|
||||
|
||||
### Feature Scaling
|
||||
Per migliorare la convergenza del gradient descent, è utile normalizzare le feature:
|
||||
$$x_j := \frac{x_j - \mu_j}{s_j}$$
|
||||
Dove:
|
||||
- $\mu_j$: Media della feature$j$.
|
||||
- $s_j$: Range o deviazione standard della feature $j$.
|
||||
|
||||
## Equazione Normale
|
||||
Un metodo analitico per calcolare i parametri $\theta$:
|
||||
$\theta = (X^T X)^{-1} X^T y$
|
||||
Utile quando il dataset è piccolo, ma inefficiente per grandi dataset.
|
||||
|
||||
## Metrica di Valutazione
|
||||
- **MSE (Mean Squared Error)**: Valuta l'errore medio quadratico.
|
||||
- **Coefficiente di correlazione (Pearson)**: Misura la relazione lineare tra $x$ e $y$:
|
||||
$$r = \frac{\text{Cov}(x, y)}{\sigma_x \sigma_y}$$
|
||||
Valori:
|
||||
- $r = 1$: Massima correlazione positiva.
|
||||
- $r = 0$: Nessuna correlazione.
|
||||
- $r = -1$: Massima correlazione negativa.
|
||||
|
||||
- **R^2 (Coefficient of Determination)**:
|
||||
$R^2 = 1 - \frac{\text{SSE}}{\text{SST}}$
|
||||
Dove:
|
||||
- $\text{SSE}$: Somma degli errori quadrati.
|
||||
- $\text{SST}$: Somma totale dei quadrati.
|
||||
|
||||
## Locally weighted regression (Loess/Lowess)
|
||||
Tecnica non parametrica che pesa gli esempi locali:
|
||||
$$w^{(i)} = \exp\left(-\frac{(x - x^{(i)})^2}{2\tau^2}\right)$$
|
||||
Dove $\tau$ è un parametro di larghezza (bandwidth).
|
||||
|
||||
## Interpretazione Probabilistica
|
||||
Assumendo un errore gaussiano:
|
||||
$$y^{(i)} = \theta^T x^{(i)} + \epsilon^{(i)}, \quad \epsilon^{(i)} \sim \mathcal{N}(0, \sigma^2)$$
|
||||
La massimizzazione della verosimiglianza equivale alla minimizzazione di$J(\theta)$.
|
||||
|
||||
## Overfitting e Underfitting
|
||||
- **Overfitting**: Modello troppo complesso; alta varianza.
|
||||
- **Underfitting**: Modello troppo semplice; alto bias.
|
||||
Soluzioni:
|
||||
- Selezione delle feature.
|
||||
- Regolarizzazione.
|
142
Foundation of data science/notes/3.2 LLM generated from notes.md
Normal file
142
Foundation of data science/notes/3.2 LLM generated from notes.md
Normal file
|
@ -0,0 +1,142 @@
|
|||
|
||||
Solamente note generate da Gemini 2.0 sulla base del PDF, un po' così...
|
||||
Leggete 3 e 3.1, coprono già praticamente tutto e sono scritti bene.
|
||||
|
||||
|
||||
# Generalizzazione per Classificazione Multiclasse (C > 2)
|
||||
|
||||
## Softmax
|
||||
|
||||
* **Scopo:** Mappare un vettore di *logits* (output non normalizzati di una rete neurale) in un vettore di probabilità che somma a 1. Questo permette di interpretare l'output come una distribuzione di probabilità sulle classi.
|
||||
* **Formula:**
|
||||
$$
|
||||
softmax(a_i) = exp(a_i) / Σ_j exp(a_j)
|
||||
$$
|
||||
dove:
|
||||
* $a_i$ è l'i-esimo logit.
|
||||
* $exp(a_i)$ è l'esponenziale del logit.
|
||||
* $Σ_j exp(a_j)$ è la somma degli esponenziali di tutti i logits (fattore di normalizzazione).
|
||||
* **Proprietà:**
|
||||
* **Esponenziale:** Valori di $a_i$ più alti risultano in probabilità più alte. Valori più bassi vengono ridimensionati verso lo zero.
|
||||
* **Normalizzazione:** Assicura che la somma di tutte le probabilità sia uguale a 1.
|
||||
* **Relazione con i Logits:** $f(x) = softmax(Θ^T x)$ dove $Θ^T x$ rappresenta i logits.
|
||||
|
||||
## Probabilità e Funzione di Verosimiglianza (Likelihood)
|
||||
|
||||
* **Distribuzione di Probabilità:** In un contesto di classificazione, rappresenta la probabilità che un'istanza appartenga a ciascuna delle classi.
|
||||
* **Codifica One-Hot:** Le etichette di classe $y$ sono spesso rappresentate con vettori one-hot (es. cat=[1, 0, 0], dog=[0, 1, 0], giraffe=[0, 0, 1]).
|
||||
* **Funzione di Verosimiglianza per una Singola Istanza:**
|
||||
$$
|
||||
P(y | f(x)) = Π_i [f(x)_i]^{y_i}
|
||||
$$
|
||||
dove:
|
||||
* $f(x)_i$ è la probabilità predetta per la classe $i$.
|
||||
* $y_i$ è l'elemento corrispondente nel vettore one-hot (vale 1 per la classe corretta, 0 altrimenti).
|
||||
* Solo la probabilità della classe corretta contribuisce al prodotto grazie alla codifica one-hot.
|
||||
* **Funzione di Verosimiglianza per l'Intero Dataset:**
|
||||
$$
|
||||
L = Π_n P(y^i | f(x^i))
|
||||
$$
|
||||
dove $n$ indica l'indice del campione nel dataset.
|
||||
|
||||
## Log-Verosimiglianza (Log-Likelihood) e Negative Log-Likelihood (NLL)
|
||||
|
||||
* **Log-Verosimiglianza:** È il logaritmo della funzione di verosimiglianza. Utilizzato per semplificare i calcoli e trasformare prodotti in somme.
|
||||
$$
|
||||
log L = Σ_n log P(y^i | f(x^i)) = Σ_n Σ_c y^i_c log f(x^i)_c
|
||||
$$
|
||||
* **Negative Log-Likelihood (NLL):** È l'opposto della log-verosimiglianza. Viene minimizzata durante l'addestramento.
|
||||
$$
|
||||
NLL = - log L = - Σ_n Σ_c y^i_c log f(x^i)_c
|
||||
$$
|
||||
* **Cross-Entropy:** La NLL è equivalente alla Cross-Entropy nel contesto della classificazione multiclasse con codifica one-hot.
|
||||
|
||||
## Esempio di Calcolo della Cross-Entropy
|
||||
|
||||
* Viene fornito un esempio con due istanze ($π_1$, $π_2$) e tre classi (cat, dog, giraffe).
|
||||
* Si calcola la Cross-Entropy per ciascuna istanza e poi la Cross-Entropy media $CE(Θ)$.
|
||||
* L'obiettivo è **massimizzare la probabilità della classe vera** a scapito delle altre.
|
||||
|
||||
## Instabilità Numerica del Softmax
|
||||
|
||||
* **Problema:** Il calcolo dell'esponenziale di numeri grandi può portare a overflow, mentre la somma di esponenziali può portare a underflow.
|
||||
* **Soluzione:** Sottrarre una costante $c$ (tipicamente il massimo dei logits) a ciascun logit prima di calcolare l'esponenziale.
|
||||
$$
|
||||
log(Σ_i exp(p_i)) = log(Σ_i exp(p_i - c)) + c
|
||||
$$
|
||||
* **Beneficio:** Evita che valori molto grandi influenzino negativamente l'ottimizzazione e previene l'instabilità numerica.
|
||||
|
||||
## Funzione di Costo (Loss Function)
|
||||
|
||||
* **Cross-Entropy:** La Cross-Entropy è comunemente usata come funzione di costo per la classificazione multiclasse.
|
||||
* **Alternativa (per regressione):** $-1/(2n) * (Loss)$ è menzionata come funzione di costo per la regressione (differenza dei quadrati).
|
||||
* **Normalizzazione:** La funzione di costo viene normalizzata per il numero di campioni nel dataset.
|
||||
|
||||
## Regressione Logistica Multiclasse
|
||||
|
||||
* $f(x) = softmax(Θ^T x)$ è la formulazione della regressione logistica multiclasse.
|
||||
* L'obiettivo è trovare il **miglior set di parametri $Θ$** minimizzando la funzione di costo (Cross-Entropy).
|
||||
|
||||
## Entropia, Cross-Entropy e Divergenza KL
|
||||
|
||||
* **Entropia (H(P)):** Misura l'incertezza di una distribuzione di probabilità $P$.
|
||||
$$
|
||||
H(P) = - Σ_i p_i log p_i
|
||||
$$
|
||||
* **Cross-Entropy (CE(P, Q)):** Misura l'incertezza della distribuzione $P$ quando la codifichiamo usando la distribuzione $Q$.
|
||||
$$
|
||||
CE(P, Q) = - Σ_i p_i log q_i
|
||||
$$
|
||||
* **Divergenza KL (KL(P||Q)):** Misura quanta informazione si perde quando si usa la distribuzione $Q$ al posto di $P$.
|
||||
$$
|
||||
KL(P||Q) = Σ_i p_i log (p_i / q_i)
|
||||
$$
|
||||
* **Relazione:** $CE(P, Q) = H(P) + KL(P||Q)$
|
||||
* $H(P)$: Incertezza della distribuzione vera.
|
||||
* $KL(P||Q)$: Costo aggiuntivo di usare $Q$ invece di $P$.
|
||||
|
||||
## Calibrazione del Modello
|
||||
|
||||
* **Logits vs. Probabilità:** I logits non possono essere interpretati direttamente come probabilità.
|
||||
* **Calibrazione:** Misura quanto bene le probabilità predette dal modello corrispondono alle frequenze osservate.
|
||||
* **Procedura:**
|
||||
1. Selezionare un set di validazione.
|
||||
2. Dividere l'intervallo [0, 1] in $m$ bin.
|
||||
3. $B_m$: Numero di campioni la cui confidenza cade nel bin $m$.
|
||||
4. $P_m$: Confidenza media per ciascun bin.
|
||||
5. $a_m$: Accuratezza media per ciascun bin.
|
||||
* **Expected Calibration Error (ECE):** Misura l'errore di calibrazione atteso.
|
||||
$$
|
||||
ECE = Σ_m |B_m / n| * |a_m - P_m|
|
||||
$$
|
||||
|
||||
## Iperpiani
|
||||
|
||||
* **Spazio N-dimensionale:** Un iperpiano in uno spazio N-dimensionale è un sottospazio piatto di dimensione N-1.
|
||||
* **Esempi:**
|
||||
* 2D -> Linea 1D
|
||||
* 3D -> Piano 2D
|
||||
* **Proprietà:**
|
||||
1. Possono separare linearmente le classi che sono linearmente separabili.
|
||||
2. La distanza dal campione di dati più vicino all'iperpiano è chiamata **margine**.
|
||||
|
||||
## Bias-Varianza
|
||||
|
||||
* **Underfitting:** Il modello è troppo semplice e non riesce a catturare le relazioni nei dati.
|
||||
* **Perfect-fit:** Il modello trova un buon equilibrio tra bias e varianza.
|
||||
* **Overfitting:** Il modello è troppo complesso e si adatta troppo bene ai dati di addestramento, imparando anche il rumore. Ciò porta a una scarsa generalizzazione su dati nuovi.
|
||||
* **Errore (Error):** Rappresenta la discrepanza tra la previsione del modello e il valore vero.
|
||||
* **Bias²:** Differenza tra la previsione media del modello e il valore corretto. Un bias alto indica che il modello fa ipotesi troppo semplificate.
|
||||
* **Varianza (Variance):** Variabilità della previsione del modello per un dato dataset. Alta varianza significa che il modello è sensibile alle fluttuazioni nei dati di addestramento.
|
||||
* **Capacità del Modello (Model Capacity):** La capacità del modello di apprendere relazioni complesse nei dati.
|
||||
* **Trade-off Bias-Varianza:** C'è un compromesso tra bias e varianza. Aumentare la capacità del modello generalmente riduce il bias ma aumenta la varianza, e viceversa.
|
||||
* **Errore Irriducibile (σ²):** Errore intrinseco ai dati che non può essere ridotto dal modello.
|
||||
* **Decomposizione dell'Errore Quadratico Medio (MSE):**
|
||||
$$
|
||||
E[(Y - f(X))^2] = Bias(f(X))^2 + Variance(f(X)) + σ^2
|
||||
$$
|
||||
* **Minimizzazione del Rischio:**
|
||||
* **Rischio Atteso:** Minimizzato per ottenere i parametri ottimali $Θ*$.
|
||||
* **Rischio Empirico:** Minimizzato per ottenere i parametri $Θ_hat$.
|
||||
|
||||
Spero che questi appunti ti siano utili per prepararti al tuo esame! Inserendoli in Obsidian, potrai anche collegare concetti correlati per una comprensione più approfondita. In bocca al lupo!
|
|
@ -0,0 +1,292 @@
|
|||
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 filtri $F$
|
||||
* Stride $S$
|
||||
* Padding $P$
|
||||
|
||||
### 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$, dove $rᵢ ~ 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$.
|
||||
* **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(σ²) + ε)$
|
||||
* 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:**
|
||||
1. Campiona un mini-batch dal dataset.
|
||||
2. Applica una o più trasformazioni casuali (flipping, cropping, rotazione...).
|
||||
3. 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.
|
||||
* **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 predire $xₙ$.
|
||||
* Definisce un target $Y = [x₁, x₂,..., xₙ]$ e allena il modello in modo che $Hᵢ ≈ Hᵢ₊₁$
|
||||
* Quest'ultimo funziona solo con modelli causali.
|
||||
|
||||
### Autoregressive Generation
|
||||
* Modelli allenati a prevedere il passo successivo possono essere usati per generazione autoregressiva.
|
||||
* **Funzionamento:**
|
||||
1. Inizia con una sequenza iniziale come prompt.
|
||||
2. Il modello predice il passo successivo.
|
||||
3. 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à.
|
||||
* **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)$$
|
||||
* **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.
|
||||
* **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.
|
Loading…
Add table
Add a link
Reference in a new issue