草庐IT

数值优化:算法分类及收敛性分析基础

Orion's Blog 2023-03-28 原文

1 优化问题定义

我们考虑以下有监督机器学习问题。假设输入数据\(D=\{(x_i, y_i)\}_{i=1}^n\)依据输入空间\(\mathcal{X} \times \mathcal{Y}\)的真实分布\(p(x, y)\)独立同分布地随机生成。我们想根据输入数据学得参数为\(w\)的模型\(h(\space \cdot\space; w)\),该模型能够根据输入\(x\)给出接近真实输出\(y\)的预测结果\(h(x; w)\)。我们下面将参数\(w\)对应的模型简称为模型\(w\),模型预测好坏用损失函数\(\mathcal{l}(w; x, y)\)衡量。则正则化经验风险最小化(R-ERM)问题的目标函数可以表述如下:

\[\hat{l}_n(w) = \frac{1}{n}\sum_{i=1}^n\mathcal{l}(w; x_i, y_i) + \lambda R(w) \]

其中\(R(\space \cdot\space)\)为模型\(w\)的正则项。

由于在优化算法的运行过程中,训练数据已经生成并且保持固定,为了方便讨论且在不影响严格性的条件下,我们将上述目标函数关于训练数据的符号进行简化如下:

\[f(w) = \frac{1}{n}\sum_{i=1}^nf_i(w) \]

其中\(f_i(w)=\mathcal{l}(w, x_i, y_i) + \lambda R(w)\)是模型\(w\)在第\(i\)个训练样本\((x_i, y_i)\)上的正则损失函数。
不同的优化算法采用不同的方法对上述目标函数进行优化,以寻找最优预测模型。看似殊途同归,但实践中的性能和效果可能有很大差别,其中最重要的两个特性就是收敛速率复杂度

2 收敛速率

假设优化算法所产生的模型参数迭代序列为\(\{w^t\}\),其中\(w^t\)为第\(t\)步迭代中输出的模型参数,R-ERM问题的最优模型为\(w^* = \text{arg min}_w f(w)\)。一个有效的优化算法会使序列\(\{w^t\}\)收敛于\(w^*\)。我们用\(w^t\)\(w^*\)在参数空间中的距离来衡量其接近程度,即

\[\mathbb{E}\lVert w^t - w^*\rVert^2\leqslant \epsilon(t) \]

若用正则化经验风险的差值来衡量,则为

\[\mathbb{E} [f(w^t) - f(w^*)]\leqslant \epsilon(t) \]

来衡量。
\(\epsilon(t)\)可视为关于\(t\)的函数,收敛的算法都满足随着\(t\rightarrow \infty\),有\(\epsilon(t)\rightarrow 0\),不过其渐进收敛速率各有不同。通常用\(\text{log}\space \epsilon(t)\)的衰减速率来定义优化算法的渐进收敛速率。

  • 如果\(\log \epsilon(t)\)\(-t\)同阶,则称该算法具有线性(linear)收敛率。

    例: \(\mathcal{O}(\text{e}^{-t})\)

  • 如果\(\log \epsilon(t)\)\(-t\)衰减速度慢,则称该算法具有次线性(sublinear)收敛率。

    例: \(\mathcal{O}(\frac{1}{\sqrt{t}})、\mathcal{O}(\frac{1}{t})、\mathcal{O}(\frac{1}{t^2})\)

  • 如果\(\log \epsilon(t)\)\(-t\)衰减速度快,则称该算法具有超线性(superlinear)收敛率(进一步地,如果\(\log \log \epsilon(t)\)\(-t\)同阶,则该算法有二阶收敛速率)。

    例:\(\mathcal{O}(\text{e}^{-\text{2}^t})\)

收敛速率各阶数对比可参照下图:

3 复杂度

优化算法的复杂度需要考虑单位计算复杂度迭代次数复杂度。单位计算复杂度是优化算法进行单次迭代计算需要的浮点运算次数,如给定\(n\)\(d\)维样本,采用梯度下降法来求解模型的单位计算复杂度为\(\mathcal{O}(nd)\),随机梯度下降法则是\(\mathcal{O}(d)\)。迭代次数复杂度则是指计算出给定精度\(\epsilon\)的解所需要的迭代次数。比如若我们的迭代算法第\(t\)步输出的模型\(w_t\)与最优模型\(w^*\)满足关系

\[f(w^t) - f(w^*) \leqslant \frac{c}{\sqrt{t}} \]

,若要计算算法达到精度\(f(w^t) - f(w^*) \leqslant \epsilon\)所需的迭代次数,只需令\(\frac{c}{\sqrt{t}}\leqslant \epsilon\)得到\(t \geqslant \frac{c^2}{\epsilon^2}\),因此该优化算法对应的迭代次数复杂度为\(\mathcal{O}(\frac{1}{\varepsilon^2})\)。注意,渐进收敛速率更多的是考虑了迭代次数充分大的情形,而迭代次数复杂度则给出了算法迭代有限步之后产生的解与最优解之间的定量关系,因此近年来受到人们广泛关注。

