优化算法:从随机梯度下降到约束优化
1. 随机梯度下降的改进算法
1.1 SVRG 和 SAGA 算法
在随机梯度下降(SGD)的基础上,有一些改进算法可以提高计算效率和收敛速度。SVRG(随机方差缩减梯度)算法在计算 $\theta_{t + 1}$ 时具有无偏性,即 $E[\nabla L_t(\tilde{\theta})] = \nabla L(\tilde{\theta})$。而且每次迭代只涉及两次梯度计算,因为每一轮可以计算一次 $\nabla L(\tilde{\theta})$。在每一轮结束时,根据 $\theta_t$ 的最新值或迭代的运行平均值更新快照参数 $\tilde{\theta}$,并更新期望基线。SVRG 的迭代计算速度比全批量梯度下降(GD)快,并且能达到与 GD 相同的理论收敛速度。
SAGA(随机平均梯度加速)算法与 SVRG 不同,它只需要在算法开始时进行一次全批量梯度计算,但需要更多的内存来存储 $N$ 个梯度向量。具体步骤如下:
1. 初始化:计算所有 $n$ 的 $g_{local}^n = \nabla L_n(\theta_0)$,并计算平均值 $g_{avg} = \frac{1}{N} \sum_{n = 1}^N g_{local}^n$。
2. 在迭代 $t$ 时,使用梯度估计 $g_t = \nabla L_n(\theta_t) - g_{local}^n + g_{avg}$,其中 $n \sim Unif{1, \ldots, N}$ 是在迭代 $t$ 时采样的示例索引。
3. 更新 $g_{local}^n = \nabla L_n(\theta_t)$ 和 $g_{avg}$,用
超级会员免费看
订阅专栏 解锁全文
571

被折叠的 条评论
为什么被折叠?



