le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
L’ottimizzazione stocastica è una componente vitale dell’apprendimento automatico e al suo centro c’è l’algoritmo di discesa del gradiente stocastico (SGD), un metodo ampiamente utilizzato da quando è stato proposto per la prima volta più di 60 anni fa. Negli ultimi otto anni abbiamo assistito a un nuovo entusiasmante sviluppo: tecniche di riduzione della varianza per metodi di ottimizzazione stocastica. Questi metodi di riduzione della varianza (metodi VR) funzionano bene in scenari che consentono più iterazioni dei dati di addestramento, mostrando una convergenza più rapida rispetto all'SGD, sia in teoria che in pratica. Questo aumento di velocità evidenzia il crescente interesse per i metodi VR e il rapido accumulo di risultati della ricerca in questo settore. Questo articolo esamina i principi chiave e i principali progressi nei metodi VR per l'ottimizzazione di set di dati limitati, con l'obiettivo di informare i lettori non esperti. Ci concentriamo principalmente sugli ambienti di ottimizzazione convessi e forniamo un riferimento per i lettori interessati alle estensioni alla minimizzazione delle funzioni non convesse.
Parole chiave |.Apprendimento automatico;riduzione della varianza
Nel campo della ricerca sull’apprendimento automatico, una questione fondamentale e importante è come adattare i modelli a enormi set di dati. Ad esempio, possiamo considerare il caso tipico di un modello lineare dei minimi quadrati:
x ∗ ∈ arg min x ∈ R d 1 n ∑ i = 1 n ( ai T x − bi ) 2 x^* in argmin_{x in mathbb{R}^d} frac{1}{n} sum_{i=1}^{n} (a_i^T x - b_i)^2X∗∈essoGX∈RDminimoimoimoimoN1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N(UNioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooTX−Biooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo)2
In questo modello abbiamo ggD parametri, rappresentati da vettori x ∈ R dx in matematica bb{R}^dX∈RD dato.Nel frattempo, abbiamo a portata di mano non-negligenzaN punti dati, inclusi i vettori delle caratteristiche ai ∈ R d a_i in mathbb{R}^dUNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈RD e valore obiettivo bi ∈ R b_i in mathbb{R}Biooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈R .Il processo di adattamento del modello consiste nel regolare questi parametri in modo che l'output previsto del modello ai T x a_i^T xUNioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooTX in media il più vicino possibile al valore target bi biBiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo。
Più in generale, potremmo utilizzare una funzione di perdita per(x)Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Per misurare le previsioni del modello e il io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Quanto sono vicini i punti dati:
x ∗ ∈ arg min x ∈ R df ( x ) : = 1 n ∑ i = 1 nfi ( x ) x^* in argmin_{x in mathbb{R}^d} f(x) := frac{1}{n} sum_{i=1}^{n} f_i(x)X∗∈essoGX∈RDminimoimoimoimoF(X):=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑NFiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)
funzione di perdita per(x)Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Se è maggiore, indica che le previsioni del modello si discostano notevolmente dai dati; per(x)Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Uguale a zero, il modello si adatta perfettamente ai punti dati.funzione la f(x)F(X) Riflette la perdita media del modello sull'intero set di dati.
Problemi come la forma (2) di cui sopra si applicano non solo ai problemi dei minimi quadrati lineari, ma anche a molti altri modelli studiati nell'apprendimento automatico. Ad esempio, in un modello di regressione logistica risolviamo per:
x ∗ ∈ arg min x ∈ R d 1 n ∑ i = 1 n log ( 1 + e − biai T x ) + λ 2 ∥ x ∥ 2 2 x^* in argmin_{x in mathbb{R}^d} frac{1}{n} sum_{i=1}^{n} log(1 + e^{-b_i a_i^T x}) + frac{lambda}{2} |x|_2^2X∗∈essoGX∈RDminimoimoimoimoN1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑NIoG(1+e−BioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooUNioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooTX)+2λ∥X∥22
Qui abbiamo a che fare bi ∈ { − 1 , + 1 } b_i in {-1, +1}Biooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈{−1,+1} Per un problema di classificazione binaria, la previsione si basa su ai T x a_i^T xUNioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooTX simboli.Nella formula è introdotto anche un termine di regolarizzazione λ 2 ∥ x ∥ 2 2 frac{lambda}{2} |x|_2^22λ∥X∥22 per evitare di adattare eccessivamente i dati, dove ∥ x ∥ 2 2 |x|_2^2∥X∥22 esprimere XXIX Il quadrato della norma euclidea di .
Nella maggior parte dei modelli di apprendimento supervisionato, il processo di addestramento può essere espresso come forma (2), inclusi i minimi quadrati regolarizzati L1, la Support Vector Machine (SVM), l'analisi delle componenti principali, i campi casuali condizionali e le reti neurali profonde, ecc.
Una sfida chiave nei casi di problemi moderni è il numero di punti dati non-negligenzaN Probabilmente estremamente grande. Spesso abbiamo a che fare con set di dati che vanno ben oltre la portata dei terabyte e possono provenire da fonti diverse come Internet, satelliti, sensori remoti, mercati finanziari ed esperimenti scientifici. Per gestire insiemi di dati così grandi, un approccio comune consiste nell'utilizzare l'algoritmo SGD (stochastic gradient descend), che utilizza solo un piccolo numero di punti dati selezionati casualmente in ciascuna iterazione. Inoltre, recentemente si è verificato un forte aumento dell’interesse per i metodi del gradiente stocastico di riduzione della varianza (VR), che hanno tassi di convergenza più rapidi rispetto ai tradizionali metodi del gradiente stocastico.
Figura 1. Sul problema della regressione logistica basato sul set di dati dei funghi [7], la discesa del gradiente (GD), la discesa del gradiente accelerata (AGD, GD accelerato in [50]), la discesa del gradiente stocastico (SGD) e il metodo ADAM [30] sono stati rispetto ai metodi di riduzione della varianza (VR) SAG e SVRG, dove n = 8124, d = 112.
La discesa del gradiente (GD) è un algoritmo classico utilizzato per risolvere il problema di cui sopra (2) e la sua formula di aggiornamento iterativo è la seguente:
xk + 1 = xk − γ 1 n ∑ i = 1 n ∇ fi ( xk ) x_{k+1} = x_k - gamma frac{1}{n} sum_{i=1}^{n} nabla f_i(x_k)XK+1=XK−γN1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)
Qui, gammaγ è un valore di passo fisso maggiore di zero.Durante ogni iterazione dell'algoritmo GD, ciascun punto dati deve essere io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Calcola il gradiente ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK), il che significa che GD richiede tutto non-negligenzaN eseguire un attraversamento completo dei punti dati.Quando la dimensione del set di dati non-negligenzaN Quando diventa molto grande, il costo di ogni iterazione dell’algoritmo GD diventa molto alto, limitandone così l’applicazione.
In alternativa, possiamo considerare il metodo della discesa del gradiente stocastico (SGD), proposto per la prima volta da Robbins e Monro, e la sua formula di aggiornamento iterativo è la seguente:
xk + 1 = xk − γ ∇ fik ( xk ) x_{k+1} = x_k - gamma nabla f_{i_k}(x_k)XK+1=XK−γ∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)
L'algoritmo SGD funziona utilizzando solo il gradiente di un punto dati selezionato casualmente in ciascuna iterazione. ∇ fik ( xk ) nabla f_{i_k}(x_k)∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK) per ridurre il costo di ogni iterazione. Nella Figura 1, possiamo vedere che SGD ottiene progressi più significativi rispetto a GD (compresi i metodi GD accelerati) nelle prime fasi del processo di ottimizzazione.Il grafico mostra l'avanzamento dell'ottimizzazione in termini di epoche, definite come il calcolo di tutti non-negligenzaN Il numero di gradienti per l'addestramento dei campioni. L'algoritmo GD esegue un'iterazione in ogni round, mentre l'algoritmo SGD esegue un'iterazione in ogni round non-negligenzaN iterazioni.Usiamo i round come base per confrontare SGD e GD, perché presupponiamo non-negligenzaN In casi molto ampi, il costo principale di entrambi i metodi è concentrato nel gradiente ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) calcolo.
Consideriamo l'indicizzazione casuale io lo soioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK dalla raccolta { 1 , … , n } {1, puntini, n}{1,…,N} Nel caso della selezione casuale uniforme, ciò significa che per tutti io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo,scegliere io = io i_k = ioioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK=iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo La probabilità P [ ik = i ] P[i_k = i]P[ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK=iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo] pari 1 n frazione{1}{n}N1 . in questo caso, ∇ fik ( xk ) nabla f_{i_k}(x_k)∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK) COME ∇ f ( xk ) nabla f(x_k)∇F(XK) Lo stimatore di è imparziale perché, per la definizione di aspettativa, abbiamo:
E [ ∇ fik ( xk ) ∣ xk ] = 1 n ∑ i = 1 n ∇ fi ( xk ) = ∇ f ( xk ) ( 6 ) E[nabla f_{i_k}(x_k) | x_k] = frazione {1} {n} somma_{i=1}^{n} nabla f_i(x_k) = nabla f(x_k) quad (6)E[∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)∣XK]=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)=∇F(XK)(6)
Sebbene il metodo SGD (Stochastic Gradient Descent) non garantisca il funzionamento in ogni iterazione eff.F Il valore di diminuirà, ma in media si sposta verso il gradiente pieno negativo, che rappresenta la direzione verso il basso.
Tuttavia, disporre di uno stimatore del gradiente imparziale non è sufficiente per garantire la convergenza delle iterazioni SGD. Per illustrare questo punto, la Figura 2 (a sinistra) mostra la traiettoria iterativa di SGD quando si applica una funzione di regressione logistica utilizzando una dimensione del passo costante sul set di dati a quattro categorie fornito da LIBSVM [7].Le ellissi concentriche nella figura rappresentano i contorni della funzione, cioè il valore della funzione f(x) = cf(x) = cF(X)=C punto corrispondente XXIX raccogliere, c.c.C è una costante specifica nell'insieme dei numeri reali.valori costanti diversi c.c.C Corrisponde a diverse ellissi.
La traiettoria iterativa di SGD non converge alla soluzione ottima (indicata da un asterisco verde in figura), ma forma una nuvola di punti attorno alla soluzione ottima. Al contrario, mostriamo nella Figura 2 la traiettoria iterativa di un metodo di riduzione della varianza (VR), gradiente medio stocastico (SAG), utilizzando la stessa dimensione del passo costante, che introdurremo più avanti. Il motivo per cui SGD non riesce a convergere in questo esempio è che il gradiente stocastico stesso non converge a zero e, pertanto, il metodo SGD a passo costante (5) non si ferma mai.Ciò è in netto contrasto con i metodi di discesa del gradiente (GD), che naturalmente si fermano come xk x_kXK Si avvicina x ∗ x^*X∗,pendenza ∇ f ( xk ) nabla f(x_k)∇F(XK) tenderà a zero.
Figura 2. Grafici di set di livelli per la regressione logistica bidimensionale utilizzando metodi iterativi SGD a passo fisso (a sinistra) e SAG (a destra). L'asterisco verde indica xsciogliere.
elaborazione dovuta a ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) Esistono diverse tecniche classiche per problemi di non convergenza causati dalla varianza dei valori.Ad esempio, Robbins e Monro [64] utilizzano una serie di passi decrescenti γ k gamma_kγK per risolvere il problema della varianza, garantendo che il prodotto γ k ∇ fik ( xk ) gamma_k nabla f_{i_k}(x_k)γK∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK) può convergere a zero. Tuttavia, regolare questa sequenza di passaggi decrescenti per evitare di fermare l’algoritmo troppo presto o troppo tardi è un problema difficile.
Un'altra tecnica classica per ridurre la varianza è utilizzare multipli ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) media per ottenere il gradiente completo ∇ f ( x ) nabla f(x)∇F(X) una stima più accurata. Questo approccio è chiamato minibatch ed è particolarmente utile quando è possibile valutare più gradienti in parallelo. Ciò si traduce in un'iterazione del modulo:
xk + 1 = xk − γ 1 ∣ B k ∣ ∑ i ∈ B k ∇ fi ( xk ) ( 7 ) x_{k+1} = x_k - gamma frac{1}{|B_k|} sum_{i in B_k} nabla f_i(x_k) quad (7)XK+1=XK−γ∣BK∣1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈BK∑∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)(7)
In Bk B_kBK è un insieme di indici casuali, |B_k|∣BK∣ esprimere Bk B_kBK la dimensione di.Se Bk B_kBK Campionando uniformemente con sostituzione, la varianza di questa stima del gradiente è correlata alla "dimensione del batch" |B_k|∣BK∣ è inversamente proporzionale, quindi la varianza può essere ridotta aumentando la dimensione del lotto.
Tuttavia, il costo di tali iterazioni è proporzionale alla dimensione del batch, quindi questa forma di riduzione della varianza comporta un aumento dei costi computazionali.
Un’altra strategia comune per ridurre la varianza e migliorare la performance empirica dell’SGD è aggiungere “slancio”, un termine aggiuntivo basato sulla direzione utilizzata nei passaggi precedenti. In particolare, la forma dell’SGD con momentum è la seguente:
xk + 1 = xk − γ mk ( 9 ) x_{k+1} = x_k - gamma m_k quad (9)XK+1=XK−γMK(9)
dove il parametro della quantità di moto beta-betaβ Situato nell'intervallo (0, 1).Se lo slancio iniziale m 0 = 0 m_0 = 0M0=0, ed espandere in (8) mk m_kMK Per gli aggiornamenti, otteniamo mk m_kMK è la media ponderata dei gradienti precedenti:
mk = ∑ t = 0 k β k − t ∇ fit ( xt ) ( 10 ) m_k = sum_{t=0}^{k} beta^{kt} nabla f_{i_t}(x_t) quad (10)MK=T=0∑KβK−T∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooT(XT)(10)
Perciò, mk m_kMK è la somma ponderata dei gradienti stocastici.Perché ∑ t = 0 k β k − t = 1 − β k + 1 1 − β somma_{t=0}^{k} beta^{kt} = frazione{1 - beta^{k+1}}{1 - beta}∑T=0KβK−T=1−β1−βK+1, possiamo convertirci 1 − β 1 − β kmk frazione {1 - beta}{1 - beta^k} m_k1−βK1−βMK Considerato come media ponderata dei gradienti stocastici.Se confrontiamo questo con l'espressione per il gradiente completo ∇ f ( xk ) = 1 n ∑ i = 1 n ∇ fi ( xk ) quindi f(x_k) = frazione{1}{n} somma_{i=1}^{n} quindi f_i(x_k)∇F(XK)=N1∑iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1N∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) Per confrontare, possiamo 1 − β 1 − β kmk frazione {1 - beta}{1 - beta^k} m_k1−βK1−βMK(così come mk m_kMK ) viene interpretato come una stima del gradiente completo. Sebbene questa somma ponderata riduca la varianza, solleva anche questioni chiave.Poiché la somma ponderata (10) dà più peso ai gradienti recentemente campionati, non convergerà al gradiente completo ∇ f ( xk ) nabla f(x_k)∇F(XK) , quest'ultima è una media semplice. Il primo metodo di riduzione della varianza che vedremo nella Sezione II-A risolve questo problema utilizzando una media semplice invece di una media ponderata.
A differenza dei metodi classici, ne utilizzano direttamente uno o più ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) COME ∇ f ( xk ) nabla f(x_k)∇F(XK) In approssimazione, i moderni metodi di riduzione della varianza (VR) utilizzano una strategia diversa.Questi metodi utilizzano ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) per aggiornare la stima del gradiente gk g_kGK, il cui obiettivo è realizzare gk g_kGK approccio ∇ f ( xk ) nabla f(x_k)∇F(XK) .Nello specifico, speriamo gk g_kGK in grado di soddisfare gk ≈ ∇ f ( xk ) g_k circa nabla f(x_k)GK≈∇F(XK) . Sulla base di tali stime del gradiente, eseguiamo quindi un passaggio approssimativo del gradiente del modulo:
xk + 1 = xk − γ gk ( 11 ) x_{k+1} = x_k - gamma g_k quad (11)XK+1=XK−γGK(11)
Qui γ > 0 gamma > 0γ>0 è il parametro della dimensione del passo.
Per garantire che venga utilizzata una dimensione del passo costante gammaγ Quando l'iterazione (11) può convergere, dobbiamo garantire che la stima del gradiente gk g_kGK La varianza tende a zero. Matematicamente, questo può essere espresso come:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] → 0 come k → ∞ ( 12 ) Eleft[ | g_k - nabla f(x_k) |^2 destra] rightarrow 0 quad text{as } k rightarrow infty quad (12)E[∥GK−∇F(XK)∥2]→0COMEK→∞(12)
aspettative qui EEE si basa sull'algoritmo fino al ciaoK Tutte le variabili casuali vengono calcolate per le iterazioni. La proprietà (12) garantisce che il metodo VR possa essere interrotto quando viene raggiunta la soluzione ottima. Consideriamo questa proprietà come una caratteristica distintiva dell'approccio VR e quindi la chiamiamo proprietà VR. È bene notare che l'espressione varianza “ridotta” può essere fuorviante, perché in realtà la varianza tende a zero. La proprietà (12) è un fattore chiave che consente ai metodi VR di raggiungere una convergenza più rapida in teoria (sotto i presupposti appropriati) e in pratica (come mostrato nella Figura 1).
Un semplice metodo di miglioramento può far sì che la formula ricorsiva SGD (5) raggiunga la convergenza senza ridurre la dimensione del passo, ovvero traslare ciascun gradiente. Il metodo specifico consiste nel sottrarre ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗), questo metodo è definito come segue:
xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( x ∗ ) ) ( 13 ) x_{k+1} = x_k - gamma (nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)) quad (13)XK+1=XK−γ(∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗))(13)
Questo metodo è chiamato SGD² [22].Anche se di solito non possiamo saperlo con certezza ogni ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗) , ma SGD², ad esempio, può ben illustrare le caratteristiche di base del metodo di riduzione della varianza.Inoltre, molti metodi di riduzione della varianza possono essere visti come una forma approssimativa del metodo SGD²; questi metodi non si basano su ciò che è noto; ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗), ma utilizza invece un metodo che possa approssimare ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗) valore stimato.
Vale la pena notare che SGD² utilizza una stima imparziale del gradiente completo.Perché ∇ f ( x ∗ ) = 0 quindi f(x^*) = 0∇F(X∗)=0,F:
E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) − ∇ f ( x ∗ ) = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)] = nabla f(x_k) - nabla f(x^*) = nabla f(x_k)E[∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗)]=∇F(XK)−∇F(X∗)=∇F(XK)
Inoltre, quando SGD² raggiunge la soluzione ottimale, si fermerà naturalmente per qualsiasi motivo io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo,Avere:
( ∇ fi ( x ) − ∇ fi ( x ∗ ) ) ∣ x = x ∗ = 0 (nabla f_i(x) - nabla f_i(x^*)) bigg|_{x=x^*} = 0(∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)−∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗))
X=X∗=0
Dopo ulteriore osservazione, con xk x_kXK vicino x ∗ x^*X∗(per consecutivi ∇ fi nabla f_i∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo), SGD² soddisfa la proprietà di riduzione della varianza (12) perché:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] = E [ ∥ ∇ fik ( xk ) − ∇ fik ( x ∗ ) − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ∥ 2 ] Sinistra[ | g_k - nabla f(x_k) |^2 destra] = \Esinistra[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) - nabla f(x_k) |^2 destra] leq Eleft[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) |^2 a destra]E[∥GK−∇F(XK)∥2]=E[∥∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗)−∇F(XK)∥2]≤E[∥∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗)∥2]
Qui usiamo il Lemma 2, let X = ∇ fik ( xk ) − ∇ fik ( x ∗ ) X = nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)X=∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗), e ne ho approfittato E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)] = nabla f(x_k)E[∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(X∗)]=∇F(XK) natura. Questa proprietà indica che SGD² ha una velocità di convergenza più rapida rispetto ai tradizionali metodi SGD, che abbiamo dettagliato nell'Appendice B.
In questa sezione introdurremo due ipotesi standard utilizzate per analizzare il metodo di riduzione della varianza (VR) e discuteremo l'effetto di accelerazione che può essere ottenuto con queste ipotesi rispetto al tradizionale metodo SGD. Innanzitutto, assumiamo che il gradiente abbia continuità Lipschitz, il che significa che la velocità di variazione del gradiente è finita.
Assumiamo che la funzione eff.Fè differenziabile ed è LLL- liscio, per tutti XXIX E aa ...e e qualcuno 0 < L < ∞ 0 < L < infty0<L<∞,Le seguenti condizioni:
∥ ∇ f ( x ) − ∇ f ( y ) ∥ ≤ L ∥ x − y ∥ ( 14 ) |nabla f(x) - nabla f(y)| leq L|x - y| quad (14)∥∇F(X)−∇F(e)∥≤L∥X−e∥(14)
Ciò significa che ogni fi : R d → R fi: mathbb{R}^d freccia a destra mathbb{R}Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo:RD→R è differenziabile, L e L_iLiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo- liscio, definiamo L max L_{testo{max}}Lmassimo per massimo { L 1 , . . . , L n } max{L_1, . . . , L_n}massimo{L1,...,LN}。
Sebbene questo sia generalmente considerato un presupposto debole, nei capitoli successivi discuteremo dei metodi VR adatti a problemi non lisci. Per una funzione univariata due volte differenziabile, LLL-La levigatezza può essere intuitivamente intesa come: equivale ad assumere che la derivata seconda lo sia LLL limite superiore, cioè ∣ f ′ ′ ( x ) ∣ ≤ L |f''(x)| leq L∣F′′(X)∣≤L per tutti x ∈ R dx in matematica bb{R}^dX∈RD .Per funzioni due volte differenziabili di più variabili, equivale ad assumere una matrice Hessiana ∇ 2 f ( x ) nabla^2 f(x)∇2F(X) Il valore singolare di LLL limite superiore.
La seconda ipotesi che consideriamo è che la funzione (f) sia mi muμ-Fortemente convesso, il che significa che per certo μ > 0 mu > 0μ>0,funzione x ↦ f ( x ) − μ 2 ∥ x ∥ 2 x mappa f(x) - frac{mu}{2}|x|^2X↦F(X)−2μ∥X∥2 È convesso.Inoltre, per ciascuno io = 1 , . . . , ni = 1, . . . , Niooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1,...,N, fi : R d → R fi: mathbb{R}^d freccia a destra mathbb{R}Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo:RD→R È convesso.
Questo è un presupposto forte.Nel problema dei minimi quadrati, ciascuno (fi$ è convesso, ma la funzione complessiva (f) è solo nella matrice di progetto A : = [ a 1 , . . . , un ] A := [ a_1 , . . . , un_n]UN:=[UN1,...,UNN] È fortemente convesso solo se ha rango di riga perfetto. Il problema della regressione logistica regolarizzata L2 soddisfa questo presupposto a causa dell'esistenza del termine di regolarizzazione, dove μ ≥ λ mu geq lambdaμ≥λ。
Un'importante classe di problemi che soddisfano queste ipotesi sono i problemi di ottimizzazione della forma:
x ∗ ∈ arg min x ∈ R df ( x ) = 1 n ∑ i = 1 n ℓ i ( ai T x ) + λ 2 ∥ x ∥ 2 ( 15 ) x^* in argmin_{x in mathbb{R}^d} f(x) = frac{1}{n} sum_{i=1}^{n} ell_i(a_i^Tx) + frac{lambda}{2}|x|^2 quad (15)X∗∈essoGX∈RDminimoimoimoimoF(X)=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑Nℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(UNioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooTX)+2λ∥X∥2(15)
dove ogni funzione di "perdita". ℓ i : R → R ell_i: mathbb{R} freccia a destra mathbb{R}ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo:R→R è due volte differenziabile e la sua derivata seconda ℓ i ′ ′ ell_i''ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo′′ è limitato a 0 e ad un limite superiore MMM fra. Ciò include una varietà di funzioni di perdita con regolarizzazione L2 nell'apprendimento automatico, come i minimi quadrati, la regressione logistica, la regressione probit, la regressione robusta di Huber, ecc.In questo caso, per tutti io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo,Abbiamo L i ≤ M ∥ ai ∥ 2 + λ L_i leq M|a_i|^2 + lambdaLiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo≤M∥UNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∥2+λ E μ ≥ λ mu geq lambdaμ≥λ。
Con questi presupposti, il tasso di convergenza del metodo della discesa del gradiente (GD) è determinato dal numero della condizione kappa := L/muκ:=L/μ Decidere. Il numero di condizione è sempre maggiore o uguale a 1 e quando è significativamente maggiore di 1, i contorni della funzione diventano molto ellittici, facendo oscillare le iterazioni del metodo GD.Al contrario, quando kappaκ Quando è vicino a 1, il metodo GD converge più velocemente.
Sotto le ipotesi 1 e 2, il metodo VR converge a una velocità lineare.Diciamo che il valore della funzione di un metodo casuale ({f(x_k)}) è dato da 0 < ρ ≤ 1 0 < rho leq 10<ρ≤1 Il tasso di convergenza lineare (sotto le aspettative), se esiste una costante C > 0 C > 0C>0 Fa:
E [ f ( xk ) ] − f ( x ∗ ) ≤ ( 1 − ρ ) k C = O ( exp ( − k ρ ) ) ∀ k ( 16 ) E[f(x_k)] - f(x^*) leq (1 - rho)^k C = O(exp(-krho)) quad per tutti i k quad (16)E[F(XK)]−F(X∗)≤(1−ρ)KC=Lo(esp(−Kρ))∀K(16)
Ciò è in contrasto con i metodi SGD classici che si basano solo su stime imparziali del gradiente ad ogni iterazione, che ottengono tassi sublineari solo con queste ipotesi:
E [ f ( xk ) ] − f ( x ∗ ) ≤ O ( 1 / k ) E[f(x_k)] - f(x^*) leq O(1/k)E[F(XK)]−F(X∗)≤Lo(1/K)
Il minimo che soddisfa questa disuguaglianza ciaoK Si chiama complessità iterativa dell'algoritmo. Di seguito sono riportati la complessità iterativa e il costo di un'iterazione per le varianti di base dei metodi GD, SGD e VR:
algoritmo | Numero di iterazioni | costo di un'iterazione |
---|---|---|
D.O. | O ( κ log ( 1 / ϵ ) ) O(kappa log(1/epsilon))Lo(κIoG(1/ϵ)) | O (n) O (n)Lo(N) |
Dollaro di Singapore | O ( κ max max ( 1 / ϵ ) ) O(kappa_{testo{max}} max(1/epsilon))Lo(κmassimomassimo(1/ϵ)) | L'(1) L'(1)Lo(1) |
Realtà virtuale | O ( ( κ max + n ) log ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))Lo((κmassimo+N)IoG(1/ϵ)) | L'(1) L'(1)Lo(1) |
Il tempo di esecuzione totale di un algoritmo è determinato dal prodotto della complessità dell'iterazione e del tempo di esecuzione dell'iterazione.usato qui κ max : = max i L i / μ kappa_{testo{max}} := max_i L_i/muκmassimo:=massimoioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooLiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo/μ .Avviso κ max ≥ κ kappa_{testo{max}} geq kappaκmassimo≥κPertanto, la complessità dell'iterazione del GD è inferiore a quella del metodo VR.
Tuttavia, poiché il costo per iterazione di GD è quello del metodo VR non-negligenzaN volte, il metodo VR è superiore in termini di tempo di esecuzione totale.
Il vantaggio dei metodi SGD classici è che il loro tempo di esecuzione e il tasso di convergenza non dipendono da non-negligenzaN, ma ha una tolleranza ϵ epsilonϵ La dipendenza è molto peggiore, il che spiega la scarsa performance dell’SGD quando la tolleranza è piccola.
Nell'Appendice B, forniamo una semplice dimostrazione che mostra che il metodo SGD² ha la stessa complessità iterativa del metodo VR.
Lo sviluppo dei metodi di riduzione della varianza (VR) ha attraversato diverse fasi e il lotto iniziale di metodi ha prodotto tassi di convergenza significativamente migliorati. L'inizio di questa serie di metodi è l'algoritmo SAG. Successivamente, l'algoritmo stocastico di salita a doppia coordinata (SDCA), l'algoritmo MISO, l'algoritmo stocastico di riduzione della varianza del gradiente (SVRG/S2GD) e l'algoritmo SAGA (che significa SAG "migliorato") sono usciti uno dopo l'altro.
In questo capitolo descriveremo in dettaglio questi metodi pionieristici della realtà virtuale. Nel Capitolo 4 esploreremo alcuni metodi più recenti che mostrano caratteristiche superiori rispetto a questi metodi di base in scenari applicativi specifici.
La nostra esplorazione del primo metodo di riduzione della varianza (VR) inizia con l'imitazione dell'intera struttura del gradiente.Dal momento che il gradiente completo ∇ f ( x ) nabla f(x)∇F(X) è tutto ∇ fi ( x ) nabla f_i(x)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Una media semplice dei gradienti, quindi la nostra stima del gradiente completo gk g_kGK Dovrebbe anche essere la media di queste stime del gradiente. Questa idea ha dato origine al nostro primo metodo VR: il metodo del gradiente medio stocastico (SAG).
Il metodo SAG [37], [65] è una versione randomizzata del metodo IAG (Incremental Aggreged Gradient) precoce [4]. L'idea centrale di SAG è quella per ciascun punto dati io sonoiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo mantenere una stima vik ≈ ∇ fi ( xk ) v_{ik} circa nabla f_i(x_k)laio lo so≈∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) .Quindi, usa questi vichingo vichingolaio lo so Come stima del gradiente completo viene utilizzata la media dei valori, ovvero:
g ˉ k = 1 n ∑ j = 1 nvjk ≈ 1 n ∑ j = 1 n ∇ fj ( xk ) = ∇ f ( xk ) ( 18 ) bar{g}_k = frac{1}{n} somma_{j=1}^{n} v_{jk} circa frac{1}{n} somma_{j=1}^{n} nabla f_j(x_k) = nabla f(x_k) quad (18)GˉK=N1J=1∑Nlascherzo≈N1J=1∑N∇FJ(XK)=∇F(XK)(18)
In ogni iterazione di SAG, dal set { 1 , … , n } {1, puntini, n}{1,…,N} Estrai un indice da io lo soioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK, e poi aggiornato secondo le seguenti regole v_{v_} (giusto)lascherzo:
vjkk + 1 = { ∇ fik ( xk ) , se j = ikvjkk , se j ≠ ik ( 19 ) v_{jk}^{k+1} ={∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK),SeJ=ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKlaKJK,SeJ≠ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK quadrilatero (19)lascherzoK+1={∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK),lascherzoK,SeJ=ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKSeJ=ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(19)
Tra loro, ciascuno v 0 io v_{0i}la0iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Può essere inizializzato a zero o ∇ fi ( x 0 ) nabla f_i(x_0)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X0) valore approssimativo.Con la soluzione x ∗ x^*X∗ approssimazione, ciascuno vichingo vichingolaio lo so convergerà gradualmente a ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗), soddisfacendo così la proprietà VR (12).
Per implementare il SAG in modo efficiente, dobbiamo prestare attenzione al calcolo gˉ k bar{g}_kGˉK per evitare di ricominciare ogni volta la somma da zero non-negligenzaN vettore, perché questo è non-negligenzaN Il costo è alto quando è grande.Fortunatamente, poiché ogni iterazione ne ha solo una vichingo vichingolaio lo so I termini cambieranno e non dovremo ricalcolare ogni volta l'intera somma.Nello specifico, supponiamo che durante l'iterazione ciaoK Indice estratto da io lo soioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK, allora c'è:
gˉ k = 1 n ∑ j = 1 j ≠ iknvjk + 1 nvikk = gˉ k − 1 − 1 nvikk − 1 + 1 nvikk ( 20 ) bar{g}_k = frac{1}{n} somma_{sottopila{j=1 \ j neq i_k}}^{n} v_{jk} + frac{1}{n} v_{i_k}^k = bar{g}_{k-1} - frac{1}{n} v_{i_k}^{k-1} + frac{1}{n} v_{i_k}^k quad (20)GˉK=N1J=1J=ioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK∑Nlascherzo+N1laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKK=GˉK−1−N1laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKK−1+N1laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKK(20)
Poiché oltre a vichingo vi_{io_k}laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK tutto tranne v_{v_} (giusto)lascherzo I valori rimangono tutti gli stessi, li memorizziamo e basta io sonoJ Un vettore corrispondente a vj v_jlaJ . L'algoritmo 1 mostra l'implementazione specifica del metodo SAG.
SAG è il primo metodo stocastico per ottenere la convergenza lineare e la sua complessità di iterazione lo è O ( ( κ max + n ) log ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))Lo((κmassimo+N)IoG(1/ϵ)), utilizzando la dimensione del passo γ = O ( 1 / L max ) gamma = O(1/L_{testo{max}})γ=Lo(1/Lmassimo) . Questa convergenza lineare può essere osservata nella Figura 1.Vale la pena notare che a causa di L max L_{testo{max}}Lmassimo-Funzione fluida per qualsiasi L ′ ≥ L max L' geq L_{testo{max}}L′≥Lmassimo Pure LL'L′- I metodi SAG uniformi raggiungono tassi di convergenza lineare per dimensioni di passo sufficientemente piccole, in contrasto con i metodi SGD classici, che raggiungono solo velocità sublineari con sequenze di dimensioni di passo decrescenti che sono difficili da regolare nella pratica.
A quel tempo, la convergenza lineare del SAG rappresentava un progresso significativo perché calcolava solo un gradiente stocastico (elaborando un singolo punto dati) in ciascuna iterazione. Tuttavia, la prova di convergenza fornita da Schmidt et al [65] è molto complessa e si basa su passaggi verificati dal computer. Uno dei motivi principali per cui il SAG è difficile da analizzare è questo gk g_kGK è una stima distorta del gradiente.
Successivamente, introduciamo il metodo SAGA, una variante del SAG che sfrutta il concetto di covariate per creare una variante imparziale del metodo SAG che ha prestazioni simili ma è più facile da analizzare.
Algoritmo 1: metodo SAG
Una stima del gradiente imparziale di base ridotta ∇ fik ( xk ) nabla f_{i_k}(x_k)∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK) L’approccio della varianza avviene attraverso l’uso delle cosiddette covariate, o variabili di controllo.per i = 1 , … , ni = 1, ldots, niooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1,…,N,impostare vi ∈ R d v_i in mathbb{R}^dlaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈RD è un vettore.Usando questi vettori, possiamo convertire l'intero gradiente ∇ f ( x ) nabla f(x)∇F(X) Riscritto come:
∇ f ( x ) = 1 n ∑ i = 1 n ( ∇ fi ( x ) − vi + vi ) = 1 n ∑ i = 1 n ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nabla f(x) = frac{1}{n} somma_{i=1}^{n}(nabla f_i(x) - v_i + v_i) = frac{1}{n} somma_{i=1}^{n} nabla f_i(x) - v_i + frac{1}{n} somma_{j=1}^{n} v_j∇F(X)=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N(∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo+laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo)=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo+N1J=1∑NlaJ
: = 1 n ∑ i = 1 n ∇ fi ( x , v ) ( 21 ) := frac{1}{n} somma_{i=1}^{n} nabla f_i(x, v) quad (21):=N1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X,la)(21)
che definisce ∇ fi ( x , v ) : = ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nabla f_i(x, v) := nabla f_i(x) - v_i + frac{1}{n} somma_{j=1}^{n} v_j∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X,la):=∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo+N1∑J=1NlaJ .Ora possiamo campionare casualmente a ∇ fi ( x , v ) nabla f_i(x, v)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X,la) per costruire il gradiente completo ∇ f ( x ) nabla f(x)∇F(X) Una stima imparziale di i ∈ { 1 , … , n } i in {1, ldots, n}iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈{1,…,N}, puoi applicare il metodo SGD e utilizzare la stima del gradiente:
gk = ∇ fik ( xk , v ) = ∇ fik ( xk ) − vik + 1 n ∑ j = 1 nvj ( 22 ) g_k = nabla f_{i_k}(x_k, v) = nabla f_{i_k}(x_k) - v_{i_k} + frac{1}{n} somma_{j=1}^{n} v_j quad (22)GK=∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK,la)=∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK+N1J=1∑NlaJ(22)
per l'osservazione io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo La differenza della coppia di selezione gk g_kGK influenza, possiamo gk = ∇ fik ( xk , v ) g_k = nabla f_{i_k}( x_k, v)GK=∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK,la) Sostituisci e usa E i ∼ 1 n [ vi ] = 1 n ∑ j = 1 nvj E_i sim frac{1}{n}[v_i] = frac{1}{n} somma_{j=1}^{n} v_jEiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∼N1[laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]=N1∑J=1NlaJ Per calcolare l'aspettativa, otteniamo:
E [ ∥ ∇ fi ( xk ) − vi + E i ∼ 1 n [ vi − ∇ fi ( xk ) ] ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − vi ∥ 2 ] ( 23 ) E sinistra[ |nabla f_i(x_k) - v_i + E_i sim frac{1}{n}[v_i - nabla f_i(x_k)]|^2 destra] leq E sinistra[ |nabla f_i(x_k) - v_i|^2 destra] quad (23)E[∥∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo+Eiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∼N1[laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo−∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)]∥2]≤E[∥∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∥2](23)
Il Lemma 2 è usato qui, dove X = ∇ fi ( xk ) − vi X = nabla f_i(x_k) - v_iX=∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo .Questo limite (23) mostra che se io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo insieme a ciaoK L'aumento è vicino a ∇ fi ( xk ) nabla f_i(x_k)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK) , possiamo ottenere attributi VR (12).Ecco perché chiamiamo io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo sono covariate e possiamo selezionarle per ridurre la varianza.
Ad esempio, questo approccio è implementato anche dal metodo SGD² (13), dove vi = ∇ fi ( x ∗ ) v_i = nabla f_i(x^*)laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗) .Tuttavia, questo non è comunemente usato nella pratica perché di solito non lo sappiamo ∇ fi ( x ∗ ) nabla f_i(x^*)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X∗) .Un'opzione più pratica è io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo come sappiamo x ˉ i ∈ R d bar{x}_i in mathbb{R}^dXˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈RD gradiente vicino ∇ fi ( xˉ i ) nabla f_i(bar{x}_i)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(Xˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo) . SAGA per ogni funzione per f_iFiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo utilizzare un punto di riferimento x ˉ i ∈ R d bar{x}_i in mathbb{R}^dXˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈RDe utilizzare le covariate vi = ∇ fi ( xˉ i ) v_i = nabla f_i(bar{x}_i)laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(Xˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo), ognuno dei quali xˉ i bar{x}_iXˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo sarà la nostra ultima valutazione per f_iFiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo punto. Usando queste covariate, possiamo costruire una stima del gradiente, seguendo la (22), dando:
gk = ∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + 1 n ∑ j = 1 n ∇ fj ( x ˉ j ) ( 24 ) g_k = nabla f_{i_k}(x_k) - nabla f_{i_k}(bar{x}_{i_k}) + frac{1}{n} somma_{j=1}^{n} nabla f_j(bar{x}_j) quad (24)GK=∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XK)−∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(XˉioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK)+N1J=1∑N∇FJ(XˉJ)(24)
Per implementare SAGA possiamo memorizzare i gradienti ∇ fi ( xˉ i ) nabla f_i(bar{x}_i)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(Xˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo) invece di non-negligenzaN Punto di riferimento xˉ i bar{x}_iXˉiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo .Vale a dire, supponiamo vj = ∇ fj ( x ˉ j ) v_j = nabla f_j(bar{x}_j)laJ=∇FJ(XˉJ) per j ∈ { 1 , … , n } j in {1, ldots, n}J∈{1,…,N}, in ogni iterazione, aggiorniamo un gradiente stocastico come SAG vj v_jlaJ。
Algoritmo 2 SAGA
Il metodo SAGA ha la stessa complessità di iterazione di SAG O ( ( κ max + n ) log ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))Lo((κmassimo+N)IoG(1/ϵ)), utilizzando la dimensione del passo γ = O ( 1 / L max ) gamma = O(1/L_{testo{max}})γ=Lo(1/Lmassimo) , ma la dimostrazione è molto più semplice.Tuttavia, come SAG, il metodo SAGA richiede l'archiviazione non-negligenzaN vettori ausiliari vi ∈ R d v_i in mathbb{R}^dlaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈RD per i = 1 , … , ni = 1, ldots, niooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1,…,N, il che significa la necessità O ( nd ) O(nd)Lo(ND) di spazio di archiviazione.Quando ggD E non-negligenzaN Quando entrambi sono grandi, ciò potrebbe non essere fattibile. Nella sezione successiva verrà descritto in dettaglio come ridurre questo requisito di memoria per modelli comuni come i modelli lineari regolarizzati.
quando è possibile non-negligenzaN Quando due vettori ausiliari vengono archiviati in memoria, SAG e SAGA tendono a comportarsi in modo simile. Se questo requisito di memoria è troppo elevato, il metodo SVRG, che esamineremo nella sezione successiva, è una buona alternativa. Il metodo SVRG raggiunge lo stesso tasso di convergenza ed è spesso quasi altrettanto veloce nella pratica, ma richiede solo O(d) O(d)Lo(D) della memoria, per questioni generali.
Prima dell'avvento del metodo SAGA, alcuni dei primi lavori introdussero per la prima volta le covariate per risolvere il problema dell'elevata memoria richiesto dal metodo SAG.Questi studi si basano su un punto di riferimento fisso x ˉ ∈ R d bar{x} in mathbb{R}^dXˉ∈RD covariate, a quel punto abbiamo calcolato l’intero gradiente ∇ f ( x ˉ ) nabla f(bar{x})∇F(Xˉ) .memorizzando punti di riferimento x ˉ barra{x}Xˉ e il corrispondente gradiente completo ∇ f ( x ˉ ) nabla f(bar{x})∇F(Xˉ), possiamo farlo senza memorizzarli ciascuno ∇ fj ( x ˉ ) nabla f_j(bar{x})∇FJ(Xˉ) Nel caso, utilizzare xˉj = xˉbar{x}_j = bar{x}XˉJ=Xˉ a tutti io sonoJ per implementare l'aggiornamento(24).Nello specifico, invece di memorizzare questi vettori, utilizziamo i punti di riferimento memorizzati in ogni iterazione x ˉ barra{x}Xˉ calcolare ∇ fik ( x ˉ ) nabla f_{i_k}(bar{x})∇FioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooK(Xˉ) . Questo metodo è stato originariamente proposto da diversi autori con nomi diversi, ma è stato successivamente unificato come metodo SVRG, seguendo la nomenclatura di [28] e [84].
Formalizziamo il metodo SVRG nell'algoritmo 3.
Utilizzando la (23), possiamo ricavare la stima del gradiente gk g_kGK La varianza di è limitata:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − ∇ fi ( x ˉ ) ∥ 2 ] ≤ L max 2 ∥ xk − x ˉ ∥ 2 Eleft[ | g_k - nabla f(x_k) |^2 destra] leq Eleft[ | nabla f_i(x_k) - nabla f_i(bar{x}) |^2 destra] leq L_{text{max}}^2 | x_k - bar{x} |^2E[∥GK−∇F(XK)∥2]≤E[∥∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(XK)−∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(Xˉ)∥2]≤Lmassimo2∥XK−Xˉ∥2
dove la seconda disuguaglianza utilizza ciascuno per f_iFiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Di L e L_iLiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo-Levigatezza.
Vale la pena notare che il punto di riferimento x ˉ barra{x}Xˉ Più ci avviciniamo al punto attuale xk x_kXK, minore è la varianza della stima del gradiente.
Affinché il metodo SVRG sia efficace, è necessario aggiornare frequentemente i punti di riferimento x ˉ barra{x}Xˉ (richiedendo quindi il calcolo del gradiente completo) viene ponderato rispetto al beneficio della varianza ridotta.Per questo motivo, ciascuno di noi ioT Aggiorna il punto di riferimento una volta ad ogni iterazione per avvicinarlo xk x_kXK (Vedi riga 11 dell'Algoritmo II-C).Cioè, il metodo SVRG contiene due cicli: un ciclo esterno ssS, dove viene calcolato il gradiente di riferimento ∇ f ( x ˉ s − 1 ) nabla f(bar{x}_{s-1})∇F(XˉS−1)(Linea 4) e un ciclo interno in cui il punto di riferimento è fisso e l'iterazione interna viene aggiornata in base al passo del gradiente stocastico (22) xk x_kXK(Riga 10).
A differenza di SAG e SAGA, SVRG richiede solo O(d) O(d)Lo(D) di memoria. Gli svantaggi di SVRG includono: 1) Abbiamo un parametro aggiuntivo ioT, ovvero la lunghezza del ciclo interno, deve essere regolata 2) È necessario calcolare due gradienti per ogni iterazione e il gradiente completo deve essere calcolato ogni volta che si cambia il punto di riferimento;
Johnson e Zhang [28] hanno dimostrato che SVRG ha complessità iterativa O ( ( κ max + n ) log ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))Lo((κmassimo+N)IoG(1/ϵ)) , simile a SAG e SAGA.Questo è il numero di cicli all'interno dell'ipotesi ioT dalla raccolta { 1 , … , m } {1, puntini, m}{1,…,M} Ottenuto in condizioni di campionamento uniforme, dove L max L_{testo{max}}Lmassimo, mi muμ, dimensione del passo gammaγ E ioT Tra di loro devono essere soddisfatte alcune dipendenze.In pratica, utilizzando γ = O ( 1 / L max ) gamma = O(1/L_{testo{max}})γ=Lo(1/Lmassimo) e la lunghezza del circuito interno t = n = nT=N, SVRG tende a funzionare bene, che è esattamente l'impostazione utilizzata nella Figura 1.
Ora, ci sono molte varianti del metodo SVRG originale.Ad esempio, alcune varianti utilizzano ioT distribuzione alternativa [32], alcune varianti consentono la forma O ( 1 / L max ) O(1/L_{testo{max}})Lo(1/Lmassimo) La dimensione del passo [27], [33], [35].Ci sono anche alcune varianti che utilizzano ∇ f ( x ˉ ) nabla f(bar{x})∇F(Xˉ) approssimazione mini-batch per ridurre il costo di queste valutazioni complete del gradiente e aumentare la dimensione del mini-batch per preservare le proprietà VR.Esistono anche alcune varianti in cui gli aggiornamenti vengono ripetuti nel ciclo interno secondo [54] gk g_kGK:
[ g_k = nabla f_{i_k}(x_k) - nabla f_{i_k}(x_{k-1}) + g_{k-1} quad (25) ]
Ciò fornisce un'approssimazione più locale. L'uso di questa variante di aggiornamento continuo (25) mostra vantaggi unici nel minimizzare le funzioni non convesse, come discusso brevemente nella Sezione IV.Infine, ricordiamo che SVRG può trarne vantaggio ∇ f ( x ˉ s ) nabla f(bar{x}_s)∇F(XˉS) valore per aiutare a decidere quando terminare l'algoritmo.
Algoritmo 3 Metodo SVRG
Uno svantaggio dei metodi SAG e SVRG è che la loro dimensione del passo si basa su valori sconosciuti che potrebbero essere sconosciuti in alcuni problemi. L max L_{testo{max}}Lmassimo . Prima di SVRG, il metodo SDCA [70], come uno dei primi metodi VR, estendeva la ricerca sui metodi di discesa delle coordinate ai problemi a somma finita. L'idea alla base dell'SDCA e delle sue varianti è che le coordinate del gradiente forniscono una stima del gradiente che riduce la varianza naturale.Nello specifico, supponiamo j ∈ { 1 , … , d } j in {1, ldots, d}J∈{1,…,D}e definire ∇ jf ( x ) : = ( ∂ f ( x ) ∂ xj ) ej nabla_j f(x) := sinistra( frac{f(x) parziale}{x_j parziale} destra) e_j∇JF(X):=(∂XJ∂F(X))eJ è l'esimo di (f(x)) io sonoJ derivate nelle direzioni delle coordinate, dove ej ∈ R d e_j in mathbb{R}^deJ∈RD E' il primo io sonoJ vettore unitario.Una proprietà chiave delle derivate delle coordinate è questa ∇ jf ( x ∗ ) = 0 nabla_j f(x^*) = 0∇JF(X∗)=0, perché lo sappiamo ∇ f ( x ∗ ) = 0 quindi f(x^*) = 0∇F(X∗)=0 .La derivata di questo con ciascun punto dati ∇ fj nabla f_j∇FJ diverso, quest'ultimo lo è x ∗ x^*X∗ potrebbe non essere zero. Pertanto abbiamo:
∥ ∇ f ( x ) − ∇ jf ( x ) ∥ 2 → 0 当 x → x ∗ ( 26 ) | nabla f(x) - nabla_j f(x) |^2 rightarrow 0 quad text{当} quad x rightarrow x^* quad (26)∥∇F(X)−∇JF(X)∥2→0QuandoX→X∗(26)
Ciò significa che la derivata delle coordinate soddisfa la proprietà di riduzione della varianza (12).Inoltre, possiamo usare ∇ jf ( x ) nabla_j f(x)∇JF(X) costruire ∇ f ( x ) nabla f(x)∇F(X) una stima imparziale di.Ad esempio, supponiamo io sonoJ proviene dalla collezione { 1 , … , d } {1, puntini, d}{1,…,D} Un indice selezionato in modo uniforme e casuale in formato .Pertanto, per qualsiasi i ∈ { 1 , … , d } i in {1, ldots, d}iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈{1,…,D},Abbiamo P [ j = i ] = 1 d P[ j = i ] = frazione {1}{d}P[J=iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]=D1 . Perciò, d × ∇ jf ( x ) d volte nabla_j f(x)D×∇JF(X) SÌ ∇ f ( x ) nabla f(x)∇F(X) Una stima imparziale del perché:
E [ d ∇ jf ( x ) ] = d ∑ i = 1 d P [ j = i ] ∂ f ( x ) ∂ xiei = ∑ i = 1 d ∂ f ( x ) ∂ xiei = ∇ f ( x ) Eleft[ d nabla_j f(x) right] = d sum_{i=1}^{d} P[j = i] frac{parziale f(x)}{parziale x_i} e_i = sum_{i=1}^{d} frac{parziale f(x)}{parziale x_i} e_i = nabla f(x)E[D∇JF(X)]=Diooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑DP[J=iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]∂Xiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∂F(X)eiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑D∂Xiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∂F(X)eiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=∇F(X)
Perciò, ∇ jf ( x ) nabla_j f(x)∇JF(X) Ha tutte le proprietà ideali che ci aspetteremmo per la stima VR dei gradienti completi, senza la necessità di utilizzare covariate. Uno svantaggio dell'utilizzo di questo gradiente di coordinate è che è computazionalmente costoso per il nostro problema di somma (2).Questo perché il calcolo ∇ jf ( x ) nabla_j f(x)∇JF(X) È necessario attraversare l'intero set di dati perché ∇ jf ( x ) = 1 n ∑ i = 1 n ∇ jfi ( x ) nabla_j f(x) = frac{1}{n} somma_{i=1}^{n} nabla_j f_i(x)∇JF(X)=N1∑iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1N∇JFiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) . Pertanto, l'uso delle derivate coordinate sembra incompatibile con la struttura del nostro problema di somma. Tuttavia, possiamo spesso riscrivere il problema originale (2) in una cosiddetta formulazione duale, dove le derivate coordinate possono sfruttare la struttura intrinseca.
Ad esempio, la doppia formula del modello lineare regolarizzato L2 (15) è:
v ∗ ∈ arg max v ∈ R n 1 n ∑ i = 1 n − ℓ i ∗ ( − vi ) − λ 2 ∥ 1 λ ∑ i = 1 nviai ∥ 2 ( 27 ) v^* in argmax_{v in mathbb{R}^n} frac{1}{n} somma_{i=1}^{n} -ell_i^*(-v_i) - frac{lambda}{2} sinistra| frac{1}{lambda} somma_{i=1}^{n} v_i a_i destra|^2 quad (27)la∗∈essoGla∈RNmassimoN1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑N−ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∗(−laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo)−2λ
λ1iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1∑NlaioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooUNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
2(27)
In l i ∗ ( v ) ell_i^*(v)ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∗(la) SÌ io ell_iℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo coniugato convesso.Possiamo usare la mappatura x = 1 λ ∑ i = 1 nviaix = frac{1}{lambda} somma_{i=1}^{n} v_i a_iX=λ1∑iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1NlaioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooUNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo per ripristinare il problema originale (15) XXIX variabile.risolverà v ∗ v^*la∗ Sostituendo nella parte destra della mappatura precedente, possiamo ottenere la soluzione di (15) x ∗ x^*X∗。
Si noti che questo duplice problema ha non-negligenzaN variabili reali vi ∈ R v_i in mathbb{R}laiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∈R , corrispondente ad uno per ciascun campione di addestramento.Inoltre, ciascuna funzione di doppia perdita l i ∗ ell_i^*ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∗ soltanto io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo La funzione. Cioè, il primo termine della funzione di perdita è coordinabilmente separabile. Questa separabilità in coordinate, unita alla forma semplice del secondo termine, ci consente di implementare in modo efficiente il metodo di risalita delle coordinate.In effetti, Shalev-Shwartz e Zhang hanno dimostrato che l'ascesa coordinata su questo problema ha una complessità iterativa simile a SAG, SAGA e SVRG O ( ( κ max + n ) log ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))Lo((κmassimo+N)IoG(1/ϵ))。
Anche il costo dell'iterazione e la struttura dell'algoritmo sono molto simili: somma tramite tracciamento ∑ i = 1 nviai somma_{i=1}^{n} v_i a_i∑iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo=1NlaioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooUNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Per gestire il secondo termine in (27), ciascuna iterazione di risalita a doppia coordinata deve considerare solo un campione di addestramento e il costo di ciascuna iterazione è lo stesso di non-negligenzaN Niente da fare.Inoltre, possiamo utilizzare una ricerca di linea 1D per calcolare in modo efficiente la dimensione del passo da massimizzare come io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Duplice obiettivo della funzione.Ciò significa che anche senza L max L_{testo{max}}Lmassimo O conoscendo le quantità rilevanti, è anche possibile ottenere tempi di esecuzione rapidi nel caso peggiore per i metodi VR.
Per implementare il metodo di riduzione della varianza (VR) di base e ottenere prestazioni ragionevoli, è necessario affrontare diversi problemi di implementazione. In questa sezione, discutiamo diverse questioni non trattate sopra.
Nel campo degli algoritmi di ottimizzazione, in particolare nei metodi di riduzione della variazione come il gradiente medio stocastico (SAG), l'algoritmo del gradiente medio stocastico (SAGA) e il gradiente stocastico (SVRG), l'impostazione della dimensione del passo è una questione chiave.Sebbene per il metodo stocastico di salita a doppia coordinata (SDCA), possiamo utilizzare il doppio obiettivo per determinare la dimensione del passo, la base teorica per i metodi variabili originali di SAG, SAGA e SVRG è che la dimensione del passo dovrebbe essere γ = O ( 1 L max ) gamma = Osinistra(frac{1}{L_{testo{max}}}destra)γ=Lo(Lmassimo1) modulo.Tuttavia, nelle applicazioni pratiche, spesso non lo sappiamo L max L_{testo{max}}Lmassimo valore esatto e l'utilizzo di altre dimensioni di passo può fornire prestazioni migliori.
Una strategia classica per impostare la dimensione del passo nel metodo di discesa del gradiente completo (full-GD) è la ricerca della linea Armijo.dato il punto attuale xk x_kXK e la direzione della ricerca gk g_kGK, Ricerca linea Armijo in γ k gamma_kγK viene eseguito sulla linea, che è definita come γ k ∈ { γ : xk + γ gk } gamma_k in {gamma : x_k + gamma g_k}γK∈{γ:XK+γGK}, e la funzione deve essere sufficientemente ridotta, ovvero:
f(xk + γ kgk) < f(xk) − c γ k ∥ ∇ f(xk) ∥ 2 f(x_k + gamma_k g_k) < f(x_k) - c gamma_k |nabla f(x_k)|^2F(XK+γKGK)<F(XK)−CγK∥∇F(XK)∥2
Tuttavia, questo approccio richiede più passaggi candidati γ k gamma_kγK Calcolo f ( xk + γ kgk ) f( x_k + gamma_k g_k)F(XK+γKGK), che valuta la f(x)F(X) Costo proibitivo quando si tratta di attraversare l'intero set di dati.
Per risolvere questo problema, è possibile utilizzare un metodo di variazione casuale per trovare quelli che soddisfano le seguenti condizioni γ k gamma_kγK:
fik ( xk + γ kgk ) < fik ( xk ) − c γ k ∥ ∇ fik ( xk ) ∥ 2 f_{ik}(x_k + gamma_k g_k) < f_{ik}(x_k) - c gamma_k |nabla f_{ik}(x_k)|^2Fio lo so(XK+γKGK)<Fio lo so(XK)−CγK∥∇Fio lo so(XK)∥2
Questo approccio di solito funziona bene nella pratica, soprattutto quando ∥ ∇ fik ( xk ) ∥ |nabla f_{ik}(x_k)|∥∇Fio lo so(XK)∥ non vicino allo zero, anche se attualmente non esiste alcuna teoria a sostegno di questo approccio.
Inoltre Mairal ha proposto una "tecnica Bottou" per impostare nella pratica la dimensione del passo. Questo metodo esegue una ricerca binaria prendendo una piccola porzione del set di dati (ad esempio il 5%) per cercare di trovare la dimensione del passo ottimale in un singolo passaggio attraverso questo campione. Simile alla ricerca della linea Armijo, questo metodo spesso funziona bene nella pratica, ma ancora una volta manca di un fondamento teorico.
Tieni presente che il contenuto di cui sopra è una riaffermazione del testo originale, utilizzando il formato Markdown per rappresentare formule e variabili matematiche.
Tuttavia, il metodo SDCA presenta anche alcuni svantaggi.Innanzitutto è necessario calcolare il coniugato convesso l i ∗ ell_i^*ℓiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo∗ piuttosto che un semplice gradiente. Non disponiamo di un equivalente differenziale automatico per i coniugati convessi, quindi ciò potrebbe aumentare lo sforzo di implementazione. Un lavoro recente ha proposto metodi SDCA "dual-free" che non richiedono la coniugazione e utilizzano invece direttamente i gradienti. Tuttavia, in questi metodi non è più possibile tracciare il doppio target per impostare la dimensione del passo.In secondo luogo, sebbene la SDCA richieda solo O(n + d) O(n + d)Lo(N+D) memoria per risolvere il problema (15), ma per questa categoria di problemi è necessario solo SAG/SAGA O(n + d) O(n + d)Lo(N+D) di memoria (vedere Sezione 3).Una variante di SDCA adatta a problemi più generali con SAG/SAGA O ( nd ) O(nd)Lo(ND) memoria perché io vi_iolaiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo diventare avere ggD vettore di elementi. Un ultimo sottile inconveniente dell’SDCA è che assume implicitamente una forte costante di convessità mi muμ pari λ lambdaλ .per mi muμ più del λ lambdaλ problema, il metodo VR originale di solito supera significativamente l’SDCA.
Nel campo dell'ottimizzazione degli algoritmi, spesso ci basiamo su risultati teorici di complessità iterativa per prevedere il numero di iterazioni nel caso peggiore necessarie affinché un algoritmo raggiunga una precisione specifica. Tuttavia, questi limiti teorici spesso si basano su alcune costanti che non possiamo prevedere e, nelle applicazioni pratiche, l’algoritmo può spesso raggiungere la precisione prevista in un minor numero di iterazioni. Pertanto, dobbiamo impostare alcuni criteri di test per determinare quando terminare l'algoritmo.
Nel tradizionale metodo di discesa a gradiente completo (full-GD), solitamente utilizziamo la norma del gradiente ∥ ∇ f ( xk ) ∥ | cioè f(x_k) |∥∇F(XK)∥ O qualche altra quantità correlata a questa per decidere quando interrompere l'iterazione.Per il metodo SVRG possiamo adottare lo stesso criterio ma utilizzare ∥ ∇ f ( x ˉ s ) ∥ | nabla f(bar{x}_s) |∥∇F(XˉS)∥ come base per il giudizio.Per il metodo SAG/SAGA, anche se non calcoliamo esplicitamente il gradiente completo, la quantità $ g_{bar{k}} $ si avvicinerà gradualmente a ∇ f ( xk ) nabla f(x_k)∇F(XK), quindi, utilizzare {NS} {NS}} è la lettera maiuscola {NS}}.∥GKˉ∥ come condizione di arresto è un'euristica ragionevole.
Nel metodo SDCA, con qualche lavoro di registrazione aggiuntivo, possiamo tracciare il gradiente del doppio obiettivo senza aggiungere ulteriori costi asintotici.Inoltre, un approccio più sistematico sarebbe quello di monitorare il doppio divario, anche se ciò aumenterebbe il gap O (n) O (n)Lo(N) costo, ma è in grado di fornire condizioni di terminazione con prove di dual gap. Inoltre, basandosi sulla condizione di ottimalità di target fortemente convessi, il metodo MISO adotta un metodo basato su principi basati sul limite inferiore quadratico [41].
Di seguito sono riportate formule e variabili matematiche espresse in formato Markdown:
Tieni presente che il contenuto di cui sopra è una riaffermazione del testo originale, utilizzando il formato Markdown per rappresentare formule e variabili matematiche.
Sebbene l'algoritmo Stochastic Variational Reduction of Gradient (SVRG) elimini i requisiti di memoria dei precedenti metodi di riduzione delle variazioni, nelle applicazioni pratiche gli algoritmi SAG (Stochastic Average Gradient Descent) e SAGA (Stochastic Average Gradient Descent with Gradient Accumulation) vengono utilizzati in molti problemi tendono a richiedere meno iterazioni rispetto all'algoritmo SVRG.Ciò ha innescato un pensiero: ci sono alcuni problemi che consentono a SAG/SAGA di farlo O ( nd ) O(nd)Lo(ND) I requisiti di memoria sono implementati di seguito. Questa sezione esplora una classe di modelli lineari per i quali i requisiti di memoria possono essere significativamente ridotti.
Considera un modello lineare in cui ciascuna funzione per(x)Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Può essere espresso come ξ i ( ai ⊤ x ) xi_i(mathbf{a}_i^top x)ξiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(UNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo⊤X) .Giusto XXIX La derivata dà la forma del gradiente:
∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nabla f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_i∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X)=ξ′(UNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo⊤X)UNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Qui, ξ ′ xi'ξ′ esprimere o xiξ la derivata di.Supponendo di avere accesso diretto agli autovettori ai matematicabf{a}_iUNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo, quindi per implementare il metodo SAG/SAGA, dobbiamo solo memorizzare lo scalare ξ ( ai ⊤ x ) xi(mathbf{a}_i^top x)ξ(UNiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo⊤X) .In questo modo, i requisiti di memoria variano da O ( nd ) O(nd)Lo(ND) ridotto a O (n) O (n)Lo(N) . Anche l'algoritmo SVRG può trarre vantaggio da questa struttura di gradienti: memorizzandola non-negligenzaN scalare, possiamo ridurre il numero di valutazioni del gradiente richieste per l'iterazione "interna" SVRG a 1 per questa classe di problemi.
Esistono altri tipi di problemi, come i modelli grafici probabilistici, che offrono anche la possibilità di ridurre i requisiti di memoria [66]. Attraverso la specifica struttura dei dati e l'ottimizzazione dell'algoritmo, le risorse di memoria richieste dall'algoritmo in fase di esecuzione possono essere ulteriormente ridotte.
Di seguito sono riportate formule e variabili matematiche espresse in formato Markdown:
In alcuni problemi, il gradiente ∇ fi ( x ) nabla f_i(x)∇Fiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(X) Può contenere un gran numero di valori zero, come un modello lineare con caratteristiche sparse.In questo caso, il tradizionale algoritmo stocastico di discesa del gradiente (SGD) può essere implementato in modo efficiente, con complessità computazionale lineare nel numero di elementi diversi da zero nel gradiente, che di solito è molto più piccolo della dimensione del problema ggD . Tuttavia, nei metodi standard di riduzione variazionale (VR), questo vantaggio non viene sfruttato. Fortunatamente, ci sono due modi noti per migliorare questo aspetto.
Il primo miglioramento è stato proposto da Schmidt et al., che sfrutta la semplicità del processo di aggiornamento e implementa una variante del calcolo "al volo" in modo tale che il costo di ciascuna iterazione sia proporzionale al numero di valori diversi da zero elementi.Prendendo SAG come esempio (ma questo approccio funziona per tutte le varianti), questo viene fatto non memorizzando il vettore completo dopo ogni iterazione vichingo vichingolaio lo so, ma calcola solo quelli corrispondenti a elementi diversi da zero vichingo v_{ik_j}laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKJ, aggiornando ciascuna variabile dall'ultima volta che l'elemento era diverso da zero vichingo v_{ik_j}laioooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooKJ。
Il secondo metodo di miglioramento è stato proposto da Leblond et al per SAGA, che aggiorna la formula xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + g ˉ k ) x_{k+1} = x_k - gamma(nabla f_{ik}(x_k) - nabla f_{ik}(bar{x}_{ik}) + bar{g}_k)XK+1=XK−γ(∇Fio lo so(XK)−∇Fio lo so(Xˉio lo so)+GˉK) Viene introdotta ulteriore casualità. Qui, ∇ fik ( xk ) nabla f_{ik}(x_k)∇Fio lo so(XK) E ∇ fik ( x ˉ ik ) nabla f_{ik}(bar{x}_{ik})∇Fio lo so(Xˉio lo so) è scarso e gˉ k bar{g}_kGˉK è denso.In questo metodo, il termine denso ( gˉ k ) j (bar{g}_k)_j(GˉK)J Ogni componente di è sostituito da wj ( gˉ k ) j w_j (bar{g}_k)_jioJ(GˉK)J,In w ∈ R dw in mathbb{R}^dio∈RD è un vettore sparso casuale il cui insieme di supporto è contenuto ∇ fik ( xk ) nabla f_{ik}(x_k)∇Fio lo so(XK) , e dovrebbe essere un vettore costante con tutti gli elementi uguali a 1. In questo modo, il processo di aggiornamento rimane imparziale (anche se ora scarso) e l’aumento della varianza non influisce sul tasso di convergenza dell’algoritmo. Maggiori dettagli sono forniti da Leblond et al.
Di seguito sono riportate formule e variabili matematiche espresse in formato Markdown: