2021秋招-面试高频-优化器算法

面试高频-优化器算法

常见问题以及要求?

1. 会推导常见的公式:

2. 各个优化器提出的背景, 以及各自的优点;

3. 各个优化器存在的问题以及优化器的选择问题。

4. 一些新的优化器的整理

5. 神经网络中 warmup 策略为什么有效;有什么理论解释么?

  • 有助于减缓模型在初始阶段对mini-batch的提前过拟合现象,保持分布的平稳
  • 有助于保持模型深层的稳定性

笔记

⭐详细推导-10个梯度下降优化算法+备忘单

2021秋招-面试高频-优化器算法_第1张图片
2021秋招-面试高频-优化器算法_第2张图片

⭐图示-梯度下降的可视化解释(Momentum,AdaGrad,RMSProp,Adam)


⭐深度学习优化器总结-太浅了,没有总结清楚,参考分类

机器学习中,有很多方法试图寻找模型的最优解。 常见分类:

  • 梯度下降法
  • 动量优化法
  • 自适应学习率优化算法

一、梯度下降法(Gradient Descent)

梯度: 在微积分中,对多元函数的的参数求 θ \theta θ 偏导数, 把求得的各个参数的导数以 向量的形式写出来就是 梯度。 梯度是函数变化最快的地方。 梯度下降是迭代法的一种,在求解机器学习算法的模型参数 [公式] 时,即无约束问题时,梯度下降是最常采用的方法之一。
2021秋招-面试高频-优化器算法_第3张图片2021秋招-面试高频-优化器算法_第4张图片
评价: 梯度下降法主要有两个缺点:

  • 训练速度慢
    每走一步都要计算调整下一步的方向,下山的速度变慢。 在应用于大型数据集中,每输入一个样本都要进行一次参数更新,且每次迭代都要遍历所有的样本。 会使得训练过程及其缓慢,需要花费很长时间才能得到收敛。
  • 容易陷入局部最优解
    由于是在有限视距内寻找下山的方向。 当陷入平坦的洼地,会误以为到达了山地的最低点,从而不会继续往下走。 所谓的局部最优解就是鞍点。 落入鞍点,梯度为0, 使得模型参数不在继续更新。

梯度下降法目前主要分为三种方法,区别在于每次参数更新时计算的样本数据量不同

  • 批量梯度下降法(BGD, Batch Gradient Descent)
  • 随机梯度下降法(SGD, Stochastic Gradient Descent)
  • 小批量梯度下降法(Mini-batch Gradient Descent)

1. 批量梯度下降法BGD

2021秋招-面试高频-优化器算法_第5张图片

2. 随机梯度下降法SGD

2021秋招-面试高频-优化器算法_第6张图片

3. 小批量梯度下降法

2021秋招-面试高频-优化器算法_第7张图片

二、动量优化法

在这里插入图片描述

1. Momentum

2021秋招-面试高频-优化器算法_第8张图片

2. NAG(Nesterov accelerated gradient)

2021秋招-面试高频-优化器算法_第9张图片
2021秋招-面试高频-优化器算法_第10张图片
2021秋招-面试高频-优化器算法_第11张图片

三、自适应学习率优化算法

2021秋招-面试高频-优化器算法_第12张图片
2021秋招-面试高频-优化器算法_第13张图片

1. AdaGrad算法 (不懂)

  • 像是对于每个类别分别进行更新? 不明白在于如何每个类别更新呀?

2021秋招-面试高频-优化器算法_第14张图片

2. Adadelta (不懂)

2021秋招-面试高频-优化器算法_第15张图片

3. RMSprop(不懂)

2021秋招-面试高频-优化器算法_第16张图片

4. Adam: Adaptive Moment Estimation (不懂)

2021秋招-面试高频-优化器算法_第17张图片

四、算法的表现

下图是各个算法在等高线的表现,它们都从相同的点出发,走不同的路线达到最小值点。可以看到,Adagrad,Adadelta和RMSprop在正确的方向上很快地转移方向,并且快速地收敛,然而Momentum和NAG先被领到一个偏远的地方,然后才确定正确的方向,NAG比momentum率先更正方向。SGD则是缓缓地朝着最小值点前进。

2021秋招-面试高频-优化器算法_第18张图片


Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

2021秋招-面试高频-优化器算法_第19张图片
2021秋招-面试高频-优化器算法_第20张图片

不推荐-从 SGD 到 Adam —— 深度学习优化算法概览(一)

⭐⭐公式推导清楚-一文看懂常用的梯度下降算法

指数加权移动平均数 Exponentially weighted moving averages

2021秋招-面试高频-优化器算法_第21张图片
2021秋招-面试高频-优化器算法_第22张图片

Momentum optimization

2021秋招-面试高频-优化器算法_第23张图片

Nesterov Accelerated Gradient (NAG)

2021秋招-面试高频-优化器算法_第24张图片

AdaGrad

2021秋招-面试高频-优化器算法_第25张图片

RMSprop

2021秋招-面试高频-优化器算法_第26张图片

Adaptive moment estimation (Adam)-讲的最清楚

2021秋招-面试高频-优化器算法_第27张图片

局部最优和鞍点

前面说到,我们希望优化算法能够收敛速度快,并且想找到全局最优。对于凸函数来说,其仅有一个极值点,就是全局最优点,如图4所示,此时采用梯度下降算法是可以收敛到最优点的,因为沿着下坡的道路走就可以了。
但是其实现在的深度学习模型是一个庞大的非线性结构,这样其一般是非凸函数,就如图5所示那样,存在很多局部最优点(local optimum),一旦梯度下降算法跳进局部陷阱,可以想象其很难走出来,这就很尴尬了,此时梯度下降算法变得不再那么可靠,因为我们想要的是全局最优。很难找到全局最优,这可能是目前优化算法共同面对的问题,如进化算法。
不过到底深度学习的损失函数是不是存在很多局部最优点呢?前面所有的分析都是基于低维空间,我们很容易观察到局部最优点。但是深度学习的参数一般庞大,其损失函数已经成为了超高维空间。但是Bengio等最新的研究表明,对于高维空间,非凸函数最大的存在不是局部最优点,而是鞍点(saddle point),鞍点也是梯度为0的点,但是它不像局部最优点或者全局最优点。对于局部最优或者全局最优点,其周围的所有方向要朝向上(最小)或者朝向上(最大),但是考虑到参数庞大,很有可能是一部分方向朝下,一部分方向朝上,这就成为了鞍点。意思就是说在高维度空间,不大可能像低维度空间那样出现很多局部最优。而且鞍点也不大可能会成为梯度下降算法的葬身之地。
那么真正影响梯度下降算法会是什么呢?可能是平稳区(plateaus),如果出现大面积梯度很小或者近似为0的区域,那么梯度下降算法就找不到方向,想象你自己站在一望无际的平原,估计你也方向感全无了。当前上面所有的谈论仅是停留在经验,对于高维空间,无论如何很难直观想象,这还是一个历史难题吧。
2021秋招-面试高频-优化器算法_第28张图片
2021秋招-面试高频-优化器算法_第29张图片

补充

RAdam

  • 不用warm-up
  • 别人验证效果不如 warm_up的adam

RAdam、LookAhead 双剑合璧,打造最强优化器

你可能感兴趣的:(2021秋招)