minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
A otimização estocástica é um componente vital do aprendizado de máquina e em seu núcleo está o algoritmo estocástico de descida gradiente (SGD), um método que tem sido amplamente utilizado desde que foi proposto pela primeira vez, há mais de 60 anos. Nos últimos oito anos, testemunhamos um novo desenvolvimento interessante: técnicas de redução de variância para métodos de otimização estocástica. Esses métodos de redução de variância (métodos VR) apresentam bom desempenho em cenários que permitem múltiplas iterações dos dados de treinamento, apresentando convergência mais rápida que o SGD, tanto na teoria quanto na prática. Este aumento na velocidade destaca o interesse crescente em métodos de RV e o rápido acúmulo de resultados de pesquisa nesta área. Este artigo revisa os princípios-chave e os principais avanços nos métodos de RV para otimização limitada de conjuntos de dados, com o objetivo de informar leitores não especialistas. Nós nos concentramos principalmente em ambientes de otimização convexa e fornecemos uma referência para leitores interessados em extensões para minimização de funções não-convexas.
Palavras-chave | Otimização de aprendizado de máquina;
No campo da pesquisa em aprendizado de máquina, uma questão básica e importante é como adaptar o modelo a um enorme conjunto de dados. Por exemplo, podemos considerar o caso típico de um modelo linear de mínimos quadrados:
x ∗ ∈ arg min x ∈ R d 1 n ∑ i = 1 n ( ai T x − bi ) 2 x^* em argmin_{x em mathbb{R}^d} frac{1}{n} soma_{i=1}^{n} (a_i^T x - b_i)^2x∗∈argx∈Remínimoe1eu=1∑e(aeuEx−beu)2
Neste modelo temos dde parâmetros, que são representados por vetores x ∈ R dx em mathbb{R}^dx∈Re dado.Enquanto isso, temos em mãos nãoe pontos de dados, incluindo vetores de recursos ai ∈ R d a_i em mathbb{R}^daeu∈Re e valor alvo bi ∈ R b_i em mathbb{R}beu∈R .O processo de adaptação do modelo consiste em ajustar esses parâmetros para que a saída prevista do modelo ai T x a_i^T xaeuEx em média, o mais próximo possível do valor-alvo bi b_ibeu。
De forma mais ampla, poderíamos usar uma função de perda f(x) f_i(x)eeu(x) Para medir as previsões do modelo e o eueu Quão próximos estão os pontos de dados:
x ∗ ∈ arg min x ∈ R df ( x ) : = 1 n ∑ i = 1 nfi ( x ) x^* em argmin_{x em mathbb{R}^d} f(x) := frac{1}{n} sum_{i=1}^{n} f_i(x)x∗∈argx∈Remínimoe(x):=e1eu=1∑eeeu(x)
função de perda f(x) f_i(x)eeu(x) Se for maior, indica que as previsões do modelo se desviam muito dos dados; f(x) f_i(x)eeu(x) Igual a zero, o modelo se ajusta perfeitamente aos pontos de dados.função f(x) f(x)e(x) Reflete a perda média do modelo em todo o conjunto de dados.
Problemas como a forma (2) acima se aplicam não apenas a problemas lineares de mínimos quadrados, mas também a muitos outros modelos estudados em aprendizado de máquina. Por exemplo, em um modelo de regressão logística resolvemos:
x ∗ ∈ arg min x ∈ R d 1 n ∑ i = 1 n log ( 1 + e − biai T x ) + λ 2 ∥ x ∥ 2 2 x^* em argmin_{x em 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∗∈argx∈Remínimoe1eu=1∑eeisg(1+e−beuaeuEx)+2λ∥x∥22
Aqui, estamos lidando com bi ∈ { − 1 , + 1 } b_i em {-1, +1}beu∈{−1,+1} Para um problema de classificação binária, a previsão é baseada em ai T x a_i^T xaeuEx símbolos.Um termo de regularização também é introduzido na fórmula λ 2 ∥ x ∥ 2 2 frac{lambda}{2} |x|_2^22λ∥x∥22 para evitar overfitting dos dados, onde ∥ x ∥ 2 2 |x|_2^2∥x∥22 expressar xxx O quadrado da norma euclidiana de.
Na maioria dos modelos de aprendizagem supervisionada, o processo de treinamento pode ser expresso como a forma (2), incluindo mínimos quadrados regularizados L1, máquina de vetores de suporte (SVM), análise de componentes principais, campos aleatórios condicionais e redes neurais profundas, etc.
Um desafio importante nas instâncias problemáticas modernas é o número de pontos de dados nãoe Provavelmente extremamente grande. Lidamos frequentemente com conjuntos de dados que vão muito além da faixa dos terabytes e podem vir de fontes tão diversas como a Internet, satélites, sensores remotos, mercados financeiros e experiências científicas. Para lidar com conjuntos de dados tão grandes, uma abordagem comum é usar o algoritmo de descida gradiente estocástica (SGD), que usa apenas um pequeno número de pontos de dados selecionados aleatoriamente em cada iteração. Além disso, tem havido um aumento acentuado recentemente no interesse em métodos de gradiente estocástico de redução de variância (VR), que apresentam taxas de convergência mais rápidas do que os métodos tradicionais de gradiente estocástico.
Figura 1. No problema de regressão logística baseado no conjunto de dados de cogumelo [7], descida gradiente (GD), descida gradiente acelerada (AGD, GD acelerada em [50]), descida gradiente estocástica (SGD) e método ADAM [30] foi em comparação com os métodos de redução de variância (VR) SAG e SVRG, onde n = 8.124, d = 112.
O gradiente descendente (GD) é um algoritmo clássico usado para resolver o problema acima (2), e sua fórmula de atualização iterativa é a seguinte:
xk + 1 = xk − γ 1 n ∑ i = 1 n ∇ fi ( xk ) x_{k+1} = x_k - gama frac{1}{n} sum_{i=1}^{n} nome f_i(x_k)xo+1=xo−γe1eu=1∑e∇eeu(xo)
aqui, gama γγ é um valor de passo fixo maior que zero.Durante cada iteração do algoritmo GD, cada ponto de dados deve ser eueu Calcular gradiente ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo), o que significa que GD exige que todos nãoe realizar uma travessia completa dos pontos de dados.Quando o tamanho do conjunto de dados nãoe Quando se torna muito grande, o custo de cada iteração do algoritmo GD torna-se muito elevado, limitando assim a sua aplicação.
Como alternativa, podemos considerar o método estocástico de descida gradiente (SGD), que foi proposto pela primeira vez por Robbins e Monro, e sua fórmula de atualização iterativa é a seguinte:
xk + 1 = xk − γ ∇ fik ( xk ) x_{k+1} = x_k - gama nome f_{i_k}(x_k)xo+1=xo−γ∇eeuo(xo)
O algoritmo SGD funciona usando apenas o gradiente de um ponto de dados selecionado aleatoriamente em cada iteração. ∇ fik ( xk ) nome f_{i_k}(x_k)∇eeuo(xo) para reduzir o custo de cada iteração. Na Figura 1, podemos ver que o SGD alcança um progresso mais significativo do que o GD (incluindo métodos acelerados de GD) nos estágios iniciais do processo de otimização.O gráfico mostra o progresso da otimização em termos de épocas, que são definidas como o cálculo de todos nãoe O número de gradientes para amostras de treinamento. O algoritmo GD realiza uma iteração em cada rodada, enquanto o algoritmo SGD realiza uma iteração em cada rodada nãoe iterações.Usamos rodadas como base para comparar SGD e GD, porque sob a suposição nãoe Em casos muito grandes, o principal custo de ambos os métodos está concentrado no gradiente ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) Cálculo.
Vamos considerar a indexação aleatória eu sei eu seieuo da coleção { 1 , … , n } {1, pontos, n}{1,…,e} No caso de seleção aleatória uniforme, isso significa que para todos eueu,escolher ik = eu i_k = eueuo=eu A probabilidade P [ ik = eu ] P[i_k = eu]P[euo=eu] igual 1 n fração{1}{n}e1 . nesse caso, ∇ fik ( xk ) nome f_{i_k}(x_k)∇eeuo(xo) como ∇ f ( xk ) nome f(x_k)∇e(xo) O estimador de é imparcial porque, pela definição de expectativa, temos:
E [ ∇ fik ( xk ) ∣ xk ] = 1 n ∑ i = 1 n ∇ fi ( xk ) = ∇ f ( xk ) ( 6 ) E[nabla f_{i_k}(x_k) | x_k] = frac{1}{n} soma_{i=1}^{n} nome f_i(x_k) = nome f(x_k) quad (6)E[∇eeuo(xo)∣xo]=e1eu=1∑e∇eeu(xo)=∇e(xo)(6)
Embora o método SGD (Stochastic Gradient Descent) não garanta a função em cada iteração ffe O valor de diminuirá, mas em média move-se em direção ao gradiente total negativo, que representa a direção descendente.
No entanto, ter um estimador de gradiente imparcial não é suficiente para garantir a convergência das iterações do SGD. Para ilustrar este ponto, a Figura 2 (esquerda) mostra a trajetória iterativa do SGD ao aplicar uma função de regressão logística usando um tamanho de passo constante no conjunto de dados de quatro categorias fornecido pelo LIBSVM [7].As elipses concêntricas na figura representam os contornos da função, ou seja, o valor da função f ( x ) = cf(x) = ce(x)=c ponto correspondente xxx juntar, ccc é uma constante específica no conjunto dos números reais.valores constantes diferentes ccc Corresponde a diferentes elipses.
A trajetória iterativa do SGD não converge para a solução ótima (indicada por um asterisco verde na figura), mas forma uma nuvem de pontos em torno da solução ótima. Em contrapartida, mostramos na Figura 2 a trajetória iterativa de um método de redução de variância (VR), gradiente médio estocástico (SAG), utilizando o mesmo tamanho de passo constante, que apresentaremos posteriormente. A razão pela qual o SGD não consegue convergir neste exemplo é que o próprio gradiente estocástico não converge para zero e, portanto, o método SGD de passo constante (5) nunca para.Isto contrasta fortemente com os métodos de descida gradiente (GD), que naturalmente param quando xk x_kxo Abordagens x ∗ x^*x∗,gradiente ∇ f ( xk ) nome f(x_k)∇e(xo) tenderá a zero.
Figura 2. Gráficos de nível definido para regressão logística bidimensional usando métodos iterativos de passo fixo SGD (esquerda) e SAG (direita). Asterisco verde indica xdesatar.
processamento devido a ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) Existem diversas técnicas clássicas para problemas de não convergência causados pela variância de valores.Por exemplo, Robbins e Monro [64] usam uma série de etapas decrescentes γ k gama_kγo para resolver o problema de variância, garantindo que o produto γ k ∇ fik ( xk ) gama_k nome f_{i_k}(x_k)γo∇eeuo(xo) pode convergir para zero. No entanto, ajustar esta sequência de passos decrescentes para evitar parar o algoritmo demasiado cedo ou demasiado tarde é um problema difícil.
Outra técnica clássica para reduzir a variância é usar múltiplos ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) média de para obter o gradiente completo ∇ f ( x ) nome f(x)∇e(x) uma estimativa mais precisa. Essa abordagem é chamada de minilote e é particularmente útil quando vários gradientes podem ser avaliados em paralelo. Isso resulta em uma iteração do formulário:
xk + 1 = xk − γ 1 ∣ B k ∣ ∑ i ∈ B k ∇ fi ( xk ) ( 7 ) x_{k+1} = x_k - gama frac{1}{|B_k|} sum_{i in B_k} nome f_i(x_k) quad (7)xo+1=xo−γ∣Bo∣1eu∈Bo∑∇eeu(xo)(7)
em B k B_kBo é um conjunto de índices aleatórios, ∣ B k ∣ |B_k|∣Bo∣ expressar B k B_kBo o tamanho de.se B k B_kBo Amostrando uniformemente com substituição, então a variância desta estimativa de gradiente está relacionada ao "tamanho do lote" ∣ B k ∣ |B_k|∣Bo∣ é inversamente proporcional, portanto a variação pode ser reduzida aumentando o tamanho do lote.
No entanto, o custo de tais iterações é proporcional ao tamanho do lote, portanto esta forma de redução da variância acarreta um aumento no custo computacional.
Outra estratégia comum para reduzir a variância e melhorar o desempenho empírico do SGD é adicionar “momentum”, um termo extra baseado na direção usada nas etapas anteriores. Em particular, a forma do SGD com momentum é a seguinte:
xk + 1 = xk − γ mk ( 9 ) x_{k+1} = x_k - gama m_k quad (9)xo+1=xo−γeuo(9)
onde o parâmetro de momento β betaβ Localizado no intervalo (0, 1).Se o impulso inicial m 0 = 0 m_0 = 0eu0=0e expanda em (8) mk m_keuo Para atualizações, obtemos mk m_keuo é a média ponderada dos gradientes anteriores:
mk = ∑ t = 0 k β k − t ∇ ajuste ( xt ) ( 10 ) m_k = soma_{t=0}^{k} beta^{kt} nome f_{i_t}(x_t) quad (10)euo=para=0∑oβo−para∇eeupara(xpara)(10)
portanto, mk m_keuo é a soma ponderada dos gradientes estocásticos.porque ∑ t = 0 k β k − t = 1 − β k + 1 1 − β soma_{t=0}^{k} beta^{kt} = frac{1 - beta^{k+1}}{1 - beta}∑para=0oβo−para=1−β1−βo+1, podemos converter 1 − β 1 − β kmk frac{1 - beta}{1 - beta^k} m_k1−βo1−βeuo Considerado como uma média ponderada de gradientes estocásticos.Se compararmos isso com a expressão para o gradiente completo ∇ f ( xk ) = 1 n ∑ i = 1 n ∇ fi ( xk ) nome f(x_k) = frac{1}{n} sum_{i=1}^{n} nome f_i(x_k)∇e(xo)=e1∑eu=1e∇eeu(xo) Para comparar, podemos 1 − β 1 − β kmk frac{1 - beta}{1 - beta^k} m_k1−βo1−βeuo(assim como mk m_keuo ) é interpretado como uma estimativa do gradiente completo. Embora esta soma ponderada reduza a variância, também levanta questões importantes.Como a soma ponderada (10) dá mais peso aos gradientes amostrados recentemente, ela não convergirá para o gradiente completo ∇ f ( xk ) nome f(x_k)∇e(xo) , esta última é uma média simples. O primeiro método de redução de variância que veremos na Seção II-A resolve esse problema usando uma média simples em vez de qualquer média ponderada.
Ao contrário dos métodos clássicos, eles usam diretamente um ou mais ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) como ∇ f ( xk ) nome f(x_k)∇e(xo) Como aproximação, os métodos modernos de redução de variância (VR) empregam uma estratégia diferente.Esses métodos usam ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) para atualizar a estimativa do gradiente ok okgo, cujo objetivo é fazer ok okgo abordagem ∇ f ( xk ) nome f(x_k)∇e(xo) .Especificamente, esperamos ok okgo capaz de satisfazer gk ≈ ∇ f ( xk ) g_k nome aproximado f(x_k)go≈∇e(xo) . Com base nessas estimativas de gradiente, executamos então uma etapa de gradiente aproximada da forma:
xk + 1 = xk − γ gk ( 11 ) x_{k+1} = x_k - gama g_k quad (11)xo+1=xo−γgo(11)
aqui γ > 0 gama > 0γ>0 é o parâmetro de tamanho do passo.
Para garantir que um tamanho de passo constante seja usado gama γγ Quando a iteração (11) pode convergir, precisamos garantir que a estimativa do gradiente ok okgo A variância tende a zero. Matematicamente, isso pode ser expresso como:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] → 0 como k → ∞ ( 12 ) Eleft[ | g_k - nome f(x_k) |^2 right] rightarrow 0 quad text{as } k rightarrow infty quad (12)E[∥go−∇e(xo)∥2]→0comoo→∞(12)
expectativas aqui EEE é baseado no algoritmo até o kko Todas as variáveis aleatórias são calculadas para iterações. A propriedade (12) garante que o método VR pode ser interrompido quando a solução ótima for alcançada. Consideramos esta propriedade como uma característica marcante da abordagem de RV e, portanto, a chamamos de propriedade de RV. Vale ressaltar que a expressão variância “reduzida” pode ser enganosa, pois na verdade a variância tende a zero. A propriedade (12) é um fator chave que permite que os métodos de RV alcancem uma convergência mais rápida na teoria (sob suposições apropriadas) e na prática (conforme mostrado na Figura 1).
Um método simples de melhoria pode fazer com que a fórmula recursiva SGD (5) alcance a convergência sem reduzir o tamanho do passo, ou seja, traduza cada gradiente. ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗), este método é definido da seguinte forma:
xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( x ∗ ) ) ( 13 ) x_{k+1} = x_k - gama (nome f_{i_k}(x_k) - nome f_{i_k}(x^*)) quad (13)xo+1=xo−γ(∇eeuo(xo)−∇eeuo(x∗))(13)
Este método é denominado SGD² [22].Embora geralmente não possamos saber com certeza cada ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗) , mas o SGD², por exemplo, pode ilustrar bem as características básicas do método de redução de variância.Além disso, muitos métodos de redução de variância podem ser vistos como uma forma aproximada do método SGD². Esses métodos não dependem do conhecido; ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗), mas em vez disso use um método que possa aproximar ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗) valor estimado.
Vale ressaltar que o SGD² utiliza uma estimativa imparcial do gradiente completo.porque ∇ f ( x ∗ ) = 0 nome f(x^*) = 0∇e(x∗)=0,F:
E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) − ∇ f ( x ∗ ) = ∇ f ( xk ) E[nome f_{i_k}(x_k) - nome f_{i_k}(x^*)] = nome f(x_k) - nome f(x^*) = nome f(x_k)E[∇eeuo(xo)−∇eeuo(x∗)]=∇e(xo)−∇e(x∗)=∇e(xo)
Além disso, quando o SGD² atingir a solução ótima, irá naturalmente parar porque para qualquer eueu,ter:
( ∇ fi ( x ) − ∇ fi ( x ∗ ) ) ∣ x = x ∗ = 0 (nome f_i(x) - nome f_i(x^*)) bigg|_{x=x^*} = 0(∇eeu(x)−∇eeu(x∗))
x=x∗=0
Após observação adicional, com xk x_kxo aproximar x ∗ x^*x∗(para consecutivas ∇ fi nabla f_i∇eeu), SGD² satisfaz a propriedade de redução de variância (12) porque:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] = E [ ∥ ∇ fik ( xk ) − ∇ fik ( x ∗ ) − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ∥ 2 ] Elevado[ | g_k - nome f(x_k) |^2 direita] = \Eesquerda[ | nome f_{i_k}(x_k) - nome f_{i_k}(x^*) - nome f(x_k) |^2 direita] leq Eleft[ | nome f_{i_k}(x_k) - nome f_{i_k}(x^*) |^2 direita]E[∥go−∇e(xo)∥2]=E[∥∇eeuo(xo)−∇eeuo(x∗)−∇e(xo)∥2]≤E[∥∇eeuo(xo)−∇eeuo(x∗)∥2]
Aqui usamos o Lema 2, vamos X = ∇ fik ( xk ) − ∇ fik ( x ∗ ) X = nome f_{i_k}(x_k) - nome f_{i_k}(x^*)X=∇eeuo(xo)−∇eeuo(x∗), e aproveitou E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) E[nomear f_{i_k}(x_k) - nomear f_{i_k}(x^*)] = nomear f(x_k)E[∇eeuo(xo)−∇eeuo(x∗)]=∇e(xo) natureza. Esta propriedade indica que o SGD² possui velocidade de convergência mais rápida do que os métodos SGD tradicionais, que detalhamos no Apêndice B.
Nesta seção apresentaremos duas suposições padrão usadas para analisar o método de redução de variância (VR) e discutiremos o efeito de aceleração que pode ser alcançado sob essas suposições em comparação com o método SGD tradicional. Primeiro, assumimos que o gradiente tem continuidade de Lipschitz, o que significa que a taxa de variação do gradiente é finita.
Assumimos que a função ffeé diferenciável e é LLeu- suave, para todos xxx e aaae e alguém 0 < L < ∞ 0 < L < infinito0<eu<∞,As seguintes condições:
∥ ∇ f ( x ) − ∇ f ( y ) ∥ ≤ L ∥ x − y ∥ ( 14 ) |nome f(x) - nome f(y)| leq L|x - y| quad (14)∥∇e(x)−∇e(e)∥≤eu∥x−e∥(14)
Isto significa que cada fi : R d → R fi: mathbb{R}^d seta direita mathbb{R}eeu:Re→R é diferenciável, Eu e Eueueu- suave, nós definimos L máx. L_{texto{máx.}}eumáx. para máx { L 1 , . . . , L n } máx. {L_1, . . . , Eu_n}máx.{eu1,...,eue}。
Embora esta seja geralmente considerada uma suposição fraca, nos capítulos subsequentes discutiremos métodos de RV que são adequados para problemas não suaves. Para uma função univariada duas vezes diferenciável, LLeu-A suavidade pode ser intuitivamente entendida como: equivale a assumir que a segunda derivada é LLeu limite superior, ou seja ∣ f ′ ′ ( x ) ∣ ≤ L |f''(x)| leq L∣e′′(x)∣≤eu para todos x ∈ R dx em mathbb{R}^dx∈Re .Para funções duas vezes diferenciáveis de múltiplas variáveis, é equivalente a assumir uma matriz Hessiana ∇ 2 f ( x ) nome^2 f(x)∇2e(x) O valor singular de LLeu limite superior.
A segunda hipótese que consideramos é que a função (f) é μmμ-Fortemente convexo, o que significa que para um certo μ > 0 mu > 0μ>0,função x ↦ f ( x ) − μ 2 ∥ x ∥ 2 x mapas para f(x) - frac{mu}{2}|x|^2x↦e(x)−2μ∥x∥2 É convexo.Além disso, para cada eu = 1 , . . . , ni = 1, . . . , nãoeu=1,...,e, fi : R d → R fi: mathbb{R}^d seta direita mathbb{R}eeu:Re→R É convexo.
Esta é uma suposição forte.No problema dos mínimos quadrados, cada (fi$ é convexo, mas a função geral (f) está apenas na matriz de projeto Um : = [ um 1 , . . . , um ] Um := [ a_1 , . . . , um_n]A:=[a1,...,ae] É fortemente convexo apenas se tiver classificação de linha completa. O problema de regressão logística regularizada L2 satisfaz esta suposição devido à existência do termo de regularização, onde μ ≥ λ mu geq lambdaμ≥λ。
Uma importante classe de problemas que satisfazem essas suposições são os problemas de otimização da forma:
x ∗ ∈ arg min x ∈ R df ( x ) = 1 n ∑ i = 1 n ℓ i ( ai T x ) + λ 2 ∥ x ∥ 2 ( 15 ) x^* em argmin_{x em 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∗∈argx∈Remínimoe(x)=e1eu=1∑eℓeu(aeuEx)+2λ∥x∥2(15)
onde cada função de "perda" ℓ i : R → R ell_i: mathbb{R} seta para a direita mathbb{R}ℓeu:R→R é duas vezes diferenciável e sua segunda derivada ℓ eu ′ ′ ell_i''ℓeu′′ está restrito a 0 e algum limite superior MILÍMETROSM entre. Isso inclui uma variedade de funções de perda com regularização L2 em aprendizado de máquina, como mínimos quadrados, regressão logística, regressão probit, regressão robusta de Huber, etc.Neste caso, para todos eueu,Nós temos Eu ≤ M ∥ ai ∥ 2 + λ L_i leq M|a_i|^2 + lambdaeueu≤M∥aeu∥2+λ e μ ≥ λ mu geq lambdaμ≥λ。
Sob essas suposições, a taxa de convergência do método gradiente descendente (GD) é determinada pelo número de condição κ : = L / μ kappa := L/muκ:=eu/μ Decidir. O número de condição é sempre maior ou igual a 1 e, quando é significativamente maior que 1, os contornos da função tornam-se muito elípticos, fazendo com que as iterações do método GD oscilem.Pelo contrário, quando e kappaκ Quando está próximo de 1, o método GD converge mais rapidamente.
Nas Suposições 1 e 2, o método VR converge a uma taxa linear.Dizemos que o valor da função de um método aleatório ({f(x_k)}) é dado por 0 < ρ ≤ 1 0 < rho leq 10<ρ≤1 A taxa de convergência linear (sob expectativa), se existir uma constante C > 0 C > 0C>0 Faz:
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 para todos k quad (16)E[e(xo)]−e(x∗)≤(1−ρ)oC=O(experiência(−oρ))∀o(16)
Isto contrasta com os métodos clássicos de SGD que dependem apenas de estimativas imparciais do gradiente em cada iteração, que apenas obtêm taxas sublineares sob estas suposições:
E [ f ( xk ) ] − f ( x ∗ ) ≤ O ( 1 / k ) E[f(x_k)] - f(x^*) leq O(1/k)E[e(xo)]−e(x∗)≤O(1/o)
O mínimo que satisfaz esta desigualdade kko É chamada de complexidade iterativa do algoritmo. A seguir estão a complexidade iterativa e o custo de uma iteração para variantes básicas dos métodos GD, SGD e VR:
algoritmo | Número de iterações | custo de uma iteração |
---|---|---|
GD | O ( κ log ( 1 / ϵ ) ) O(kappa log(1/epsilon))O(κeisg(1/ϵ)) | O ( n ) O(n)O(e) |
Dólar de Singapura | O ( κ max max ( 1 / ϵ ) ) O(kappa_{text{max}} max(1/epsilon))O(κmáx.máx.(1/ϵ)) | O ( 1 ) O(1)O(1) |
RV | O ( ( κ máx + n ) log ( 1 / ϵ ) ) O((kappa_{text{máx}} + n) log(1/epsilon))O((κmáx.+e)eisg(1/ϵ)) | O ( 1 ) O(1)O(1) |
O tempo total de execução de um algoritmo é determinado pelo produto da complexidade da iteração pelo tempo de execução da iteração.usado aqui κ máx : = máx i L i / μ kappa_{text{máx}} := máx_i L_i/muκmáx.:=máx.eueueu/μ .Perceber κ máx ≥ κ kappa_{text{máx}} geq kappaκmáx.≥κ; Portanto, a complexidade da iteração do GD é menor que a do método VR.
No entanto, como o custo por iteração do GD é o do método VR nãoe vezes, o método VR é superior em termos de tempo total de execução.
A vantagem dos métodos SGD clássicos é que o seu tempo de execução e taxa de convergência não dependem de nãoe, mas tem uma tolerância ϵ épsilonϵ A dependência é muito pior, o que explica o fraco desempenho do SGD quando a tolerância é pequena.
No Apêndice B, fornecemos uma prova simples mostrando que o método SGD² tem a mesma complexidade iterativa que o método VR.
O desenvolvimento de métodos de redução de variância (VR) passou por vários estágios, e o lote inicial de métodos resultou em taxas de convergência significativamente melhoradas. O início desta série de métodos é o algoritmo SAG. Posteriormente, o algoritmo estocástico de subida de coordenadas duplas (SDCA), o algoritmo MISO, o algoritmo estocástico de redução de variância (SVRG/S2GD) e o algoritmo SAGA (que significa SAG "melhorado") surgiram um após o outro.
Neste capítulo, examinaremos mais de perto esses métodos pioneiros de RV. No Capítulo 4, exploraremos alguns métodos mais recentes que apresentam características superiores em comparação com esses métodos básicos em cenários de aplicação específicos.
Nossa exploração do primeiro método de redução de variância (VR) começa com a imitação da estrutura gradiente completa.Como o gradiente completo ∇ f ( x ) nome f(x)∇e(x) é tudo ∇ fi ( x ) nome f_i(x)∇eeu(x) uma média simples dos gradientes, então nossa estimativa do gradiente completo ok okgo Deve também ser a média dessas estimativas de gradiente. Essa ideia deu origem ao nosso primeiro método de VR: o método do gradiente médio estocástico (SAG).
O método SAG [37], [65] é uma versão aleatória do método de gradiente agregado incremental inicial (IAG) [4]. A ideia central do SAG é que para cada ponto de dados eueu manter uma estimativa vik ≈ ∇ fi ( xk ) v_{ik} aprox nome f_i(x_k)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu sei≈∇eeu(xo) .Então, use estes vik v_{ik}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu sei A média dos valores é utilizada como estimativa do gradiente completo, ou seja:
g ˉ k = 1 n ∑ j = 1 nvjk ≈ 1 n ∑ j = 1 n ∇ fj ( xk ) = ∇ f ( xk ) ( 18 ) bar{g}_k = frac{1}{n} soma_{j=1}^{n} v_{jk} aprox. frac{1}{n} soma_{j=1}^{n} nome f_j(x_k) = nome f(x_k) quad (18)gˉo=e1eu=1∑evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeira≈e1eu=1∑e∇eeu(xo)=∇e(xo)(18)
Em cada iteração do SAG, do conjunto { 1 , … , n } {1, pontos, n}{1,…,e} Extraia um índice de eu sei eu seieuoe, em seguida, atualizado de acordo com as seguintes regras vjk v_{jk}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeira:
vjkk + 1 = { ∇ fik ( xk ) , se j = ikvjkk , se j ≠ ik ( 19 ) v_{jk}^{k+1} ={∇eeuo(xo),seeu=euovocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêoeuo,seeu≠euo quadruplo (19)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeirao+1={∇eeuo(xo),vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeirao,seeu=euoseeu=euo(19)
Entre eles, cada v 0 eu v_{0i}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê0eu Pode ser inicializado em zero ou ∇ fi ( x 0 ) nome f_i(x_0)∇eeu(x0) valor aproximado.Com a solução x ∗ x^*x∗ aproximação, cada vik v_{ik}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu sei convergirá gradualmente para ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗), satisfazendo assim a propriedade VR (12).
Para implementar o SAG de forma eficiente, precisamos prestar atenção ao cálculo g ˉ k barra{g}_kgˉo para evitar começar a soma do zero todas as vezes nãoe vetor, porque isso é nãoe O custo é alto quando é grande.Felizmente, como cada iteração possui apenas um vik v_{ik}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu sei Os termos mudarão e não teremos que recalcular o valor total todas as vezes.Especificamente, suponha que durante a iteração kko Índice extraído de eu sei eu seieuo, então há:
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} soma_{subpilha{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ˉo=e1eu=1eu=euo∑evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeira+e1vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuoo=gˉo−1−e1vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuoo−1+e1vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuoo(20)
Já que além de vik v_{i_k}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuo tudo exceto vjk v_{jk}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêbrincadeira Os valores permanecem todos os mesmos, apenas armazenamos cada um JJ-J ...eu Um vetor correspondente a vj v_jvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu . O Algoritmo 1 mostra a implementação específica do método SAG.
SAG é o primeiro método estocástico a alcançar convergência linear e sua complexidade de iteração é O ( ( κ máx + n ) log ( 1 / ϵ ) ) O((kappa_{text{máx}} + n) log(1/epsilon))O((κmáx.+e)eisg(1/ϵ)), usando o tamanho do passo γ = O ( 1 / L máx ) gama = O(1/L_{texto{máx}})γ=O(1/eumáx.) . Essa convergência linear pode ser observada na Figura 1.Vale ressaltar que devido L máx. L_{texto{máx.}}eumáx.-Função suave para qualquer L ′ ≥ L máx. L' geq L_{texto{máx.}}eu′≥eumáx. Também E ′ E'eu′- Os métodos SAG suaves alcançam taxas de convergência linear para tamanhos de passo suficientemente pequenos, em contraste com os métodos SGD clássicos, que apenas alcançam taxas sublineares com sequências de tamanhos de passo decrescentes que são difíceis de ajustar na prática.
Na época, a convergência linear do SAG foi um avanço significativo porque computava apenas um gradiente estocástico (processando um único ponto de dados) em cada iteração. No entanto, a prova de convergência fornecida por Schmidt et al. [65] é muito complexa e depende de etapas verificadas por computador. Uma das principais razões pelas quais o SAG é difícil de analisar é que ok okgo é uma estimativa tendenciosa do gradiente.
A seguir, apresentamos o método SAGA, uma variante do SAG que explora o conceito de covariáveis para criar uma variante imparcial do método SAG que tem desempenho semelhante, mas é mais fácil de analisar.
Algoritmo 1: Método SAG
Uma estimativa de gradiente imparcial básica reduzida ∇ fik ( xk ) nome f_{i_k}(x_k)∇eeuo(xo) A abordagem da variância se dá por meio do uso das chamadas covariáveis, ou variáveis de controle.para i = 1 , … , ni = 1, ldots, neu=1,…,e,configurar vi ∈ R d v_i em mathbb{R}^dvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu∈Re é um vetor.Usando esses vetores, podemos converter o gradiente completo ∇ f ( x ) nome f(x)∇e(x) Reescrito como:
∇ f ( x ) = 1 n ∑ i = 1 n ( ∇ fi ( x ) − vi + vi ) = 1 n ∑ i = 1 n ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nome f(x) = frac{1}{n} soma_{i=1}^{n}(nome f_i(x) - v_i + v_i) = frac{1}{n} soma_{i=1}^{n} nome f_i(x) - v_i + frac{1}{n} soma_{j=1}^{n} v_j∇e(x)=e1eu=1∑e(∇eeu(x)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu+vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu)=e1eu=1∑e∇eeu(x)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu+e1eu=1∑evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu
: = 1 n ∑ i = 1 n ∇ fi ( x , v ) ( 21 ) := frac{1}{n} sum_{i=1}^{n} nome f_i(x, v) quad (21):=e1eu=1∑e∇eeu(x,vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê)(21)
que define ∇ fi ( x , v ) : = ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nome f_i(x, v) := nome f_i(x) - v_i + frac{1}{n} soma_{j=1}^{n} v_j∇eeu(x,vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê):=∇eeu(x)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu+e1∑eu=1evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu .Agora, podemos amostrar aleatoriamente um ∇ fi ( x , v ) nome f_i(x, v)∇eeu(x,vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê) para construir o gradiente completo ∇ f ( x ) nome f(x)∇e(x) Uma estimativa imparcial de eu ∈ { 1 , … , n } eu em {1, ldots, n}eu∈{1,…,e}, você pode aplicar o método SGD e usar a estimativa de gradiente:
gk = ∇ fik ( xk , v ) = ∇ fik ( xk ) − vik + 1 n ∑ j = 1 nvj ( 22 ) g_k = nome f_{i_k}(x_k, v) = nome f_{i_k}(x_k) - v_{i_k} + frac{1}{n} soma_{j=1}^{n} v_j quad (22)go=∇eeuo(xo,vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê)=∇eeuo(xo)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuo+e1eu=1∑evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu(22)
para observação eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu A diferença do par de seleção ok okgo influência, podemos gk = ∇ fik ( xk , v ) g_k = nome f_{i_k}(x_k, v)go=∇eeuo(xo,vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê) Substitua e use E i ∼ 1 n [ vi ] = 1 n ∑ j = 1 nvj E_i sim frac{1}{n}[v_i] = frac{1}{n} soma_{j=1}^{n} v_jEeu∼e1[vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu]=e1∑eu=1evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu Para calcular a expectativa, obtemos:
E [ ∥ ∇ fi ( xk ) − vi + E i ∼ 1 n [ vi − ∇ fi ( xk ) ] ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − vi ∥ 2 ] ( 23 ) E left[ |nome f_i(x_k) - v_i + E_i sim frac{1}{n}[v_i - nome f_i(x_k)]|^2 right] leq E left[ |nome f_i(x_k) - v_i|^2 right] quad (23)E[∥∇eeu(xo)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu+Eeu∼e1[vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu−∇eeu(xo)]∥2]≤E[∥∇eeu(xo)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu∥2](23)
O lema 2 é usado aqui, onde X = ∇ fi ( xk ) − vi X = nome f_i(x_k) - v_iX=∇eeu(xo)−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu .Este limite (23) mostra que se eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu juntamente com kko O aumento está próximo de ∇ fi ( xk ) nome f_i(x_k)∇eeu(xo) , podemos obter atributos VR (12).É por isso que chamamos eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu são covariáveis e podemos selecioná-las para reduzir a variância.
Por exemplo, esta abordagem também é implementada pelo método SGD² (13), onde vi = ∇ fi ( x ∗ ) v_i = nome f_i(x^*)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu=∇eeu(x∗) .No entanto, isso não é comumente usado na prática porque geralmente não sabemos ∇ fi ( x ∗ ) nome f_i(x^*)∇eeu(x∗) .Uma opção mais prática é eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu como sabemos x ˉ i ∈ R d bar{x}_i em mathbb{R}^dxˉeu∈Re gradiente próximo ∇ fi ( x ˉ i ) nome f_i(bar{x}_i)∇eeu(xˉeu) . SAGA para cada função fi f_ieeu use um ponto de referência x ˉ i ∈ R d bar{x}_i em mathbb{R}^dxˉeu∈Ree use covariáveis vi = ∇ fi ( x ˉ i ) v_i = nome f_i(bar{x}_i)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu=∇eeu(xˉeu), cada um dos quais x ˉ i barra{x}_ixˉeu será nossa última avaliação fi f_ieeu apontar. Usando essas covariáveis, podemos construir uma estimativa de gradiente, seguindo (22), fornecendo:
gk = ∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + 1 n ∑ j = 1 n ∇ fj ( x ˉ j ) ( 24 ) g_k = nome f_{i_k}(x_k) - nome f_{i_k}(bar{x}_{i_k}) + frac{1}{n} soma_{j=1}^{n} nome f_j(bar{x}_j) quad (24)go=∇eeuo(xo)−∇eeuo(xˉeuo)+e1eu=1∑e∇eeu(xˉeu)(24)
Para implementar SAGA podemos armazenar gradientes ∇ fi ( x ˉ i ) nome f_i(bar{x}_i)∇eeu(xˉeu) em vez de nãoe ponto de referência x ˉ i barra{x}_ixˉeu .Quer dizer, suponha vj = ∇ fj ( x ˉ j ) v_j = nome f_j(bar{x}_j)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu=∇eeu(xˉeu) para j ∈ { 1 , … , n } j em {1, ldots, n}eu∈{1,…,e}, em cada iteração, atualizamos um gradiente estocástico como SAG vj v_jvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu。
Algoritmo 2 SAGA
O método SAGA tem a mesma complexidade de iteração que SAG O ( ( κ máx + n ) log ( 1 / ϵ ) ) O((kappa_{text{máx}} + n) log(1/epsilon))O((κmáx.+e)eisg(1/ϵ)), usando o tamanho do passo γ = O ( 1 / L máx ) gama = O(1/L_{texto{máx}})γ=O(1/eumáx.) , mas a prova é muito mais simples.No entanto, assim como o SAG, o método SAGA requer armazenamento nãoe vetores auxiliares vi ∈ R d v_i em mathbb{R}^dvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu∈Re para i = 1 , … , ni = 1, ldots, neu=1,…,e, o que significa a necessidade O ( nd ) O(nd)O(ee) de espaço de armazenamento.quando dde e nãoe Quando ambos são grandes, isso pode não ser viável. Na próxima seção, detalhamos como reduzir esse requisito de memória para modelos comuns, como modelos lineares regularizados.
quando puder nãoe Quando dois vetores auxiliares são armazenados na memória, SAG e SAGA tendem a se comportar de forma semelhante. Se este requisito de memória for muito alto, o método SVRG, que revisaremos na próxima seção, é uma boa alternativa. O método SVRG atinge a mesma taxa de convergência e é quase tão rápido na prática, mas requer apenas O ( d ) O(d)O(e) de memória, para questões gerais.
Antes do surgimento do método SAGA, alguns trabalhos iniciais introduziram covariáveis pela primeira vez para resolver o problema de alta memória exigido pelo método SAG.Esses estudos baseiam-se em um ponto de referência fixo x ˉ ∈ R d barra{x} em mathbb{R}^dxˉ∈Re covariáveis, calculamos o gradiente completo naquele ponto ∇ f ( x ˉ ) nome f(bar{x})∇e(xˉ) .armazenando pontos de referência x ˉ barra{x}xˉ e o gradiente completo correspondente ∇ f ( x ˉ ) nome f(bar{x})∇e(xˉ), podemos fazer isso sem armazenar cada ∇ fj ( x ˉ ) nome f_j(bar{x})∇eeu(xˉ) No caso, use x ˉ j = x ˉ barra{x}_j = barra{x}xˉeu=xˉ para todos JJ-J ...eu para implementar a atualização (24).Especificamente, em vez de armazenar esses vetores, utilizamos os pontos de referência armazenados em cada iteração x ˉ barra{x}xˉ calcular ∇ fik ( x ˉ ) nome f_{i_k}(bar{x})∇eeuo(xˉ) . Este método foi originalmente proposto por diferentes autores com nomes diferentes, mas posteriormente foi unificado como método SVRG, seguindo a nomenclatura de [28] e [84].
Formalizamos o método SVRG no Algoritmo 3.
Usando (23), podemos derivar a estimativa do gradiente ok okgo A variância de é limitada:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − ∇ fi ( x ˉ ) ∥ 2 ] ≤ L max 2 ∥ xk − x ˉ ∥ 2 Elevação[ | g_k - nome f(x_k) |^2 direita] leq Elevação[ | nome f_i(x_k) - nome f_i(bar{x}) |^2 direita] leq L_{texto{máx}}^2 | x_k - barra{x} |^2E[∥go−∇e(xo)∥2]≤E[∥∇eeu(xo)−∇eeu(xˉ)∥2]≤eumáx.2∥xo−xˉ∥2
onde a segunda desigualdade usa cada fi f_ieeu de Eu e Eueueu-Suavidade.
Vale ressaltar que o ponto de referência x ˉ barra{x}xˉ Quanto mais próximo do ponto atual xk x_kxo, menor será a variância da estimativa do gradiente.
Para que o método SVRG seja eficaz, precisamos atualizar os pontos de referência com frequência x ˉ barra{x}xˉ (exigindo assim o cálculo do gradiente total) é ponderado em relação ao benefício da variância reduzida.Por esta razão, cada um de nós ttpara Atualize o ponto de referência uma vez a cada iteração para torná-lo próximo de xk x_kxo (Ver linha 11 do Algoritmo II-C).Ou seja, o método SVRG contém dois loops: um loop externo seme, onde o gradiente de referência é calculado ∇ f ( x ˉ s − 1 ) nome f(bar{x}_{s-1})∇e(xˉe−1)(linha 4), e um loop interno onde o ponto de referência é fixo e a iteração interna é atualizada com base na etapa do gradiente estocástico (22) xk x_kxo(Linha 10).
Ao contrário do SAG e SAGA, o SVRG requer apenas O ( d ) O(d)O(e) de memória. As desvantagens do SVRG incluem: 1) Temos um parâmetro extra ttpara, ou seja, o comprimento do loop interno, precisa ser ajustado 2) Dois gradientes precisam ser calculados para cada iteração, e o gradiente completo precisa ser calculado sempre que o ponto de referência for alterado;
Johnson e Zhang [28] mostraram que SVRG tem complexidade iterativa O ( ( κ máx + n ) log ( 1 / ϵ ) ) O((kappa_{text{máx}} + n) log(1/epsilon))O((κmáx.+e)eisg(1/ϵ)) , semelhante a SAG e SAGA.Este é o número de loops dentro da hipótese ttpara da coleção { 1 , … , m } {1, pontos, m}{1,…,eu} Obtido sob condição de amostragem uniforme, onde L máx. L_{texto{máx.}}eumáx., μmμ, tamanho do passo gama γγ e ttpara Certas dependências devem ser satisfeitas entre eles.Na prática, usando γ = O ( 1 / L máx ) gama = O(1/L_{texto{máx}})γ=O(1/eumáx.) e comprimento do loop interno t = nt = npara=e, o SVRG tende a ter um bom desempenho, que é exatamente a configuração que usamos na Figura 1.
Agora, existem muitas variações do método SVRG original.Por exemplo, algumas variações usam ttpara distribuição alternativa [32], algumas variantes permitem a forma O ( 1 / L máx ) O(1/L_{texto{máx}})O(1/eumáx.) O tamanho do passo [27], [33], [35].Existem também algumas variações usando ∇ f ( x ˉ ) nome f(bar{x})∇e(xˉ) aproximação de minilote para reduzir o custo dessas avaliações de gradiente completo e aumentar o tamanho do minilote para preservar as propriedades de VR.Existem também algumas variantes onde as atualizações são repetidas no loop interno de acordo com [54] ok okgo:
[ g_k = nome f_{i_k}(x_k) - nome f_{i_k}(x_{k-1}) + g_{k-1} quad (25) ]
Isso fornece uma aproximação mais local. O uso desta variante de atualização contínua (25) mostra vantagens únicas na minimização de funções não convexas, conforme discutimos brevemente na Seção IV.Finalmente, observe que o SVRG pode aproveitar ∇ f ( x ˉ s ) nome f(bar{x}_s)∇e(xˉe) valor para ajudar a decidir quando encerrar o algoritmo.
Algoritmo 3 Método SVRG
Uma desvantagem dos métodos SAG e SVRG é que o tamanho do passo depende de valores desconhecidos que podem ser desconhecidos em alguns problemas. L máx. L_{texto{máx.}}eumáx. . Antes do SVRG, o método SDCA [70], como um dos primeiros métodos de RV, estendeu a pesquisa sobre métodos de descida coordenada para problemas de soma finita. A ideia por trás do SDCA e suas variantes é que as coordenadas do gradiente forneçam uma estimativa natural do gradiente que reduz a variância.Especificamente, suponha j ∈ { 1 , … , d } j em {1, ldots, d}eu∈{1,…,e}e definir ∇ jf ( x ) : = ( ∂ f ( x ) ∂ xj ) ej nabla_j f(x) := left( frac{parcial f(x)}{parcial x_j} direita) e_j∇eue(x):=(∂xeu∂e(x))eeu é o décimo de (f (x)) JJ-J ...eu derivadas em direções coordenadas, onde ej ∈ R d e_j em mathbb{R}^deeu∈Re É o primeiro JJ-J ...eu vetor unitário.Uma propriedade chave das derivadas de coordenadas é que ∇ jf ( x ∗ ) = 0 nome_j f(x^*) = 0∇eue(x∗)=0, porque sabemos ∇ f ( x ∗ ) = 0 nome f(x^*) = 0∇e(x∗)=0 .A derivada disso com cada ponto de dados ∇ fj nome f_j∇eeu diferente, o último é x ∗ x^*x∗ pode não ser zero. Portanto temos:
∥ ∇ f ( x ) − ∇ jf ( x ) ∥ 2 → 0 当 x → x ∗ ( 26 ) | nome f(x) - nome_j f(x) |^2 rightarrow 0 quad text{当} quad x rightarrow x^* quad (26)∥∇e(x)−∇eue(x)∥2→0quandox→x∗(26)
Isso significa que a derivada coordenada satisfaz a propriedade de redução de variância (12).Além disso, podemos usar ∇ jf ( x ) nome_j f(x)∇eue(x) construir ∇ f ( x ) nome f(x)∇e(x) uma estimativa imparcial de.Por exemplo, suponha JJ-J ...eu é da coleção { 1 , … , d } {1, ldots, d}{1,…,e} Um índice uniformemente selecionado aleatoriamente em .Portanto, para qualquer eu ∈ { 1 , … , d } eu em {1, ldots, d}eu∈{1,…,e},Nós temos P [ j = i ] = 1 d P[j = i] = frac{1}{d}P[eu=eu]=e1 . portanto, d × ∇ jf ( x ) d vezes nabla_j f(x)e×∇eue(x) sim ∇ f ( x ) nome f(x)∇e(x) Uma estimativa imparcial de porque:
E [ d ∇ jf ( x ) ] = d ∑ i = 1 d P [ j = i ] ∂ f ( x ) ∂ xiei = ∑ i = 1 d ∂ f ( x ) ∂ xiei = ∇ f ( x ) Eleft[ d nome_j f(x) direita] = d soma_{i=1}^{d} P[j = i] frac{parcial f(x)}{parcial x_i} e_i = soma_{i=1}^{d} frac{parcial f(x)}{parcial x_i} e_i = nome_f(x)E[e∇eue(x)]=eeu=1∑eP[eu=eu]∂xeu∂e(x)eeu=eu=1∑e∂xeu∂e(x)eeu=∇e(x)
portanto, ∇ jf ( x ) nome_j f(x)∇eue(x) Tem todas as propriedades ideais que esperaríamos para VR estimando gradientes completos, sem a necessidade de usar covariáveis. Uma desvantagem de usar esse gradiente de coordenadas é que ele é computacionalmente caro para o nosso problema de soma (2).Isso ocorre porque o cálculo ∇ jf ( x ) nome_j f(x)∇eue(x) Precisa percorrer todo o conjunto de dados porque ∇ jf ( x ) = 1 n ∑ i = 1 n ∇ jfi ( x ) nome_j f(x) = frac{1}{n} soma_{i=1}^{n} nome_j f_i(x)∇eue(x)=e1∑eu=1e∇eueeu(x) . Portanto, usar derivadas coordenadas parece incompatível com a estrutura do nosso problema de soma. No entanto, muitas vezes podemos reescrever o problema original (2) numa chamada formulação dual, onde as derivadas coordenadas podem explorar a estrutura inerente.
Por exemplo, a fórmula dupla do modelo linear regularizado L2 (15) é:
v ∗ ∈ arg max v ∈ R n 1 n ∑ i = 1 n − ℓ i ∗ ( − vi ) − λ 2 ∥ 1 λ ∑ i = 1 nviai ∥ 2 ( 27 ) v^* em argmax_{v em mathbb{R}^n} frac{1}{n} sum_{i=1}^{n} -ell_i^*(-v_i) - frac{lambda}{2} esquerda| frac{1}{lambda} sum_{i=1}^{n} v_i a_i direita|^2 quad (27)vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê∗∈argvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê∈Remáx.e1eu=1∑e−ℓeu∗(−vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu)−2λ
λ1eu=1∑evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuaeu
2(27)
em ℓ i ∗ ( v ) ell_i^*(v)ℓeu∗(vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê) sim ℓ eu ell_iℓeu conjugado convexo.Podemos usar mapeamento x = 1 λ ∑ i = 1 nviaix = frac{1}{lambda} soma_{i=1}^{n} v_i a_ix=λ1∑eu=1evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuaeu para restaurar o problema original (15) xxx variável.resolverá v ∗ v^*vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocê∗ Substituindo no lado direito do mapeamento acima, podemos obter a solução de (15) x ∗ x^*x∗。
Observe que esse duplo problema tem nãoe variáveis reais vi ∈ R v_i em mathbb{R}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu∈R , correspondendo a um para cada amostra de treinamento.Além disso, cada função de perda dupla ℓ eu ∗ ell_i^*ℓeu∗ apenas eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu A função. Ou seja, o primeiro termo da função de perda é separável coordenadamente. Esta separabilidade em coordenadas, aliada à forma simples do segundo termo, permite-nos implementar de forma eficiente o método de subida de coordenadas.Na verdade, Shalev-Shwartz e Zhang mostraram que a subida coordenada neste problema tem complexidade iterativa semelhante a SAG, SAGA e SVRG O ( ( κ máx + n ) log ( 1 / ϵ ) ) O((kappa_{text{máx}} + n) log(1/epsilon))O((κmáx.+e)eisg(1/ϵ))。
O custo da iteração e a estrutura do algoritmo também são muito semelhantes: soma por rastreamento ∑ i = 1 nviai soma_{i=1}^{n} v_i a_i∑eu=1evocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuaeu Para lidar com o segundo termo em (27), cada iteração de subida de coordenadas duplas precisa considerar apenas uma amostra de treinamento, e o custo de cada iteração é o mesmo que nãoe Nada para fazer.Além disso, podemos usar uma pesquisa de linha 1D para calcular com eficiência o tamanho do passo para maximizar o máximo possível. eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu Duplo objetivo da função.Isto significa que mesmo sem L máx. L_{texto{máx.}}eumáx. Ou com o conhecimento de quantidades relevantes, também é possível obter tempos de execução rápidos no pior caso para métodos de VR.
Para implementar o método básico de redução de variância (RV) e obter um desempenho razoável, vários problemas de implementação devem ser abordados. Nesta seção, discutimos vários assuntos não abordados acima.
No campo dos algoritmos de otimização, especialmente em métodos de redução de variação, como gradiente médio estocástico (SAG), algoritmo de gradiente médio estocástico (SAGA) e gradiente estocástico (SVRG), a configuração do tamanho do passo é uma questão fundamental.Embora para o método estocástico de subida de coordenadas duplas (SDCA) possamos usar o objetivo duplo para determinar o tamanho do passo, a base teórica para os métodos de variáveis originais de SAG, SAGA e SVRG é que o tamanho do passo deve ser γ = O ( 1 L máx ) gama = O esquerda (frac {1} {L_ {texto {máx}}} direita)γ=O(eumáx.1) forma.No entanto, em aplicações práticas, muitas vezes não sabemos L máx. L_{texto{máx.}}eumáx. O valor exato de e o uso de outros tamanhos de passo pode proporcionar melhor desempenho.
Uma estratégia clássica para definir o tamanho do passo no método de descida gradiente total (GD completo) é a pesquisa de linha Armijo.dado ponto atual xk x_kxo e direção de pesquisa ok okgo, Pesquisa de linha Armijo em γ k gama_kγo é realizado na linha, que é definida como γ k ∈ { γ : xk + γ gk } gama_k em {gama : x_k + gama g_k}γo∈{γ:xo+γgo}, e a função deve ser suficientemente reduzida, ou seja:
f ( xk + γ kgk ) < f ( xk ) − c γ k ∥ ∇ f ( xk ) ∥ 2 f(x_k + gama_k g_k) < f(x_k) - c gama_k |nome f(x_k)|^2e(xo+γogo)<e(xo)−cγo∥∇e(xo)∥2
No entanto, esta abordagem requer múltiplas etapas candidatas γ k gama_kγo Cálculo f ( xk + γ kgk ) f(x_k + gama_k g_k)e(xo+γogo), que avalia f(x) f(x)e(x) Custo proibitivo quando se trata de percorrer todo o conjunto de dados.
Para resolver este problema, um método de variação aleatória pode ser usado para encontrar aqueles que atendem às seguintes condições γ k gama_kγo:
fik ( xk + γ kgk ) < fik ( xk ) − c γ k ∥ ∇ fik ( xk ) ∥ 2 f_{ik}(x_k + gama_k g_k) < f_{ik}(x_k) - c gama_k |nome f_{ik}(x_k)|^2eeu sei(xo+γogo)<eeu sei(xo)−cγo∥∇eeu sei(xo)∥2
Esta abordagem geralmente funciona bem na prática, especialmente quando ∥ ∇ fik ( xk ) ∥ |nome f_{ik}(x_k)|∥∇eeu sei(xo)∥ não está perto de zero, embora não exista actualmente nenhuma teoria que apoie esta abordagem.
Além disso, Mairal propôs uma "técnica Bottou" para definir o tamanho do passo na prática. Este método realiza uma pesquisa binária pegando uma pequena porção do conjunto de dados (por exemplo, 5%) para tentar encontrar o tamanho ideal do passo em uma única passagem por esta amostra. Semelhante à busca linear Armijo, este método geralmente funciona bem na prática, mas novamente carece de uma base teórica.
Observe que o conteúdo acima é uma reformulação do texto original, usando o formato Markdown para representar fórmulas e variáveis matemáticas.
No entanto, o método SDCA também apresenta algumas desvantagens.Primeiro, é necessário calcular o conjugado convexo ℓ eu ∗ ell_i^*ℓeu∗ em vez de um simples gradiente. Não temos um equivalente diferencial automático para conjugados convexos, portanto isso pode aumentar o esforço de implementação. Trabalhos recentes propuseram métodos SDCA "dual-free" que não requerem conjugação e, em vez disso, usam gradientes diretamente. Entretanto, nesses métodos não é mais possível rastrear o alvo duplo para definir o tamanho do passo.Em segundo lugar, embora a SDCA exija apenas O ( n + d ) O(n + d)O(e+e) memória para resolver o problema (15), mas para esta categoria de problema, SAG/SAGA só precisa O ( n + d ) O(n + d)O(e+e) de memória (veja a Seção 3).Uma variante do SDCA adequada para problemas mais gerais com SAG/SAGA O ( nd ) O(nd)O(ee) memória porque eu euvocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu tornar-se tendo dde vetor de elementos. Uma última desvantagem sutil do SDCA é que ele assume implicitamente uma forte constante de convexidade μmμ igual λ lambdaλ .para μmμ mais do que o λ lambdaλ problema, o método VR original geralmente supera significativamente o SDCA.
No campo da otimização de algoritmos, muitas vezes confiamos em resultados teóricos de complexidade iterativa para prever o pior número de iterações necessárias para que um algoritmo atinja uma precisão específica. No entanto, estes limites teóricos baseiam-se frequentemente em algumas constantes que não podemos prever e, em aplicações práticas, o algoritmo pode muitas vezes atingir a precisão esperada em menos iterações. Portanto, precisamos definir alguns critérios de teste para determinar quando o algoritmo deve ser finalizado.
No método tradicional de gradiente descendente completo (GD completo), geralmente usamos a norma do gradiente ∥ ∇ f ( xk ) ∥ | nome f(x_k) |∥∇e(xo)∥ Ou alguma outra quantidade relacionada a isso para decidir quando parar a iteração.Para o método SVRG podemos adotar o mesmo critério mas usar ∥ ∇ f ( x ˉ s ) ∥ | nome f(bar{x}_s) |∥∇e(xˉe)∥ como base para julgamento.Para o método SAG/SAGA, embora não calculemos explicitamente o gradiente completo, a quantidade $ g_{bar{k}} $ irá gradualmente se aproximar ∇ f ( xk ) nome f(x_k)∇e(xo), portanto, use ∥ gk ˉ ∥ | g_{bar{k}} |∥goˉ∥ como condição de parada é uma heurística razoável.
No método SDCA, com algum trabalho adicional de registro, podemos rastrear o gradiente do objetivo duplo sem adicionar custo assintótico adicional.Além disso, uma abordagem mais sistemática seria acompanhar a dupla lacuna, embora isso aumentasse a O ( n ) O(n)O(e) custo, mas é capaz de fornecer condições de rescisão com provas de lacuna dupla. Além disso, com base na condição de otimalidade de alvos fortemente convexos, o método MISO adota um método de princípios baseado no limite inferior quadrático [41].
A seguir estão fórmulas matemáticas e variáveis expressas no formato Markdown:
Observe que o conteúdo acima é uma reformulação do texto original, usando o formato Markdown para representar fórmulas e variáveis matemáticas.
Embora o algoritmo Stochastic Variational Reduction of Gradient (SVRG) elimine os requisitos de memória dos métodos anteriores de redução de variação, em aplicações práticas, os algoritmos SAG (Stochastic Average Gradient Descent) e SAGA (Stochastic Average Gradient Descent with Gradient Accumulation) são usados em muitos problemas. . tendem a exigir menos iterações do que o algoritmo SVRG.Isso desencadeou um pensamento: existem certos problemas que permitem que o SAG/SAGA O ( nd ) O(nd)O(ee) Os requisitos de memória são implementados abaixo. Esta seção explora uma classe de modelos lineares para os quais os requisitos de memória podem ser significativamente reduzidos.
Considere um modelo linear onde cada função f(x) f_i(x)eeu(x) Pode ser expresso como ξ i ( ai ⊤ x ) xi_i(mathbf{a}_i^top x)ξeu(aeu⊤x) .certo xxx A derivada fornece a forma gradiente:
∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nome f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_i∇eeu(x)=ξ′(aeu⊤x)aeu
aqui, ξ ′ xi'ξ′ expressar ξ xiξ a derivada de.Supondo que tenhamos acesso direto aos autovetores ai mathbf{a}_iaeu, então, para implementar o método SAG/SAGA, precisamos apenas armazenar o escalar ξ ( ai ⊤ x ) xi(mathbf{a}_i^top x)ξ(aeu⊤x) .Desta forma, os requisitos de memória variam de O ( nd ) O(nd)O(ee) reduzido a O ( n ) O(n)O(e) . O algoritmo SVRG também pode tirar vantagem desta estrutura de gradientes: armazenando este nãoe escalar, podemos reduzir o número de avaliações de gradiente necessárias por iteração "interna" do SVRG para 1 para esta classe de problemas.
Existem outros tipos de problemas, como modelos gráficos probabilísticos, que também oferecem a possibilidade de reduzir os requisitos de memória [66]. Através de estrutura de dados específica e otimização de algoritmo, os recursos de memória exigidos pelo algoritmo em tempo de execução podem ser ainda mais reduzidos.
A seguir estão fórmulas matemáticas e variáveis expressas no formato Markdown:
Em alguns problemas, o gradiente ∇ fi ( x ) nome f_i(x)∇eeu(x) Pode conter um grande número de valores zero, como um modelo linear com recursos esparsos.Neste caso, o algoritmo tradicional de descida gradiente estocástica (SGD) pode ser implementado de forma eficiente, com complexidade computacional linear no número de elementos diferentes de zero no gradiente, que geralmente é muito menor que a dimensão do problema dde . No entanto, nos métodos padrão de redução variacional (VR), esta vantagem não é explorada. Felizmente, existem duas maneiras conhecidas de melhorar isso.
A primeira melhoria foi proposta por Schmidt et al., que aproveita a simplicidade do processo de atualização e implementa uma variante de computação "on-the-fly" tal que o custo de cada iteração é proporcional ao número de números diferentes de zero. elementos.Tomando o SAG como exemplo (mas esta abordagem funciona para todas as variantes), isso é feito não armazenando o vetor completo após cada iteração vik v_{ik}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeu sei, mas calcula apenas aqueles correspondentes a elementos diferentes de zero vikj v_{ik_j}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuoeu, atualizando cada variável desde a última vez que esse elemento foi diferente de zero vikj v_{ik_j}vocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêocêeuoeu。
O segundo método de melhoria foi proposto por Leblond et al para SAGA, que atualiza a fórmula. xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + g ˉ k ) x_{k+1} = x_k - gama(nome f_{ik}(x_k) - nome f_{ik}(bar{x}_{ik}) + bar{g}_k)xo+1=xo−γ(∇eeu sei(xo)−∇eeu sei(xˉeu sei)+gˉo) Aleatoriedade adicional é introduzida. aqui, ∇ fik ( xk ) nome f_{ik}(x_k)∇eeu sei(xo) e ∇ fik ( x ˉ ik ) nome f_{ik}(bar{x}_{ik})∇eeu sei(xˉeu sei) é escasso e g ˉ k barra{g}_kgˉo é denso.Neste método, o termo denso ( g ˉ k ) j (bar{g}_k)_j(gˉo)eu Cada componente de é substituído por wj ( g ˉ k ) j w_j (bar{g}_k)_jceu(gˉo)eu,em w ∈ R dw em mathbb{R}^dc∈Re é um vetor esparso aleatório cujo conjunto de suporte está contido em ∇ fik ( xk ) nome f_{ik}(x_k)∇eeu sei(xo) , e espera-se que seja um vetor constante com todos os elementos iguais a 1. Dessa forma, o processo de atualização permanece imparcial (embora agora esparso), e o aumento da variância não afeta a taxa de convergência do algoritmo. Mais detalhes são fornecidos por Leblond et al.
A seguir estão fórmulas matemáticas e variáveis expressas no formato Markdown: