Stochastic average gradient(SAG) 算法

Stochastic average gradient(SAG)

介绍:

在SGD中,由于收敛的速度太慢,所以后面就有人提出SAG基于梯度下降的算法。

SAG中的S是随机(Stochastic),A是平均(average),G是梯度(gradient)的意思。可以看到SAG是一种加速版本的SGD。

SAG其实每次计算时,利用了两个梯度的值,一个是前一次迭代的梯度值,另一个是新的梯度值。当然这两个梯度值都只是随机选取一个样本来计算。

直观上看,利用的信息量大了,收敛速度就应该比单纯用一个样本估计梯度值的SGD要快。在一定条件下SAG线性收敛,与全梯度下降(FGD)收敛速度一样。但是SAG带来的问题就是需要内存来维护(保存)每一个旧梯度值。

用空间换时间也是一种不错的思路。

优化问题:

minxRpg(x)=1ni=1nfi(x) m i n x ∈ R p ⁡ g ( x ) = 1 n ∑ i = 1 n f i ( x )

迭代格式:
xk+1=xkαkni=1nyki x k + 1 = x k − α k n ∑ i = 1 n y i k

在每次迭代前随机选取一个 ik{1,2,,n} i k ∈ { 1 , 2 , … , n }
yki={fi(xk)yk1iifi=ikotherwise y i k = { f i ′ ( x k ) i f i = i k y i k − 1 o t h e r w i s e

伪代码:

SAG method for min 1nni=1fi(x) m i n   1 n ∑ i = 1 n f i ( x ) with step sized

d=0,yi=0for i=1,2,,n d = 0 , y i = 0 f o r   i = 1 , 2 , … , n

for k=0,1, k = 0 , 1 , … do

        Sample i i from {1,2,,n} { 1 , 2 , … , n }

​         d=dyi+fi(x) d = d − y i + f i ′ ( x )

​         yi=fi(x) y i = f i ′ ( x )

​         x=xαnd x = x − α n d

end for

原论文:SAG: Minimizing Finite Sums with the Stochastic Average Gradient

改进:SAGA: A Fast Incremental Gradient Method With Support for Non-Strongly Convex Composite Objectives

你可能感兴趣的:(优化算法)