【深度学习】图形模型基础(7):机器学习优化中的方差减少方法(2)

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:=(n1iLi)/μ 而不是依赖于κ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}bN,我们从所有具有 bbb 个元素的集合中以均匀概率选择一个集合 Bk⊂{ 1,...,n}B_k \subset \{1, ..., n\}Bk{ 1,...,n} 使得 ∣Bk∣=b|B_k| = bBk=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)b1iBkfi(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(n1nbLmax+b1nL)
是首次在文献中定义的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 nLLLmaxnL,可能存在 L≪LmaxL \ll L_{\text{max}}LLmax。因此,使用较大的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(κmax log(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κmaxn)更好的最坏情况性能。

已经提出了多种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,1biaix

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUKAMO

你的鼓励是我们创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值