4.高级算法
本节将探讨基本变分减少(VR)方法的几种拓展。这些拓展旨在处理更广泛的应用场景,包括非光滑问题和/或非强凸问题。此外,一些拓展利用算法技巧或问题结构的特性,设计出比基础方法更高效的算法。
4.1. SGD与VR方法的混合
VR方法的收敛速率ρ\rhoρ 与训练样本的数量nnn 成正比。这与经典SGD方法的收敛速率不同,SGD的收敛速率是次线性的,但并不依赖于nnn。这意味着在nnn 非常大的早期迭代中,VR方法可能不如经典SGD方法表现好。例如,在图1中可以看到,在前10个周期(数据遍历)中,SGD与两种VR方法相比具有竞争力。
为了改善VR方法对nnn 的依赖性,已经提出了几种混合SGD和VR方法。Konečný和Richtárik[32]以及Le Roux等人[37]分别分析了SAG和SVRG,当它们用SGD的nnn 次迭代进行初始化时。这并没有改变收敛速率,但显著改善了常数因子中对nnn 的依赖性。然而,这需要为这些初始SGD迭代设置步长,这比为VR方法设置步长更为复杂。
最近,一些方法被探索出来,它们同时保证了依赖于nnn 的线性收敛速率和不依赖于nnn 的次线性收敛速率。例如,Lei和Jordan展示了如何实现这种“两全其美”的结果,即使用逐渐增大的minibatch近似∇f(xˉ)\nabla f(\bar{x})∇f(xˉ) 的“实用”SVRG变体。
4.2.非均匀采样
除了改善对nnn 的依赖性,还有一系列工作专注于通过非均匀采样随机训练样本iki_kik 来改善对Lipschitz常数LiL_iLi 的依赖性。特别是,这些算法倾向于选择较大的LiL_iLi 值。这意味着梯度变化更快的样本被更频繁地采样。这通常与使用较大步长结合使用,该步长依赖于LiL_iLi 值的平均值而不是最大LiL_iLi 值。在适当的采样概率和步长选择下,这导致形式为
[ O\left((\kappa_{\text{mean}} + n) \log \left(\frac{1}{\epsilon}\right)\right) ]
的改进迭代复杂度,它依赖于κmean:=(1n∑iLi)/μ\kappa_{\text{mean}} := \left(\frac{1}{n} \sum_{i} L_i\right) / \muκmean:=(n1∑iLi)/μ 而不是依赖于κmax=(Lmax)/μ\kappa_{\text{max}} = (L_{\text{max}}) / \muκmax=(Lmax)/μ。在非均匀采样下,基本VR方法SVRG、SDCA和SAGA已经展示了这种改进的速率。
几乎所有现有方法在迭代过程中都使用固定的 {1, … ,n} 上的概率分布。然而,通过在算法执行期间自适应地改变概率,可以进一步改进这种选择。第一种这种类型的VR方法是ASDCA,由Csiba等人开发,它基于使用所谓的对偶残差更新SDCA中的概率。
Schmidt等人[65]提出了一种实证方法,尝试估计局部LiL_iLi 值(这可能比全局值小得多),并在实验中展示了显著的增益。Vainsencher等人提出了一种相关的方法,它使用局部LiL_iLi 估计并有理论支持。
4.3.最小批处理
另一种改善对 LiL_iLi 值依赖性的策略是使用最小批处理,类似于经典的minibatch SGD方法,以获得梯度的更好近似。这里我们关注固定批量大小的随机选择。也就是说,设 b∈Nb \in \mathbb{N}b∈N,我们从所有具有 bbb 个元素的集合中以均匀概率选择一个集合 Bk⊂{ 1,...,n}B_k \subset \{1, ..., n\}Bk⊂{ 1,...,n} 使得 ∣Bk∣=b|B_k| = b∣Bk∣=b。现在,我们可以通过将每个 ∇fi(xk)\nabla f_i(x_k)∇fi(xk) 替换为由 1b∑i∈Bk∇fi(xk)\frac{1}{b} \sum_{i \in B_k} \nabla f_i(x_k)b1∑i∈Bk∇fi(xk) 给出的minibatch估计来实现VR方法。
有多种早期的minibatch方法,但最新的方法能够获得形式为
O(L(b)μ+nblog(1ϵ))O\left(\frac{L(b)}{\mu} + \frac{n}{b} \log \left(\frac{1}{\epsilon}\right)\right)O(μL(b)+bnlog(ϵ1))
的迭代复杂度,使用步长 γ=O(1L(b))\gamma = O\left(\frac{1}{L(b)}\right)γ=O(L(b)1),其中
L(b)=1b(n−bn−1Lmax+nb−1L)L(b) = \frac{1}{b} \left(\frac{n-b}{n-1} L_{\text{max}} + \frac{n}{b-1} L\right)L(b)=b1(n−1n−bLmax+b−1nL)
是首次在文献中定义的minibatch平滑常数。这种迭代复杂度在全GD的复杂度 L(n)=LL(n) = LL(n)=L 和VR方法的复杂度 L(1)=LmaxL(1) = L_{\text{max}}L(1)=Lmax 之间进行插值。由于 L≤Lmax≤nLL \leq L_{\text{max}} \leq nLL≤Lmax≤nL,可能存在 L≪LmaxL \ll L_{\text{max}}L≪Lmax。因此,使用较大的minibatch可以允许大幅度加速,特别是在我们可以并行计算多个梯度的设置中。然而,计算 LLL 通常比计算 LmaxL_{\text{max}}Lmax 更具挑战性。
4.4. 加速变体
改善对 κmax\kappa_{\text{max}}κmax 依赖性的另一种策略是Nesterov或Polyak加速(也称为动量)。众所周知,Nesterov的加速GD将全梯度方法的迭代复杂度从O(κmaxlog(1/ϵ))O(\kappa_{\text{max}} \log(1/\epsilon))O(κmaxlog(1/ϵ)) 改善到 O(κmaxlog(1/ϵ))O(\sqrt{\kappa_{\text{max}}} \log(1/\epsilon))O(κmaxlog(1/ϵ))。尽管我们可能希望在VR方法中看到相同的改进,将 $\kappa_{\text{max}} $ 依赖性替换为 κmax\sqrt{\kappa_{\text{max}}}κmax,我们现在知道我们能够实现的最佳复杂度是 O((nκmax+n)log(1/ϵ))O((\sqrt{n}\kappa_{\text{max}} + n) \log(1/\epsilon))O((nκmax+n)log(1/ϵ)),这是首次由加速的SDCA方法实现的。然而,这种复杂度仍然保证了在病态设置中(即 κmax≫n\kappa_{\text{max}} \gg nκmax≫n)更好的最坏情况性能。
已经提出了多种VR方法,它们结合了加速步骤以实现这种改进的复杂度。此外,Lin等人的“催化剂”框架可以用来修改任何实现了复杂度 O((κmax+n)log(1/ϵ))O((\kappa_{\text{max}} + n) \log(1/\epsilon))O((κmax+n)log(1/ϵ)) 的方法,使其成为一个具有复杂度 O((nκmax+n)log(1/ϵ))O((\sqrt{n}\kappa_{\text{max}} + n) \log(1/\epsilon))O((nκmax+n)log(1/ϵ)) 的加速方法。
4.5.放宽光滑性要求
已经提出了多种方法来放宽函数 fff 必须是 LLL-光滑的这一假设。其中最早的是随机对偶坐标上升(SDCA)方法,它即便在函数集合 { fi}\{f_i\}{ fi} 是非光滑的情况下,仍然可以应用于问题(2)。这是由于对偶问题本身仍然是一个光滑问题。一个典型的例子是支持向量机(SVM)损失函数,其中 fi(x)=max{ 0,1−biai⊤x}f_i(x) = \max\{0, 1 - b_i a_i^\top x\}fi(x)=max{ 0,1−biai⊤x


2万+

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



