数值优化:经典随机优化算法及其收敛性与复杂度分析

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

1 随机优化算法概述

随着大数据的出现,确定性优化算法的效率逐渐称为瓶颈。为了说明这一点,我们来看一个用梯度下降法求解线性回归的例子。

给定训练样本D={(xi,yi)}ni=1D={(xi,yi)}i=1nD = {(x_i, y_i)}_{i=1}^n,线性回归的目标函数如下:

f(w)=1n∑i=1nfi(w)=1n∑i=1n(wTxi−yi)2f(w)=1n∑i=1nfi(w)=1n∑i=1n(wTxi−yi)2f(w) = \frac{1}{n}\sum_{i=1}^nf_i(w)= \frac{1}{n}\sum_{i=1}n(wT x_i - y_i)^2
这里w∈Rdw∈Rdw\in \mathbb{R}^d为模型参数。
梯度下降法的更新规则为:

wt+1=wt−η∇f(wt)=wt−2ηn∑i=1nxi((wt)Txi−yi)wt+1=wt−η∇f(wt)=wt−2ηn∑i=1nxi((wt)Txi−yi)w^{t+1} = w^t - \eta \nabla f(w^t) = w^t - \frac{2\eta}{n}\sum_{i=1}nx_i\left((wt)^Tx_i - y_i\right)
可见,梯度下降法中每次更新模型所需要的单位计算复杂度为O(nd)O(nd)\mathcal{O}(nd)。

对于更复杂的模型(比如神经网络)和更复杂的优化方法(比如二阶方法),确定性优化方法的计算量会更大。那么如何解决这个问题呢?

统计方法能给我们很大的帮助。虽然大数据的数据量和数据维度都很大,但我们可以通过对样本和维度进行随机采样来得到对更新量的有效估计或者替代。相应地,从确定性优化算法出发,我们可以开发出各种随机优化算法,如随机梯度下降法[1]、随机坐标下降法[2]、随机方差缩减梯度法[3]、随机(拟)牛顿法[4]等。注意,对于随机优化算法而言,收敛性分析与确定性算法不同,需要针对算法中的随机采样取期望。

下面就让我们先介绍经典的随机优化算法。

2 随机梯度下降法

2.1 算法描述

随机梯度下降法(SGD)[1]对训练数据做随机采样,其更新公式如下:

wt+1=wt−ηt∇fit(wt)wt+1=wt−ηt∇fit(wt)w^{t+1} = w^t - \eta^t \nabla f_{it}(wt)
其中,ititi^t是第ttt轮随机采样的数据标号。具体算法如下列的伪代码所示:


我们知道,机器学习问题中的经验损失函数定义为所有样本数据对应的损失函数的平均值。而我们这里用有放回随机采用获得的数据来计算梯度,是对用全部数据来计算梯度的一个无偏估计,即Eit∇itf(wt)=∇f(wt)Eit∇itf(wt)=∇f(wt)\mathbb{E}_{i^t} {\nabla_{it}f(wt)} = \nabla f(wt),注意此处f(wt)=1n∑ni=1∇fi(wt)f(wt)=1n∑i=1n∇fi(wt)f(wt)=\frac{1}{n}\sum_{i=1}^n\nabla f_i(w^t))。而由于每次更新只随机采一个样本,随机梯度中的计算量大大减小。因此,随机梯度可以作为梯度的自然替代,从而大大提高学习效率。

不过正如我们前面所说,优化算法的复杂度不仅包括单位计算复杂度,还包括迭代次数复杂度(与收敛率有关)。天下没有免费的午餐,随机梯度下降单位计算复杂度降低,那么也相应地会付出迭代次数复杂度增大的代价。

考虑实际每次只采一个样本比较极端,常用的形式是随机梯度下降法的一个推广:小批量(mini-batch)随机梯度下降法。该方法可以看做是在随机优化算法和确定性优化算法之间寻找某种折中,每次采一个较小的样本集合It∈{1,2,…n}It∈{1,2,…n}\mathcal{I}^t\in {1,2,…n}(多于单样本,少于全样本),然后执行更新公式:

wt+1=wt−ηt∇fIt(wt)=wt−ηt|It|∑i∈It∇fi(wt)wt+1=wt−ηt∇fIt(wt)=wt−ηt|It|∑i∈It∇fi(wt)w^{t+1} = w^t - \eta^t\nabla f_{\mathcal{It}}(wt) = wt-\frac{\etat}{|\mathcal{I}^t|} \sum_{i\in\mathcal{I}^t} \nabla f_i (w^t)
我们后面介绍的各种随机优化方法,都有相应的小批量版本。小批量采样可以有效减小方差,从而提高收敛速率,具体我们下一篇博客会讨论。

2.2 收敛性和计算复杂度分析

与梯度下降法类似,对不同性质的目标函数,随机梯度下降法具有不同的收敛速率。

LLL-Lipschitz连续凸函数收敛性:假设目标函数f:Rd→Rf:Rd→Rf: \mathbb{R}^d\rightarrow \mathbb{R}是凸函数,并且LLL-Lipschitz连续,w∗=arg min∥w∥⩽Df(w)w∗=arg min‖w‖⩽Df(w)w^* = \underset{\lVert w\rVert\leqslant D}{\text{arg min}}f(w),当步长ηt=D2L2t−−−√ηt=D2L2t\eta^t = \sqrt{\frac{D2}{L2t}}时,对于给定的迭代步数TTT,随机梯度下降法具有O(1T√)O(1T)\mathcal{O}(\frac{1}{\sqrt{T}})的次线性收敛速率:

E

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值