Leggi del movimento di Newton: la discesa del gradiente originale |  di Rodrigo Silva |  Dicembre 2023

 | Intelligenza-Artificiale

Esplorare il linguaggio condiviso della discesa del gradiente e delle equazioni del moto di Newton

fotografato da Luddmyla. SU Unsplash

Ricordo il primo corso sull’apprendimento automatico che ho seguito durante gli studi universitari come studente di fisica presso la facoltà di ingegneria. In altre parole, ero un outsider. Mentre il professore spiegava l’algoritmo di backpropagation tramite la discesa del gradiente, avevo questa domanda un po’ vaga nella mia testa: “La discesa del gradiente è un algoritmo casuale?” Prima di alzare la mano per chiedere al professore, l’ambiente non familiare mi ha fatto riflettere due volte; Mi sono rimpicciolito un po’. All’improvviso, la risposta mi colpì.

Ecco cosa ho pensato.

Per dire cos’è la discesa del gradiente, dobbiamo prima definire il problema dell’addestramento di una rete neurale, e possiamo farlo con una panoramica di come le macchine apprendono.

Panoramica dell’addestramento di una rete neurale

In tutte le attività supervisionate della rete neurale, abbiamo una previsione e il valore reale. Maggiore è la differenza tra la previsione e il valore reale, peggiore è la nostra rete neurale quando si tratta di prevedere i valori. Quindi, creiamo una funzione chiamata the funzione di perdita, solitamente indicato come lche quantifica quanta differenza c’è tra il valore effettivo e il valore previsto. Il compito dell’addestramento della rete neurale è aggiornare i pesi e i bias (in breve, i parametri) per ridurre al minimo la funzione di perdita. Questo è il quadro generale dell’addestramento di una rete neurale e “apprendimento” consiste semplicemente nell’aggiornare i parametri per adattarli al meglio ai dati effettivi, ovvero ridurre al minimo la funzione di perdita.

Ottimizzazione tramite discesa del gradiente

La discesa del gradiente è una delle tecniche di ottimizzazione utilizzate per calcolare questi nuovi parametri. Poiché il nostro compito è scegliere i parametri per minimizzare la funzione di perdita, abbiamo bisogno di un criterio per tale scelta. La funzione di perdita che stiamo cercando di minimizzare è una funzione dell’output della rete neurale, quindi matematicamente la esprimiamo come L = L(sì_nn, sì). Ma l’output della rete neurale sì_nn dipende anche dai suoi parametri, quindi sì_nn = sì_nn(io), Dove io è un vettore contenente tutti i parametri della nostra rete neurale. In altre parole, la stessa funzione di perdita è una funzione dei parametri delle reti neurali.

Prendendo in prestito alcuni concetti dal calcolo vettoriale, sappiamo che per minimizzare una funzione è necessario andare contro di essa pendenzapoiché il gradiente punta nella direzione dell’aumento più rapido della funzione. Per avere un po’ di intuizione, diamo un’occhiata a ciò che L(io) potrebbe apparire come in Fig. 1.

Figura 1: visualizzazione della superficie L(w1,w2) in funzione di w1 e w2. Immagine dell’autore.

Qui abbiamo una chiara intuizione di cosa è desiderabile e cosa non lo è quando si addestra una rete neurale: vogliamo che i valori della funzione di perdita siano più piccoli, quindi se iniziamo con i parametri w1 e w2 che risultano in una funzione di perdita nel regione gialla/arancione, vogliamo scivolare verso la superficie in direzione della regione viola.

Questo movimento di “scivolamento verso il basso” si ottiene attraverso il metodo della discesa gradiente. Se ci troviamo nella regione più luminosa della superficie, il gradiente continuerà a puntare verso l’alto, poiché è la direzione dell’aumento più rapido. Poi, andando nella direzione opposta (quindi, gradient discesa) crea un movimento nella regione di decrescita massimamente rapida.

Per vederlo, possiamo tracciare il vettore di discesa del gradiente, come mostrato in Fig. 2. In questa figura, abbiamo un diagramma di contorno che mostra la stessa regione e la stessa funzione visualizzate in Fig. 1, ma i valori della funzione di perdita sono ora codificati nel colore: più sono luminosi, più sono grandi.

Figura 2: grafico del contorno che mostra il vettore che punta nella direzione della discesa del gradiente. Immagine dell’autore.

Possiamo vedere che se prendiamo un punto nella regione gialla/arancione, il vettore di discesa del gradiente punta nella direzione che arriva più velocemente nella regione viola.

Un simpatico disclaimer è che solitamente una rete neurale può contenere un numero arbitrariamente elevato di parametri (GPT 3 ha oltre 100 miliardi di parametri!), il che significa che queste belle visualizzazioni sono completamente poco pratiche nelle applicazioni della vita reale e l’ottimizzazione dei parametri nelle reti neurali è di solito un problema di dimensione molto elevata.

