Regressione lineare: discesa del gradiente

La discesa del gradiente è una tecnica matematica che trova in modo iterativo i pesi e i bias che producono il modello con la perdita più bassa. La discesa del gradiente trova il peso e il bias migliori ripetendo la seguente procedura per un numero di iterazioni definite dall'utente.

Il modello inizia l'addestramento con pesi e bias casuali vicini allo zero, quindi ripete i seguenti passaggi:

  1. Calcola la perdita con il peso e il bias attuali.

  2. Determinare la direzione di spostamento delle ponderazioni e dei bias che riducono la perdita.

  3. Sposta i valori di peso e bias di una piccola quantità nella direzione che riduce la perdita.

  4. Torna al passaggio 1 e ripeti la procedura finché il modello non può ridurre ulteriormente la perdita.

Il diagramma seguente illustra i passaggi iterativi eseguiti dalla discesa del gradiente per trovare i pesi e i bias che producono il modello con la perdita più bassa.

Figura 12. Illustrazione del processo di discesa del gradiente.

Figura 12. La discesa del gradiente è un processo iterativo che trova i pesi e i bias che producono il modello con la perdita più bassa.

Fai clic sull'icona Più per saperne di più sulla matematica alla base della discesa del gradiente.

A livello concreto, possiamo percorrere i passaggi della discesa del gradiente utilizzando un piccolo set di dati con sette esempi di pesantezza di un'auto in libbre e delle sue miglia per gallone:

Sterline in migliaia (funzionalità) Miglia per gallone (etichetta)
3,5 18
3,69 15
3,44 18
3,43 16
4,34 15
4,42 14
2,37 24
  1. Il modello inizia l'addestramento impostando ponderazione e bias su zero:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. Calcola la perdita MSE con i parametri del modello attuali:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. Calcola la tangente alla funzione di perdita in corrispondenza di ogni peso e della bias:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    Fai clic sull'icona Più per scoprire di più sul calcolo della pendenza.

    Per ottenere la pendenza delle linee tangenti al peso e al bias, calcoliamo la derivata della funzione di perdita rispetto al peso e al bias, quindi risolviamo le equazioni.

    Scriveremo l'equazione per fare una previsione come:
    $ f_{w,b}(x) = (w*x)+b $.

    Scriveremo il valore effettivo come: $ y $.

    Calcoleremo l'errore medio quadratico utilizzando:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    dove $i$ rappresenta l'esempio di addestramento $i$ e $M$ rappresenta il numero di esempi.

    Derivato del peso

    La derivata della funzione di perdita rispetto al peso è scritta come:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    e restituisce:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    Per prima cosa sommiamo ogni valore previsto meno il valore effettivo e poi lo moltiplichiamo per due volte il valore della caratteristica. Poi dividiamo la somma per il numero di esempi. Il risultato è la pendenza della linea tangente al valore della ponderazione.

    Se risolviamo questa equazione con ponderazione e bias uguali a zero, otteniamo -119,7 per la pendenza della retta.

    Derivata del bias

    La derivata della funzione di perdita rispetto al bias è scritta come:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    e restituisce:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    Innanzitutto sommiamo ogni valore previsto meno il valore effettivo e poi lo moltiplichiamo per due. Quindi dividiamo la somma per il numero di esempi. Il risultato è la tangente della linea al valore della distorsione.

    Se risolviamo questa equazione con ponderazione e bias uguali a zero, otteniamo -34,3 per la pendenza della retta.

  7. Sposta una piccola quantità nella direzione della pendenza negativa per ottenere il peso e la bias successivi. Per il momento, definiamo arbitrariamente "importo ridotto" come 0,01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

Utilizza il nuovo peso e il nuovo bias per calcolare la perdita e ripeti. Completando il processo per sei iterazioni, otterremmo i seguenti valori di ponderazioni, bias e perdite:

Iterazione Peso Bias Perdita (MSE)
1 0 0 303,71
2 1,2 0,34 170,67
3 2,75 0,59 67,3
4 3,17 0,72 50,63
5 3,47 0,82 42.1
6 3,68 0,9 37,74

Puoi vedere che la perdita diminuisce con ogni aggiornamento del peso e del bias. In questo esempio, ci siamo fermati dopo sei iterazioni. In pratica, un modello viene addestrato finché non converge. Quando un modello converge, le iterazioni aggiuntive non riducono ulteriormente la perdita perché la discesa del gradiente ha trovato i pesi e i bias che minimizzano quasi completamente la perdita.

Se il modello continua ad addestrare oltre la convergenza, la perdita inizia a fluttuare in piccole quantità mentre il modello aggiorna continuamente i parametri attorno ai valori più bassi. Ciò può rendere difficile verificare che il modello sia effettivamente convergente. Per confermare che il modello sia convergente, devi continuare l'addestramento finché la perdita non si è stabilizzata.

Convergienza del modello e curve di perdita

Durante l'addestramento di un modello, spesso si osserva una curva di perdita per determinare se il modello è convergente. La curva di perdita mostra come cambia la perdita durante l'addestramento del modello. Di seguito è riportata una tipica curva di perdita. La perdita è sull'asse y e le iterazioni sono sull'asse x:

Figura 13. Grafico della curva di perdita che mostra un forte calo e poi un calo graduale.

Figura 13. Curva di perdita che mostra la convergenza del modello intorno al contrassegno dell'iterazione 1000.

