牛顿法、拟牛顿法与梯度下降法
牛顿法
基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"
优点:二阶收敛,收敛速度快
实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。
缺点:是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。定长迭代,没有步长因子
Hessian矩阵:x通常为一个多维向量,而Hessian矩阵就是x的二阶导数矩阵
拟牛顿法
求解非线性优化问题最有效的方法之一
本质:改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度
改善牛顿法的方法:不用二阶偏导而是构造出Hession矩阵的近似正定对称矩阵
常用的拟牛顿法有DFP(逼近Hession的逆)算法、BFGS(直接逼近Hession矩阵)算法、L-BFGS(可以减少BFGS所需的存储空间)
梯度下降法
1、批梯度下降法(GD)
原始的梯度下降法
优点:收敛速度快
缺点:易于陷入局部最优解
2、随机梯度下降法(SGD)
每次计算只是用一个样本
- 避免在类似样本上计算梯度造成的冗余计算
- 增加了跳出当前局部最小值的潜力
- 在组建缩小学习率的情况下,有了与批梯度下降法类似的收敛速度
3、小批量随机梯度下降法(Mini Batch SGD)注:神经网络训练的文献中中经常把Mini Batch 称为SGD
每次梯度计算使用一个小批量样本
- 梯度计算比单样本更加稳定
- 可以很好的利用现成的高度优化的矩阵计算工具
正则化
一般的目标函数
其中是模型的误差损失函数;是正则化项,也是模型的惩罚项
为什么要添加正则化项?
正则化项的添加主要用来惩罚模型,一般来说,仅仅是通过误差损失来衡量模型好坏不是一个好的方法,因为会出现过拟合;增加一个正则化项就是为了防止出现过拟合;
当模型的误差损失低,而且模型复杂度高(可以看作是模型参数过多),这时便容易出现过拟合,正则化项的出现,就是对于这些参数进行惩罚,也就是参数越多,惩罚越厉害,导致的结果是整体的目标函数值升高,缓解过拟合;而当模型复杂度低时,惩罚小,适于拟合函数模型;
L1正则与L2正则
正则化项的不同,可以有L1正则和L2正则
| L1 | L2 |
|---|---|
| Lasso回归 | Ridge回归 |
| 权值向量中各个元素绝对值之和 | 权值向量中各个元素平方和,再求平方根 |
| 稀疏模型 | 平滑模型 |
关于稀疏模型与平滑模型的解释,参考:https://www.julyedu.com/question/big/kp_id/23/ques_id/988
参考文献:
https://www.julyedu.com/question/big/kp_id/23/ques_id/988