介绍:
在SGD中,由于收敛的速度太慢,所以后面就有人提出SAG基于梯度下降的算法。
SAG中的S是随机(Stochastic),A是平均(average),G是梯度(gradient)的意思。可以看到SAG是一种加速版本的SGD。
SAG其实每次计算时,利用了两个梯度的值,一个是前一次迭代的梯度值,另一个是新的梯度值。当然这两个梯度值都只是随机选取一个样本来计算。
直观上看,利用的信息量大了,收敛速度就应该比单纯用一个样本估计梯度值的SGD要快。在一定条件下SAG线性收敛,与全梯度下降(FGD)收敛速度一样。但是SAG带来的问题就是需要内存来维护(保存)每一个旧梯度值。
用空间换时间也是一种不错的思路。
优化问题:
SAG method for min 1n∑ni=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=d−yi+f′i(x) d = d − y i + f i ′ ( x )
yi=f′i(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