我们可以根据单位计算复杂度和迭代次数复杂度来得到总计算复杂度,如梯度下降法单位计算复杂度为\(\mathcal{O}(nd)\),在光滑强凸条件下的迭代次数复杂度为\(\mathcal{O}\left(\log(\frac{1}{\varepsilon})\right)\),则总计算复杂度为\(\mathcal{O}\left(nd\log{(\frac{1}{\varepsilon})}\right)\)。随机梯度下降法单位计算复杂度为\(\mathcal{O}(d)\),在光滑强凸条件下的迭代次数复杂度为\(\mathcal{O}(\frac{1}{\varepsilon})\),则总计算复杂度为\(\mathcal{O}(\frac{d}{\varepsilon})\)

4 假设条件

目前大多数优化算法的收敛性质都需要依赖目标函数具有某些良好的数学属性,如凸性和光滑性。近年来由于深度学习的成功人们也开始关注非凸优化问题。我们这里先讨论凸优化的假设。

凸函数 考虑实值函数\(f:\mathbb{R}^d\rightarrow \mathbb{R}\),如果对任意自变量\(w, v \in \mathbb{R}^d\)都有下列不等式成立:

\[f(w) - f(v) \geqslant \nabla f(v)^T(w-v) \]

则称函数\(f\)是凸的(可以直观理解为自变量任何取值处的切线都在函数曲面下方)。

凸性会给优化带来很大方便。原因是凸函数任何一个局部极小点都是全局最优解。对于凸函数还可以进一步区分凸性的强度,强凸性质的定义如下:

强凸函数 考虑实值函数\(f:\mathbb{R}^d\rightarrow \mathbb{R}\)\(\mathbb{R}^d\)上范数\(\lVert \space \cdot \space \rVert\),如果对任意自变量\(w, v \in \mathbb{R}^d\)都有下列不等式成立:

\[f(w) - f(v) \geqslant \nabla f(v)^T(w-v) + \frac{\alpha}{2} \lVert w - v \rVert^2 \]

则称函数\(f\)关于范数\(\lVert \space \cdot \space \rVert\)\(\alpha\)-强凸的。
可以验证当函数\(f\)\(\alpha\)强凸的当前仅当\(f - \frac{\alpha}{2} \lVert \space\cdot \space \rVert^2\)是凸的。

下图中给出了凸函数、强凸函数和非凸函数的直观形象:

光滑性刻画了函数变化的缓急程度。直观上,如果自变量的微小变化只会引起函数值的微小变化,我们说这个函数是光滑的。对于可导和不可导函数,这个直观性质有不同的数学定义。

对于不可导函数,通常用Lipschitz性质来描述光滑性。

Lipschitz连续 考虑实值函数\(f:\mathbb{R}^d\rightarrow \mathbb{R}\)\(\mathbb{R}^d\)上范数\(\lVert \space \cdot \space \rVert\),如果存在常数\(L>0\),对任意自变量\(w, v \in \mathbb{R}^d\)都有下列不等式成立:

\[|f(w) - f(v)| \leqslant L \lVert w - v \rVert \]

则称函数\(f\)关于范数\(\lVert \space \cdot \space \rVert\)\(L\)-Lipschitz连续的。

对于可导函数,光滑性质依赖函数的导数,定义如下:

光滑函数 考虑实值函数\(f:\mathbb{R}^d\rightarrow \mathbb{R}\)\(\mathbb{R}^d\)上范数\(\lVert \space \cdot \space \rVert\),如果存在常数\(\beta>0\),对任意自变量\(w, v \in \mathbb{R}^d\)都有下列不等式成立:

\[f(w) -f(v) \leqslant \nabla f(v)^T(w-v) + \frac{\beta}{2} \lVert w - v \rVert^2 \]

则称函数\(f\)关于范数\(\lVert \space \cdot \space \rVert\)\(\beta\)-光滑的。
下图是Lipshitz连续函数和光滑函数的直观形象:

可以验证,凸函数\(f\)\(\beta\)-光滑的充分必要条件是其导数\(\nabla f\)\(\beta\)-Lipschitz连续的。所以,\(\beta\)-光滑函数的光滑性质比Lipschitz连续的函数的光滑性质更好。

5 算法分类和发展历史

数值优化算法的发展历史如下图所示:

可以看到,优化算法最初都是确定性的,也就是说只要初始值给定,这些算法的优化结果就是确定性的。不过近年来随着机器学习中数据规模的不断增大,优化问题复杂度不断增高,原来越多的优化算法发展出了随机版本和并行化版本。

为了更好地对众多算法进行分析,我们对其进行了如下分类:

  • 依据是否对数据或变量进行随机采样,把优化算法分为确定性算法和随机算法。
  • 依据算法在优化过程中所利用的是一阶导数信息还是二阶导数信息,把优化算法分为一阶方法和二阶方法。
  • 依据优化算法是在原问题空间还是在对偶空间进行优化,把优化算法分为原始方法和对偶方法。

以上分类可以用下图加以总结:

我们下面的博客将依次讨论一阶和二阶确定性算法、单机随机优化算法和并行优化算法,大家可以继续关注。

参考

有关数值优化:算法分类及收敛性分析基础的更多相关文章

  1. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  2. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  8. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  9. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  10. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

随机推荐