优化算法


一、Mini-batch gradient descent(小批量梯度下降法)

Mini-batch: 把整个训练数据集分成若干个小的训练集,即为Mini-batch。

为什么要分?梯度下降法必须处理整个训练数据集,才能进行下一次迭代。当训练数据集很大时,对整个训练集进行一次处理,处理速度较慢。但是如果每次迭代只使用一部分训练数据进行梯度下降法,处理速度就会变慢。而处理的这些一小部分训练子集即称为Mini-batch。另一方面,每次迭代处理更少的数据,使所需的内存空间相应的减小。

Mini-batch梯度下降的cost function会有噪声:
因为每次的训练集都不一样,可能遇到比较好分的训练数据,cost就较小。也可能是不好分的,cost就会变大。

Mini-batch 的 size:
size=m: batch梯度下降
对所有m个训练样本执行一次梯度下降,每一次迭代时间较长; Cost function 总是向减小的方向下降。

size=1: 随机梯度下降
对每一个训练样本执行一次梯度下降,但是丢失了向量化带来的计算加速; Cost function总体的趋势向最小值的方向下降,但是无法到达全局最小值点,呈现波动的形式。

size=(1,m): Mini-batch梯度下降
实现快速学习,也应用了向量化带来的好处; Cost function的下降处于前两者之间。通常选择2的整数次方:64,128,256,512。


二、指数加权平均(Exponentially weighted averages)

指数加权平均:
其中vt表示加权平均值; v(t-1)表示前一个加权平均值; θt表示当前值; β越大平均的个数越多。
下图表示某些天的气温的散点图。其中黄、红、绿线分别是β=0.98,0.9,0.5的指数加权平均线(50天、10天、2天的加权平均值)。

作用: 虽然平均值不准确,但是只需要一行代码和一次计算就能够算出任意多个数的平均值。提高运行速度,节省内存空间。

指数加权平均的理解:
当β=0.9时,v100展开成:式中所有θ的系数相加等于1或者接近于1。

我们忽略系数小于系数峰值(0.1)的1/e的项,因为1-ε=β; ,所以我们只关注1/ε个值。例如:β=0.9时,ε=0.1,1/ε=10,即10天。

指数加权平均的偏差修正(bias correction):
当β=0.98,我们得到的并不是图中的绿色曲线,而是下图中的紫色曲线,其起点比较低。因为我们设v0=0,v1=0.98*v0+0.02*θ1=0.02*θ1变得非常小。

修正公式:
开始阶段分母会比较小,可以修正起点偏低;当t增大时分母趋于1对结果没影响。实际使用中,可以不修正,直接忽略前期的均值。


三、动量梯度下降法(gradient descent with momentum)

以下图是三维转二维 cost function contour 为例:
横轴(horizontal axis)梯度小,纵轴(horizontal vertical axis)梯度大,在相同的learning rate 梯度下降中横步长小(下降很慢)、纵步长很大(可能不收敛,波动大)。为了不收敛,learning rate 只能被设得较小,因此迭代速度慢。

我们想加快训练速度,就得抑制纵向减少波动。这样我们就可以设置更大的learning rate加大横向步长进而加快迭代。

动量梯度下降的核心思想就是在更新参数时使用梯度的指数加权平均数代替只使用当前mini-batch计算出的梯度进行更新,这样可以减小纵轴的波动(因为被平均了,平均值波动较小且约等于0)。

算法的理解: 把Cost function想象为一个碗状,顶部有一颗球往下滚,其中的微分项 dw,db 可以看做是加速度、动量项 Vdw,Vdb 相当于速度。小球在向下滚动的过程中,因为加速度的存在速度会变快,但是由于β的存在且小于1,可以看做是摩擦力,所以球不会无限加速下去。

动量梯度下降的公式:β通常设为0.9,该参数正常不用调参。


四、RMSprop (root mean square prop: 均方根)


在 learning rate不变的情况下,即减小梯度大(例中为纵轴)的步长又增大梯度小的(横轴)步长。因为dw小S就小,除以根号S的项也就大了,即步长变大。为了保证算法不会除以远小于0的数,平方根分母中通常加上一个很小的值ε=10^−8,该参数正常不用调参。


五、Adam 优化算法(Adaptive Moment Estimation)

Adam 优化算法就是融合了 Momentum 和 RMSprop 算法的一种经受住考验的通用深度学习优化算法,在很多网络中都很有效。需要进行指数加权平均的偏差修正。

其中的超参数(hyper parameter):
α :需要进行调参;
β1:通常使用缺省值0.9,用于dw的加权平均;
β2:论文作者推荐使用0.999,用于dw2的加权平均值;
ε:推荐使用10^−8。


六、学习率衰减(learning rate decay)

学习率衰减:训练过程中逐渐减小 learning rate
下图蓝色线表示训练中α固定的梯度下降,绿色线表示α逐渐减小的梯度下降:

使用Mini-batch训练且learning rate 固定时,梯度下降到达最小值点附近后,因为不同batch存在一定的噪声,使得不会精确收敛,而是会在最小值点较大的范围内波动。但是如果我们使用学习率衰减,逐渐减小learning rate,开始的时学习速率还是比较快,随着迭代次数增多α逐渐减小,最终会在最小值附近的一块更小的区域里波动。

