【百面机器学习】优化算法

参数估计问题都可以写成优化问题。
哪些是凸优化,哪些是非凸优化?
非凸优化是个比较难求解的问题,但是主成分分析PCA是一个特例。我们可以借助SVD直接得到主成分分析的全局极小值。

1、经典优化算法

1.1 直接法

直接给出最优解的方法, 但不是万能的,有前提条件。
两个前提条件:
1>、凸函数
2>、一阶导数有解
同时满足这个条件的是岭回归(LR + L2正则化项)

1.2 迭代法

一阶法和二阶法,就是对优化函数进行泰勒一阶、二阶展开。

  • 二阶法(牛顿法):当目标函数非凸时,二阶法可能会收敛到鞍点。

2、梯度验证

3、随机梯度下降(SGD)

4、随机梯度下降的加速

4.1 SGD的缺点:山谷震荡 和 鞍点停滞

有时候SGD会是一个坑,那么你的得到一个比较差的训练结果时,可能不是模型的问题,而是SGD在优化过程中失效了。
BGD(批量梯度下降),好比是正常下山,计算的是准确的梯度。数据量大的情况下,则不适用。
SGD好比是蒙着眼睛下山,采用的是单个样本估计的当前的梯度,这样会不稳定,甚至出现偏差。造成目标函数曲线收敛的不稳定。
但是随机梯度下降最可怕的不是局部最优点,而是山谷和鞍点两类。

  • 山谷

山谷顾名思义是狭长的山间小道,左右两边是峭壁。准确的方向是沿着山道向下,稍微有偏离就会撞向山壁,而粗糙的梯度估计使得它在两山壁间来回反弹震荡,不能迅速下降。

  • 鞍点

鞍点像马鞍,一个方向上两头翘,另一个方向上两头垂,而中心区域是一块近乎水平的平地。在鞍点处,SGD会走入一片平坦之地,坡度不明显,很可能找错方向,陷入停滞。

4.2 解决方法

惯性保持和环境感知
SGD下降算法本质上是采用迭代方式更新参数,每次迭代在当前的位置的基础上,沿着某一方向,迈一小步抵达下一位置。
动量方法:纸团和铁球,惯性不同,加速度不同。
AdaGrad,

4.2.1 Adam方法

惯性保持和环境感知都OK。
体现为:
记录梯度的一阶矩:过往梯度和当前梯度的平均,体现了惯性保持;
记录梯度的二阶矩:过往梯度平方与当前梯度的平方的平均,类似AdaGrad方法,体现了环境感知能力。
类似于滑动窗口内求平均的思想进行融合,时间久远的梯度对当前平均值的贡献呈指数衰减。

4.2.2. 改进

1、AdaMax
基于Adam的一个变种方法,对梯度平方的处理由指数衰退平均改为指数衰退求最大值。
2、AdaDelta和RMSProp类似:
基于AdaGrad的改进,AdaGrad采用的是所有历史梯度平方和的平方根做分母,分母随着时间单调递增,产生的自适应学习速率随时间衰减的速度过于激进。AdaDelta和RMSProp采用指数衰退平均的计算方法,用过往梯度的均值代替求和。

补充:智能优化算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值