Ottimizzazione della discesa gradiente


9

Sto cercando di comprendere l'ottimizzazione della discesa gradiente negli algoritmi ML (machine learning). Capisco che esiste una funzione di costo, in cui l'obiettivo è ridurre al minimo l'errore . In uno scenario in cui i pesi vengono ottimizzati per fornire l'errore minimo e vengono utilizzate derivate parziali, cambia sia che in ogni passaggio o è una combinazione (ad esempio, in poche iterazioni viene modificato solo e quando non riduce più l'errore, la derivata inizia con )? L'applicazione potrebbe essere un modello di regressione lineare, un modello di regressione logistica o aumentare gli algoritmi.y^-yw1,w2w1w2w1w1w2

Risposte:


10

La discesa gradiente aggiorna tutti i parametri ad ogni passaggio. Puoi vederlo nella regola di aggiornamento:

w(t+1)=w(t)-ηf(w(t)).

Poiché il gradiente della funzione di perdita è valutato con un vettore con dimensione corrispondente a quella di , tutti i parametri vengono aggiornati ad ogni iterazione.f(w)w

Il tasso di apprendimento è un numero positivo che ridimensiona il gradiente. Fare un passo troppo grande può farti rimbalzare all'infinito sulla superficie della perdita senza migliorare la tua funzione di perdita; un passo troppo piccolo può significare un progresso noioso e lento verso l'ottimale.η

Sebbene sia possibile stimare i parametri di regressione lineare utilizzando la discesa gradiente, non è una buona idea.

Allo stesso modo, ci sono modi migliori per stimare i coefficienti di regressione logistica.


Quindi l'algoritmo può provare diverse combinazioni come aumento w1, diminuzione in w2base alla direzione da derivata parziale per raggiungere i minimi locali e solo per confermare che l'algoritmo non fornirà necessariamente sempre i minimi globali?
Pb89,

e la derivata parziale aiuta anche a spiegare quanto aumento o diminuzione deve essere fatto w1e / w2o ciò viene fatto dal tasso di apprendimento / riduzione mentre la derivata parziale fornisce solo la direzione di discesa?
Pb89,

Il gradiente è un vettore, quindi fornisce una direzione e una magnitudine. Un vettore può essere arbitrariamente salvato da uno scalare positivo e avrà la stessa direzione, ma il riscalaggio cambierà la sua grandezza.
Sycorax dice di reintegrare Monica il

Se il gradiente è dato anche dalla grandezza, qual è il ruolo del restringimento o del tasso di apprendimento?
Pb89

f(X)w(t)η

7

Quando l'ottimizzazione avviene attraverso derivate parziali, in ogni turno cambia sia w1 che w2 o è una combinazione come in poche iterazioni viene modificata solo w1 e quando w1 non riduce più l'errore, la derivata inizia con w2 - a raggiungere i minimi locali?

In ogni iterazione, l'algoritmo cambierà tutti i pesi contemporaneamente in base al vettore gradiente. In effetti, il gradiente è un vettore. La lunghezza del gradiente è uguale al numero dei pesi nel modello.

D'altra parte, esisteva la modifica di un parametro alla volta e si chiama algoritmo di coordinate decenti , che è un tipo di algoritmo di ottimizzazione privo di gradiente . In pratica, potrebbe non funzionare come algoritmo basato sul gradiente.

Ecco una risposta interessante sull'algoritmo privo di gradiente

È possibile addestrare una rete neurale senza backpropagation?


1

L'obiettivo della discesa gradiente è ridurre al minimo la funzione di costo. Questa minimizzazione si ottiene regolando i pesi, per il caso w1 e w2. In generale potrebbero esserci n tali pesi.

La discesa del gradiente avviene nel modo seguente:

  1. inizializzare i pesi in modo casuale.
  2. calcolare la funzione di costo e il gradiente con pesi inizializzati.
  3. aggiorna pesi: potrebbe accadere che il gradiente sia O per alcuni pesi, in quel caso quei pesi non mostrano alcun cambiamento dopo l'aggiornamento. per esempio: supponiamo che il gradiente sia [1,0], il W2 rimarrà invariato.
  4. controlla la funzione di costo con pesi aggiornati, se il decremento è abbastanza accettabile continua le iterazioni altrimenti terminano.

mentre l'aggiornamento dei pesi il cui peso (W1 o W2) viene modificato è interamente deciso dal gradiente. Tutti i pesi vengono aggiornati (alcuni pesi potrebbero non variare in base al gradiente).


"se il decremento è accettabile abbastanza continua le iterazioni altrimenti terminano", esiste un valore predefinito che viene applicato nei pacchetti di python ( sklearn) o R come caret? Può essere specificato dall'utente solo in una funzione di discesa gradiente creata manualmente?
Pb89

1

Il gradiente decente viene applicato a entrambi w1e w2per ogni iterazione. Durante ogni iterazione, i parametri sono stati aggiornati in base ai gradienti. Probabilmente avrebbero un derivato parziale diverso.

Controllare qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.