您好,欢迎访问这里是您的网站名称官网!TAG标签主页

机器学习复习6-优化器等 面试看这一篇就妥妥够了

作者:佚名    发布时间:2024-04-22    浏览量:

该文对优化器进行了全面的梳理和整理,包括原理分析,面试看这一篇就妥妥够了!

一、正定和半正定矩阵 (了解)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
半正定矩阵包括了正定矩阵
在这里插入图片描述
不定矩阵:特征值有正有负

二、牛顿法和拟牛顿法(二阶优化方法)(讲清概念)

由于我主要是做NLP,机器学习方面基本功扎实后,更加偏机器学习的方法浅尝辄止即可,面试的时候知道有这些东西即可。这里只提一提。

牛顿法(Newton method)和拟牛顿法(quasi Newton method)是求解无约束最优化问题的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步都需求解目标函数的海塞矩阵(Hessian Matrix),计算比较复杂。拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或海塞矩阵,简化了这一计算过程。

1 牛顿法
在这里插入图片描述
牛顿法的收敛条件为当梯度小于一定的大小时(接近0),便停止更新。 - 容易遇到鞍点问题

和梯度下降算法相比,相当于梯度下降算法的学习率被替换为了海塞矩阵的逆矩阵。->可以这样理解。

2 拟牛顿法
在这里插入图片描述
拟牛顿法主要常见有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。均是用不同的构造方法来近似海塞矩阵或其逆。(知道其本质思想即可,方法名不用背)

3 牛顿法和梯度下降法
在这里插入图片描述
根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

梯度下降算法一定要对数据进行归一化吗?
并不一定,只不过归一化后的数据进行梯度更新时,会更加稳定。

4 牛顿法和深度学习
在这里插入图片描述

三、海塞矩阵 (了解)

在这里插入图片描述
在这里插入图片描述

四、鞍点问题(掌握)

高维非凸优化问题之所以困难,是因为存在大量的鞍点而不是局部极值
神经网络优化问题中的鞍点即一个维度向上倾斜且另一维度向下倾斜的点。

鞍点和局部极值的区别:
鞍点和局部极小值,
相同的是,在该点处的梯度都等于零
不同在于鞍点附近Hessian矩阵是不定的(特征值有正有负则属于不定矩阵,Hessian矩阵的不定矩阵说明该点不是极值点),而在局部极值附近的Hessian矩阵是正定的(Hessian矩阵的正定矩阵说明该点是极小值)。

在鞍点附近,基于梯度的优化算法(几乎目前所有的实际使用的优化算法都是基于梯度的)会遇到较为严重的问题。
在这里插入图片描述

五、最优化问题-如何逃离鞍点

深度学习中鞍点的大量存在,传统的牛顿法不适合,来寻优,因为牛顿法是通过直接寻找梯度为0的点,来寻优的,那么极有可能陷入鞍点。
在这里插入图片描述
1)是判断是否为鞍点
2、3、4其实都是使用类似动量或者随机初始化的方法,来试图逃离鞍点。

各算法逃离鞍点的效果图
https://img-blog.csdn.net/20170921144326084?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQlZMMTAxMDExMTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast


在这里插入图片描述

1.1 SGD(Stochastic gradient descent)

在这里插入图片描述

1.2 SGDM Momentum 动量

引入动量(Momentum)方法一方面是为了解决“峡谷”(局部最优解)和鞍点问题;一方面也可以用于SGD 加速,特别是针对高曲率、小幅但是方向一致的梯度。
在这里插入图片描述
在这里插入图片描述
引入动量的SGD方法,具体实现上,除了常规学习率等参数外,和动量相关的参数主要有两个,一个是动量参数α,一个是初始速度v

v = α v ? 学 习 率 ? 梯 度 v=αv-学习率*梯度 v=αv??

再用这个 v v v去更新参数

1.3 NAG 算法 Nesterov 动量(扩展)

在这里插入图片描述
带Nesterov的SGD,nesterov项在梯度更新时做一个校正,避免前进太快,参数操作多了所以同时提高灵敏度

1.4 对比 (理解掌握)

批量梯度下降每次iteration使用全部的样本,模型能够对全部的样本进行学习,学习效果会更好;但其速度慢,不支持在线学习。

