深度学习优化器

1 优化器概览

• 梯度下降法变体
• 批处理梯度下降
• 随机梯度下降法
• 迷你批处理梯度下降法
• 面临的挑战
• 常用的梯度下降法
• Momentum
• Nesterov
• Adagrad
• AdaDelta
• RMSprop
• Adam
• 如何选择
• 小技巧

2 梯度下降优化算法

• 梯度下降法是训练神经网络最常用的优化算法
• 梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为
最速下降法。要使用梯度下降法找到一个函数的局部极小值,必须向函数
上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代
搜索
• 梯度下降方法基于以下的观察:如果实值函数f(x)在a点处可微且有定义,那
么函数f(x)在点a沿着梯度相反的方向-▽f(a)下降最快
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.批处理梯度下降

  1. 在凸优化(Convex Optimization)的情况下, 一定会找到最优解
  2. 在非凸优化的情况下, 一定能找到局部最优解
  3. 单次参数调整计算量大
  4. 不适合在线(Online)的情况

2.随机梯度下降

  1. 适合Online的情况
  2. 通常比批处理梯度下降法快(在批处理的情
    况下, 有可能许多的数据点产生的梯度是相似
    的, 这些计算是冗余的, 并不会有实际的帮助)
  3. 通常目标函数震荡严重. 在神经网络优化情
    况下(没有全局最优解), 这种震荡反而有可能
    让它避免被套牢在一个局部最小值, 而找到更
    好的局部最优解
  4. 通过调节学习率, 能够找到和批处理相似的
    局部或者全局最优解

3.迷你批处理梯度下降

  1. 结合了批处理和随机梯度下降法的优点
  2. 减弱了目标函数震荡, 更加稳定
  3. 易于硬件加速实现, 常用的机器学习库都利用了这个特性提供了高性能的计
    算速度
  4. 一般的迷你批大小为50至256, 取决于不同的应用

4.传统梯度下降法面临的挑战

• 传统迷你批处理不能保证能够收敛
• 当学习率太小, 收敛会很慢, 学习率太高容易震荡, 甚至无法收敛
• 可以按照某个公式随着训练逐渐减小学习率, 但是不同的数据集需要不同的
学习率变化曲线, 不容易估计
• 所有的参数使用同样的学习率并不合适
• 容易被套牢在马鞍点

3.Momentum

不同dimension的变化率不一样
• 动量在梯度在某一维度上的投影指向同一方向上增强, 在维度上的指向不断变化的
方向抵消
在这里插入图片描述

4.Nesterov accelerated gradient

• 动量+ 预测的前方的梯度
• 在多个RNN的任务中表现突出
在这里插入图片描述

在这里插入图片描述

5 Adagrad

• 对频繁出现的参数, 采用小的步长
• 对不频繁出现的参数, 采用大的步长
• 对稀疏数据集非常有用(文本数据). Google在训练从Youtube视频自动识别猫
用到了. Pennington et al训练词嵌入的GloVe也用到了
在这里插入图片描述
• 优势:
• 无需手动调整learning rate步长
• 设置初始步长为0.01即可
• 劣势:
• 随着训练, 分母总是增大, 步长会越来越小, 算法无法收敛

6 Adadelta

•只是累积过去的一段时间的梯度平方值
•完全无需设置步长
•为了便于实现, 采用类使用动量的策略:
在这里插入图片描述
在这里插入图片描述

7 RMSprop

• Geoff Hinton Lecture 6e of his Coursera Class ƞ=0.001
在这里插入图片描述

8 Adam

• 记录过去一段时间的梯度平方和(类似Adadelta和
RMSprop), 以及梯度的和(类似Momentum动量)
• 把优化看作铁球滚下山坡, Adam定义了一个带动量和摩
擦的铁球
在这里插入图片描述

9 如何选择

• 1. 如果数据集是稀疏的, 选择自适应学习率的方法会更快
收敛, 而且免去了需要调试学习率的烦恼
• 2. RMSprop, Adadelta, Adam的效果非常相似, 大多数情况
下Adam略好

10 Tips:

每一个epoch之前重新随机洗牌训练数据
• 使用Batch Normalization:
• 我们一般会对训练数据做正则化, 但是随着数据前馈, 后面layers的输入已经不是正则化的了,
Batch Normalization就是在后面layer之间做正则化
• 使得训练可使用更大的学习率, layer参数的初始化可以更加随意
• BN还有regularization的作用, 还可以减少对Dropout的依赖
• Early Stopping: Early stopping (is) beautiful free lunch" (NIPS 2015 Tutorial slides, slide 63
• 添加随机噪声到梯度 在这里插入图片描述

• 使得layer参数初始化更加随意,
• 使得model可以找到新的局部最小值在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42529756/article/details/115262495
今日推荐