Puoi notare che la perdita diminuisce drasticamente durante le prime iterazioni, poi diminuisce gradualmente prima di stabilizzarsi intorno al millesimo. Dopo 1000 iterazioni, possiamo essere quasi certi che il modello sia convergente.

Nelle figure seguenti, il modello viene disegnato in tre punti durante il processo di addestramento: all'inizio, nel mezzo e alla fine. La visualizzazione dello stato del modello in snapshot durante il processo di addestramento rafforza il collegamento tra l'aggiornamento di ponderazioni e bias, la riduzione della perdita e la convergenza del modello.

Nelle figure, utilizziamo le ponderazioni e i bias derivati in una determinata iterazione per rappresentare il modello. Nel grafico con i punti dati e lo snapshot del modello, le linee di perdita blu dal modello ai punti dati mostrano l'entità della perdita. Più lunghe sono le linee, maggiore è la perdita.

Nella figura seguente, possiamo vedere che intorno alla seconda iterazione il modello non sarebbe in grado di fare buone previsioni a causa dell'elevata quantità di perdita.

Figura 14. Curva di perdita e grafico corrispondente del modello, inclinato in allontanamento dai punti dati.

Figura 14. Curva di perdita e snapshot del modello all'inizio del processo di addestramento.

Intorno alla 400a iterazione, possiamo vedere che la discesa del gradiente ha trovato il peso e il bias che producono un modello migliore.

Figura 15. Curva di perdita e grafico corrispondente del modello, che interseca i punti dati, ma non con l'angolo ottimale.

Figura 15. Curva di perdita e istantanea del modello circa a metà dell'addestramento.

Intorno alla millesima iterazione, possiamo vedere che il modello è convergente, producendo un modello con la perdita più bassa possibile.

Figura 16. Curva di perdita e grafico corrispondente del modello, che si adatta bene ai dati.

Figura 16. Curva di perdita e snapshot del modello verso la fine del processo di addestramento.

Esercizio: verifica la tua comprensione

Qual è il ruolo della discesa del gradiente nella regressione lineare?
La discesa del gradiente è un processo iterativo che trova le ponderazioni e i bias migliori per minimizzare la perdita.
La discesa del gradiente aiuta a determinare il tipo di perdita da utilizzare durante l'addestramento di un modello, ad esempio L1 o L2.
La discesa del gradiente non è coinvolta nella selezione di una funzione di perdita per l'addestramento del modello.
La discesa del gradiente rimuove gli outlier dal set di dati per aiutare il modello a fare previsioni migliori.
La discesa del gradiente non modifica il set di dati.

Convergienza e funzioni convesse

Le funzioni di perdita per i modelli lineari producono sempre una superficie convessa. In virtù di questa proprietà, quando un modello di regressione lineare converge, sappiamo che ha trovato i pesi e i bias che producono la perdita più bassa.

Se rappresentiamo la superficie di perdita di un modello con una sola funzionalità, possiamo vedere la sua forma convessa. Di seguito è riportata la superficie di perdita del set di dati miglia per gallone utilizzata negli esempi precedenti. Il peso è sull'asse x, il bias sull'asse y e la perdita sull'asse z:

Figura 17. Grafico 3D della superficie di perdita.

Figura 17. Superficie di perdita che mostra la sua forma convessa.

In questo esempio, un peso di -5,44 e un bias di 35,94 producono la perdita minima di 5,54:

Figura 18. Grafico 3D della superficie di perdita, con (-5,44, 35,94, 5,54) in basso.

Figura 18. Superficie di perdita che mostra i valori di peso e bias che producono la perdita più bassa.

Un modello lineare converge quando trova la perdita minima. Pertanto, le iterazioni aggiuntive fanno sì che la discesa del gradiente sposti i valori di peso e bias solo in misura molto ridotta intorno al minimo. Se tracciamo in un grafico i pesi e i punti bias durante la discesa del gradiente, i punti sarebbero come una palla che rotola giù da una collina, fino a fermarsi nel punto in cui non c'è più pendenza verso il basso.

Figura 19. Superficie di perdita convessa 3D con punti di discesa del gradiente che si spostano verso il punto più basso.

Figura 19. Grafico di perdita che mostra i punti di discesa del gradiente che si arrestano al punto più basso del grafico.

Tieni presente che i punti di perdita neri creano la forma esatta della curva di perdita: un declino brusco prima di scendere gradualmente fino a raggiungere il punto più basso della superficie di perdita.

È importante notare che il modello non trova quasi mai il minimo esatto per ogni ponderazione e bias, ma trova un valore molto vicino. È inoltre importante notare che il minimo per i pesi e il bias non corrisponde a una perdita pari a zero, ma solo a un valore che produce la perdita più bassa per quel parametro.

Utilizzando i valori di peso e bias che producono la perdita più bassa, in questo caso un peso di -5,44 e un bias di 35,94, possiamo tracciare il grafico del modello per vedere quanto bene si adatta ai dati:

Figura 20. Grafico di chilogrammi in migliaia rispetto a miglia per gallone, con il modello che adatta i dati.

Figura 20. Modello tracciato utilizzando i valori di peso e bias che producono la perdita più bassa.

Questo sarebbe il modello migliore per questo set di dati perché nessun altro valore di peso e bias produce un modello con una perdita inferiore.