找回密码
 立即注册
查看: 480|回复: 0

量化研究数学基础——最优化方法

[复制链接]
发表于 2021-12-18 13:19 | 显示全部楼层 |阅读模式
引言

最优化方法,是整个机器学习甚至深度学习的基础,而在组合构建的时候,各标的的权重计算也需要用到最优化,本文将针对常用的最优化方法的数学基础进行介绍,以便于在模型开发的过程中更科学的选择优化器以及超参数配置。
一阶优化算法

目前,神经网络基本使用的都是一阶的优化算法,包括基本的梯度算法以及其他的衍生版本,梯度下降法的基本逻辑为:
设置最小梯度标准 ,最大迭代次数 以及学习率
初始化
如果 :




梯度下降法在每次迭代的时候会计算函数在该点的梯度,每次根据梯度乘以学习率来调整参数,从而达到降低函数值的效果,从数学上,可以通过泰勒展开进行理解。
对于第k次迭代,其调整前函数值为 ,调整后为 ,对于后者做泰勒展开:


忽略无穷小量,我们有:


由于 恒成立,则只要给定  大于0,就可以保证每次迭代之后,损失函数满足 ,从而达到最小化损失函数的效果。
通常情况下,仅仅使用梯度下降法,可能会面临收敛速度慢的问题,因此有研究者开始尝试对梯度下降法进行改进,常见的改进算法包括Momentum,AdaGrad,RMSProp,AdaDelta,Adam。
Momentum,在更新参数时会引入上一次更新的值,用公式表达为:




AdaGrad,在更新参数的时候,对于梯度,会除以历史梯度在该方向累计值,从而使得参数在某个方向上更新很多后学习率降低,用公式表达为:


其中i为向量在各个方向上的分量, 为第k次的梯度向量
RMSProp,RMSProp相对于AdaGrad的改进集中在分母部分,将历史梯度的平方值做了衰减之后再进行累加:
给定初始的E=0




AdaDelta与RMSprop的计算逻辑相似,E的计算公式相同,但是增加了RMS:


类似的,可以参照计算出
最终更新公式为:


Adam引入了两个向量m和v,初始值为0




最终更新公式为:


二阶优化算法

牛顿法

牛顿法的基本思路是,对于一个函数f(x),其在x点取得极值的必要条件是: 。但是实际上,直接解该方程十分麻烦,所以考虑对其做泰勒展开,牛顿法中,会展开到二阶:


移项后两边除以 ,可以得到:


然后带入最开始的方程组,可以解得:


其中,f(x)的二阶记为H,一阶导记为g。
由于我们对函数进行了泰勒展开,因此一次只能计算近似值,为了获得更精确的结果,还需要不断迭代,因此可以得到我们的迭代公式:


拟牛顿法

但是牛顿法存在一个致命的缺陷,就是当黑塞矩阵不可逆的时候,牛顿法就会失效,为了解决这一问题,就提出了拟牛顿法,典型的包括DFP算法、BFGS算法和L-BFGS算法,由于其基本逻辑类似,我们仅选择DFP进行说明。
重新来看 ,我们令 带入,可以得到:

,简写为
因此,只要知道了s和y,就可以近似计算黑塞矩阵的逆矩阵,然后在每次迭代时进行更新,假设我们的迭代的目标是逆矩阵,为了方便表示,我们暂时先吧上标中的(-1)去掉,然后令:


E为矫正矩阵, 上述问题可以转化为求解E,给定E的格式为:


然后带入到上面的式子中,移项可得:


该方程解不唯一,为了方便计算,我们取一组特殊条件:


带入方程解得:


将结果导入到H的更新公式,可以得到最终的表达式:

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 08:24 , Processed in 0.089276 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表