Perché i pesi del modello diventano meno spiegabili con più allenamento?

Aug 15 2020

Ad esempio, stavo usando una regressione logistica sul set di dati Fashion-MNIST. Questo sta usando sklearn, che utilizza un approccio di addestramento iterativo, e stavo sperimentando il numero di iterazioni. (Questo è senza regolarizzazione e utilizzando l'approccio "multinomiale" al multiclasse, sebbene uno contro resto produca la stessa cosa.) Ecco come appaiono i coefficienti per ogni classe, per diversi numeri di iterazioni di addestramento:

La gamma di coefficienti aumenta con il numero di iterazioni:

E qui ci sono le accuratezze di addestramento e convalida ad ogni numero di iterazioni:

Ciò che mi sorprende è che i coefficienti diventano meno spiegabili e intuitivi con più iterazioni di allenamento. Ad esempio, per le magliette, dopo un'iterazione di allenamento, i coefficienti assumono la forma di una maglietta. Ha senso intuitivo che il prodotto scalare di questo con l'immagine di una maglietta si tradurrà in un valore elevato. Tuttavia, con più iterazioni di addestramento, questa forma svanisce fino a quando i coefficienti sembrano un rumore non interpretabile. Si potrebbe sospettare che il modello sia semplicemente overfitting, ma l'accuratezza della convalida non inizia a diminuire fino a dopo l'iterazione 200, a quel punto la forma della maglietta è indistinguibile, e anche allora l'overfitting è lieve dopo quel punto.

Qual è la spiegazione di questo fenomeno? L'effetto è stato discusso in letteratura (ha un nome)?

I coefficienti dopo un gran numero di iterazioni mi ricordano i coefficienti tipicamente appresi dalle reti neurali; c'è una connessione lì?

Risposte

4 Kyle Aug 15 2020 at 11:47

Ci sono due fenomeni che si verificano qui:

  1. Questo modello apprende le funzionalità tipiche prima di apprendere funzionalità più particolari.
  2. L'overfitting si manifesta come rumore. (A partire da circa 100 iterazioni)

Le immagini del peso diventano inizialmente "meno spiegabili" perché iniziano a includere caratteristiche meno tipiche. Il peso per ogni pixel è inizializzato in modo tale che tutte le classi siano ugualmente probabili. Di conseguenza, alla prima iterazione, vengono sovrapposte tutte le immagini di allenamento della classe corretta e vengono sottratte tutte le immagini delle classi di allenamento errate. Il risultato in questo caso sembra un tipico esempio della classe. Guarda i pantaloni per esempio. Sembra una media di tutti i pantaloni perché in realtà è quello che è! [1] (Ignorando il contributo di esempi che non indossano pantaloni) Il problema è che questo fa un pessimo lavoro nell'identificare molti esempi di allenamento, ad esempio pantaloncini.

Man mano che il modello viene addestrato, gli esempi tipici vengono presto previsti con precisione, quindi hanno meno influenza sul gradiente della funzione di costo. Invece, il gradiente della funzione di costo è dettato da esempi che sono più difficili da prevedere. Quindi i cambiamenti nelle immagini del peso saranno dovuti a caratteristiche meno comuni. A meno che non studi attentamente il set di allenamento, sarebbe difficile spiegare i pesi dei pixel perché si stanno allenando su funzionalità meno tipiche.

A partire da 100 iterazioni, si ha un overfitting che è evidente dalla diminuzione dell'accuratezza della convalida e dall'aumento del rumore nelle immagini del peso. Senza regolarizzazione, qualsiasi pixel può avere un effetto arbitrariamente grande sull'attivazione di qualche classe. Sappiamo che questo è sbagliato, ma il modello non lo sa a meno che non imponiamo la regolarizzazione.

[1] Nota a piè di pagina

Per vedere che la prima iterazione si traduce in una uguale sovrapposizione di tutte le immagini sui pesi, controlla come$\theta_j$, il peso per pixel j, dipende dal valore di pixel j$x_j$dopo la prima iterazione:

$$\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}$$

$\alpha$è il tasso di apprendimento per la discesa del gradiente e la derivata parziale$\partial J(\theta)/\partial \theta_j$determina come il peso$\theta_j$i cambiamenti.

$J: \mathbb{R}^n \to \mathbb{R}$è il costo dei dati di addestramento dati i parametri nel vettore colonna$\theta$. Nel caso di regressione logistica senza regolarizzazione usiamo la log-verosimiglianza negativa. Ciò si traduce nella derivata parziale:

$$\frac{\partial J(\theta)}{\partial \theta_j} = \sum_{i\in\text{training data}} \left[\text{sigmoid}(\theta^T x^{(i)} - y^{(i)}) \right] x^{(i)}_j$$

Alla prima iterazione,$\text{sigmoid}(\theta^T x^T{(i)}) = 0.5$, e poiché tutto$y^{(i)}$deve essere uguale a 1 o 0 per esempi positivi o negativi, rispettivamente, la derivata parziale per ogni pixel è o$-0.5 x_j^{(i)}$o$0.5x_j^{(i)}$, in modo che ogni immagine si aggiunga o si sottragga ugualmente dai pesi alla prima iterazione.

$$\theta_{\text{iteration 1}} = 0.5 \alpha \left( \sum_{i \in \text{positive examples}} x^{(i)} - \sum_{i \in \text{negative examples}} x^{(i)} \right)$$

Ciò mostra che alla prima iterazione, ogni immagine di esempio ha la stessa influenza sull'immagine del peso nella direzione positiva o negativa. Dopo la prima iterazione, la probabilità per alcuni esempi sarà più vicina alla verità e quegli esempi eserciteranno meno influenza sulla derivata.