随机梯度下降算法,每次训练迭代利用单个样本,速度很快;但收敛性能不太好,在解空间的搜索比较盲目,并容易陷入鞍点;支持在线学习及其他,在实际中很常用。

Mini-batch梯度下降设置一个batch_size,每次iteration使用batch_size个样本进行学习。

2.1 AdaGrad

在这里插入图片描述
在这里插入图片描述
每个参数的学习率会被缩放,缩放值为 根号下 历史累计平方梯度。全局学习率 ? 并没有更新,而是每次应用时被缩放。
在这里插入图片描述

2.2 RMSprop(Root Mean Squared prop)(了解指数加权平均即可)

对当前梯度平方进行信息选择,对历史累计梯度进行一定程度上的遗忘

指数加权平均的本质见此链接:
https://zhuanlan.zhihu.com/p/29895933

在这里插入图片描述
在这里插入图片描述

2.3 Adadelta (了解)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的计算窗口内的累计梯度方法还是依赖全局学习率的。我们在上面学过了牛顿法和逆牛顿法,我们知道牛顿法是不需要学习率的,其需要海塞矩阵作为“学习率”,所以这里我们使用对角线近似海塞矩阵来充当“学习率”。

2.4 Adam (重点)

在这里插入图片描述
模型的梯度是一个随机变量,一阶矩表示梯度均值,二阶矩表示其方差,
对两者分别引入指数加权平均(两个ρ参数),对当前梯度/梯度平方信息进行一定程度上的选择,对累计信息进行一定程度上的遗忘,类似RMSprop方法。
将两者联合与学习率相乘,从而进行梯度更新,
其中:
一阶矩控制模型更新的方向,
二阶矩控制步长。
补充:
训练初期,两者值很小,所以Adam通过修正偏差(利用1-ρ对二者分别放缩)来解决这个问题。

特点:

  1. 该算法结合了Momentum(First-order moment)和RMSProp(Second-order moment)两者的优点。
  2. Adam 算法通常被认为对超参数的选择相当鲁棒,尽管学习率有时需要从建议的默认修改。
  3. Adam算法是需要修正偏差的,偏差是由于初始化问题导致的,即下图描述
    在这里插入图片描述
  4. 计算效率很高,使用的内存相对较小。

可以使用,我一般是在模型分数不太变化的时候,再进行学习率衰减进一步调参。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
芸芸整理
1、SGD系列:其更新速度所有的参数都是一致的。所以才会有自适应系列
SGD:
缺点:类似于一个小纸团,遇到鞍点的时候,不再进行参数的更新
SGDM:动量
优点:引入动量是一方面为了解决“峡谷”和鞍点问题,在鞍点处因为惯性的作用,更有可能离开平地;另一方面也可用于SGD的加速;
缺点:但其实还是所有的参数更新速度是一致的。
2、自适应Adam系列:不同的参数具有不同的学习率。高频更新步长小,低频的步长要大一些。
AdaGrad:
优点:通过以往的梯度自适应更新学习率,不同参数θ具有不同的学习率。
缺点:学习率单调递减,训练后期学习率过小会导致训练困难,甚至会提前结束。
Adam:
优点:既考虑了历史梯度平方的累计(本质和Adagrad相似),也有历史梯度的累计(和加入动量的SGD相似),经常更新参数,高频更新步长小,低频步长大一些。训练效率很高。
特点:初期训练速度会慢一些,因为s和r比较小。所以用修正偏差抵消这个倾向。
在这里插入图片描述
该文对优化器进行了全面的梳理和整理,包括原理分析,面试看这一篇就妥妥够了!

推荐新闻

在线客服 :

服务热线:400-123-4567

电子邮箱: admin@youweb.com

公司地址:广东省广州市天河区某某工业园88号

深圳某某服饰有限公司一家集品牌女装 男装 童装 中老年装 批发及加盟于一体的大型专业品牌服饰折扣公司,成立于2005年,在长期的公司经营中,和客户形成了良好而坚定的联系

友情链接: T6 T6 天狮 天狮 琳琅
Copyright © 2012-2018 首页-天狮-天狮娱乐商务站 版权所有 非商用版本   琼ICP备xxxxxxxx号

平台注册入口