学习率衰减的几种策略:
epoch表示完整的数据集,epoch_num表示训练整个数据集的次数,α0表示初始的learning rate。



分段函数:隔一段设置一个不同的 learning rate

# tensorflow 自适应学习率衰减
# 计算公式: decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)
# staircase=True,那就表明每decay_steps次计算学习速率变化,更新原始学习速率,如果是False,那就是每一步都更新学习速率
# learning_rate 初始学习速率
# decay_rate 衰减率
# global_steps 总的迭代次数
# decay_steps 衰减次数
tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None) 

七、局部最优问题(local optimal)

左图为三维 cost function, 右图为高维的cost function 的一部分。

**局部最优点:**cost function 中这点的所有维的导数为0,即所有维都应同时为凸函数,或同时是凹函数。
**鞍点:**cost function 中这点的某一维或某几维的导数为0,这么叫是因为类似马鞍的最低点。

低维时,cost function 有 local optimal 概率很高,但在高维时有 local optimal 概率就很低了,维度越高概率越低。所以高维时正常不用担心出现局部最优的情况,而是应该考虑出现鞍点的情况,因为鞍点附近的某一维的梯度可能很小,迭代就会变慢,可以用Adam算法来处理。


吴恩达深度学习笔记6-Course2-Week2【优化算法】相关推荐

  1. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  2. 花书+吴恩达深度学习(三)反向传播算法 Back Propagation

    目录 0. 前言 1. 从 Logistic Regression 中理解反向传播 2. 两层神经网络中单个样本的反向传播 3. 两层神经网络中多个样本的反向传播 如果这篇文章对你有一点小小的帮助,请 ...

  3. 799页!吴恩达深度学习笔记.PDF

    吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门. 0.导语 黄海广博士和同学将吴恩达老师深度学习视频课程做了完整的笔 ...

  4. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  5. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

  6. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  7. 吴恩达深度学习笔记1-Course1-Week1【深度学习概论】

    2018.5.7 吴恩达深度学习视频教程网址 网易云课堂:https://mooc.study.163.com/smartSpec/detail/1001319001.htm Coursera:htt ...

  8. yolo.h5文件问题的解决 - 吴恩达深度学习:目标检测之YOLO算法

    在吴恩达深度学习系列视频:卷积神经网络第三周作业中,加载预训练模型时: yolo_model = load_model("model_data/yolo.h5") 你会遇到yolo ...

  9. yolo.h5文件问题的解决 - 吴恩达深度学习:目标检测之YOLO算法

    在吴恩达深度学习系列视频:卷积神经网络第三周作业中,加载预训练模型时: yolo_model = load_model("model_data/yolo.h5") 1 你会遇到yo ...

  10. 吴恩达深度学习笔记(四)—— 正则化

    有关正则化的详细内容: 吴恩达机器学习笔记(三) -- Regularization正则化 <机器学习实战>学习笔记第五章 -- Logistic回归 主要内容: 一.无正则化 二.L2正 ...

最新文章

  1. SourceTracker—微生物来源分析
  2. 程序员也得懂点儿理财知识
  3. Surviving the Release Version
  4. mysql练习数据_数据分析学习第一关-入门
  5. 利用@jsonView注解来实现自定义返回字段
  6. qt c++ 图片预览_这是Google Pixel 4上的新动态壁纸的预览
  7. 电脑反应慢卡怎么解决_电脑键盘失灵怎么解决
  8. oracle查询字段精度,【Oracle】查询字段的长度、类型、精度、注释等信息
  9. 【快讯】JeecgBoot低代码平台,成功入选2021科创中国·开源创新榜
  10. mysql-5.7.11-winx64 免安装版(MySQL ZIP Archive版)配置及密码问题处理
  11. 排球计分程序功能说明书
  12. 2019.04.07 电商12 登录界面的验证
  13. SPSS教程——游程检验使用方法,如何验证数据的随机性
  14. spss标准差与标准偏差不一样
  15. 华数机器人旋转编程_华数机器人HRT-6-Ⅰ型示教器操作与编程.ppt
  16. HTML5 的新增特性
  17. import * as 用法导入模块变量
  18. IQ使命 北京(建长城)攻略
  19. 怎样用C语言sinx的曲线长度,Javascript 绘制 sin 曲线过程附图
  20. 初中计算机考试的题型,教师资格证考试中学信息技术科目题型及分值分布,快看!...

热门文章

  1. C++程序代码优化的方法
  2. 使用css实现点击切换效果
  3. UVALive - 7270 Osu! Master
  4. Beaglebone Black USB联机
  5. Oracle新建实例后,修改sys和system密码。
  6. c#部分---递归题目;猴子摘桃
  7. MYSQL学习笔记 (三)JOIN用法
  8. 从Setting.settings到Resource.resx
  9. win7电脑磁盘文件以分组方式展现解决方案
  10. C# 利用反射动态调用类成员