Matematicamente, l’algoritmo di discesa del gradiente è quindi dato da

Qui, io_(n+1) sono i parametri aggiornati (il risultato dello scivolamento lungo la superficie di Fig. 1); io_(n) sono i parametri con cui abbiamo iniziato; ρ è chiamato tasso di apprendimento (quanto è grande il passo verso la direzione in cui punta la discesa del gradiente); e ∇L è il gradiente della funzione di perdita calcolata nel punto iniziale io_(N). Cosa dà il nome discesa ecco il segno meno davanti ad esso.

La matematica è fondamentale qui perché vedremo che la Seconda Legge del Moto di Newton ha la stessa formulazione matematica dell’equazione della discesa del gradiente.

La seconda legge del moto di Newton è probabilmente uno dei concetti più importanti della meccanica classica poiché spiega come forza, massa e accelerazione sono legate insieme. Tutti conoscono la formulazione scolastica della seconda legge di Newton:

dove F è la forza, m è la massa e a l’accelerazione. Tuttavia, la formulazione originale di Newton era in termini di una quantità più profonda: quantità di moto. La quantità di moto è il prodotto tra la massa e la velocità di un corpo:

e può essere interpretato come il quantità di movimento di un corpo. L’idea alla base della seconda legge di Newton è che per cambiare la quantità di moto di un corpo, è necessario disturbarlo in qualche modo, e questo disturbo è chiamato forza. Quindi, una formulazione accurata della seconda legge di Newton è

Questa formulazione funziona per ogni forza a cui puoi pensare, ma vorremmo un po’ più di struttura nella nostra discussione e, per ottenere struttura, dobbiamo limitare il nostro dominio di possibilità. Parliamo di forze e potenziali conservativi.

Forze e potenziali conservativi

Una forza conservativa è una forza che non dissipa energia. Ciò significa che, quando siamo in un sistema in cui sono coinvolte solo forze conservative, l’energia totale è una costante. Ciò può sembrare molto restrittivo, ma in realtà le forze più fondamentali in natura sono conservatrici, come la gravità e la forza elettrica.

Ad ogni forza conservativa associamo qualcosa chiamato a potenziale. Questo potenziale è correlato alla forza tramite l’equazione

in una dimensione. Se osserviamo più da vicino le ultime due equazioni presentate, arriviamo alla seconda legge della dinamica per campi conservativi:

Dato che le derivate sono piuttosto complicate da gestire, e in informatica approssimiamo comunque le derivate come differenze finite, sostituiamo le d con Δ:

Sappiamo che Δ significa “prendi il valore aggiornato e sottrai il valore corrente”. Quindi, possiamo riscrivere la formula sopra come

Sembra già abbastanza simile all’equazione della discesa del gradiente mostrata in alcune righe sopra. Per renderlo ancora più simile, non ci resta che guardarlo in tre dimensioni, dove il gradiente si presenta in modo naturale:

Vediamo una chiara corrispondenza tra la discesa del gradiente e la formulazione sopra riportata, che deriva completamente dalla fisica newtoniana. La quantità di moto di un corpo (e puoi leggerla come velocità se preferisci) punterà sempre verso la direzione in cui il potenziale diminuisce più velocemente, con una dimensione del passo data da Δt.

Quindi possiamo mettere in relazione il potenziale, all’interno della formulazione newtoniana, con la funzione di perdita nell’apprendimento automatico. Il vettore della quantità di moto è simile al vettore dei parametri, che stiamo cercando di ottimizzare, e la costante del passo temporale è il tasso di apprendimento, ovvero la velocità con cui ci stiamo muovendo verso il minimo della funzione di perdita. Quindi, la formulazione matematica simile mostra che questi concetti sono legati insieme e presentano un modo piacevole e unificato di guardarli.

Se te lo stai chiedendo, la risposta alla mia domanda iniziale è “no”. Non c’è casualità nell’algoritmo di discesa del gradiente poiché replica ciò che la natura fa ogni giorno: la traiettoria fisica di una particella cerca sempre di trovare un modo per riposarsi nel minor potenziale possibile attorno ad essa. Se lasci cadere una pallina da una certa altezza, avrà sempre la stessa traiettoria, senza casualità. Quando vedi qualcuno su uno skateboard che scivola lungo una rampa ripida, ricorda: è letteralmente la natura che applica l’algoritmo di discesa del gradiente.

Il modo in cui vediamo un problema può influenzarne la soluzione. In questo articolo, non ti ho mostrato nulla di nuovo in termini di informatica o fisica (in effetti, la fisica qui presentata ha circa 400 anni), ma spostare la prospettiva e legare insieme concetti (apparentemente) non correlati può creare nuovi collegamenti e intuizioni su un argomento.

(1) Robert Kwiatkowski, Algoritmo di discesa del gradiente: un’immersione profonda2021.

(2) Nivaldo A. Lemos, Meccanica analitica, Cambridge University Press, 2018.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *