文章目录

  • 1. Mini-batch 梯度下降
  • 2. 理解 mini-batch 梯度下降
  • 3. 指数加权平均数
  • 4. 理解指数加权平均数
  • 5. 指数加权平均的偏差修正
  • 6. 动量Momentum梯度下降法
  • 7. RMSprop
  • 8. Adam 优化算法
  • 9. 学习率衰减
  • 10. 局部最优的问题
  • 作业

参考:
吴恩达视频课
深度学习笔记

1. Mini-batch 梯度下降

在巨大的数据集上进行训练,速度非常慢,如何提高效率?

前面我们学过向量化可以较快的处理整个训练集的数据,如果样本非常的大,在进行下一次梯度下降之前,你必须完成前一次的梯度下降。如果我们能先处理一部分数据,算法速度会更快。

  • 把训练集分割为小一点的子集(称之 mini-batch)训练

batch 梯度下降法:指的就是前面讲的梯度下降法,可以同时处理整个 训练集
mini-batch:每次处理的是单个的 mini-batch 训练子集

2. 理解 mini-batch 梯度下降


mini-batch 梯度下降,每次迭代后 cost 不一定是下降的,因为每次迭代都在训练不同的样本子集,但总体趋势应该是下降的

mini-batch 的 size 大小:

  • 大小 = m,就是batch梯度下降法
  • 大小 = 1,就是随机梯度下降

3. 指数加权平均数


假设,v0=0,vt=β∗vt−1+(1−β)∗θtv_0 = 0, v_t = \beta*v_{t-1}+(1-\beta)*\theta_tv0​=0,vt​=β∗vt−1​+(1−β)∗θt​
选取不同的 β\betaβ 值,得到相应的气温曲线

4. 理解指数加权平均数

假如 β=0.9,t=100\beta = 0.9,t=100β=0.9,t=100,将上面的带进去求 v100v_{100}v100​

v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))0v100=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+0.1×(0.9)3θ97+0.1×(0.9)4θ96+…\begin{array}{l}v_{100}=0.1 \theta_{100}+0.9\left(0.1 \theta_{99}+0.9\left(0.1 \theta_{98}+0.9 v_{97}\right)\right)_{0} \\ \\ v_{100}=0.1 \theta_{100}+0.1 \times 0.9 \theta_{99}+0.1 \times(0.9)^{2} \theta_{98}+0.1 \times(0.9)^{3} \theta_{97}+0.1 \times(0.9)^{4} \theta_{96}+\ldots\end{array}v100​=0.1θ100​+0.9(0.1θ99​+0.9(0.1θ98​+0.9v97​))0​v100​=0.1θ100​+0.1×0.9θ99​+0.1×(0.9)2θ98​+0.1×(0.9)3θ97​+0.1×(0.9)4θ96​+…​

好处:代码简单,占用内存极少

vθ=0,vt:=β∗vθ+(1−β)∗θtv_\theta = 0, v_t := \beta*v_\theta+(1-\beta)*\theta_tvθ​=0,vt​:=β∗vθ​+(1−β)∗θt​
当然,它并不是最好、最精准的计算平均数的方法

5. 指数加权平均的偏差修正

6. 动量Momentum梯度下降法

思想:计算梯度的指数加权平均数,利用该梯度更新权重


上图情况下,标准的梯度下降会上下波动,且要使用较小的学习率,否则会偏离更远。

如果我们使用过去梯度的加权平均,纵向的就抵消了一些,横向的叠加了一些,可以更平滑的快速找向最优点

vdW=βvdW+(1−β)dWvdb=βvdb+(1−β)dbv_{d W}=\beta v_{d W}+(1-\beta) d W\\ v_{d b}=\beta v_{d b}+(1-\beta) d bvdW​=βvdW​+(1−β)dWvdb​=βvdb​+(1−β)db
W:=W−α∗vdWb:=b−α∗vdbW:=W-\alpha* v_{d W} \\ b:=b-\alpha* v_{d b}W:=W−α∗vdW​b:=b−α∗vdb​

  • 超参数有 α\alphaα, β=0.9\beta = 0.9β=0.9( β\betaβ 经常取 0.9)
  • 如果想偏差修正,vdW,vdbv_{d W},v_{d b}vdW​,vdb​ 还要除以 1−βt1-\beta^t1−βt,实际上人们不这么做,10次迭代之后,偏差就基本很小了

动量梯度下降法,并不是对所有情况都有效,它对碗状的优化效果较好

7. RMSprop

全称是 root mean square prop 算法,它也可以加速梯度下降

微分平方的加权平均数:
SdW=βSdW+(1−β)(dW)2Sdb=βSdb+(1−β)(db)2S_{d W}=\beta S_{d W}+(1-\beta) (d W)^{2}\\ S_{d b}=\beta S_{d b}+(1-\beta) (d b)^{2}SdW​=βSdW​+(1−β)(dW)2Sdb​=βSdb​+(1−β)(db)2

W:=W−α∗dWSdW+Eb:=b−α∗dbSdb+EW:=W-\alpha* \frac{d W}{\sqrt{S_{d W}}+\mathcal{E}}\\ \\ \text{ }\\ \quad b:=b-\alpha* \frac{d b}{\sqrt{S_{d b}}+\mathcal{E}}W:=W−α∗SdW​​+EdW​ b:=b−α∗Sdb​​+Edb​
E=1e−8\mathcal{E} = 1e^{-8}E=1e−8 保证分母不为 0

RMSpropMomentum 有很相似的一点,可以消除梯度下降和mini-batch梯度下降中的摆动,并允许你使用一个更大的学习率,从而加快你的算法学习速度。

8. Adam 优化算法

Adam (Adaptive Moment Estimation) 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起

  • 初始化:vdW=0,SdW=0,vdb=0,Sdb=0v_{d W}=0, S_{d W}=0, v_{d b}=0, S_{d b}=0vdW​=0,SdW​=0,vdb​=0,Sdb​=0
  • t 次迭代
    Momentum
    vdW=β1vdW+(1−β1)dWv_{d W}=\beta_{1} v_{d W}+\left(1-\beta_{1}\right) d WvdW​=β1​vdW​+(1−β1​)dW
    vdb=β1vdb+(1−β1)dbv_{d b}=\beta_{1} v_{d b}+\left(1-\beta_{1}\right) d bvdb​=β1​vdb​+(1−β1​)db
    RMSprop
    SdW=β2SdW+(1−β2)(dW)2S_{d W}=\beta_{2} S_{d W}+\left(1-\beta_{2}\right)(d W)^{2}SdW​=β2​SdW​+(1−β2​)(dW)2
    Sdb=β2Sdb+(1−β2)(db)2S_{d b}=\beta_{2} S_{d b}+\left(1-\beta_{2}\right)(d b)^{2}Sdb​=β2​Sdb​+(1−β2​)(db)2
    偏差修正
    vdWcorrected =vdW1−β1tv_{d W}^{\text {corrected }}=\frac{v_{d W}}{1-\beta_{1}^{t}}vdWcorrected ​=1−β1t​vdW​​
    vdbcorrected =vdb1−β1tv_{d b}^{\text {corrected }}=\frac{v_{d b}}{1-\beta_{1}^{t}}vdbcorrected ​=1−β1t​vdb​​
    SdWcorrected =SdW1−β2tS_{d W}^{\text {corrected }}=\frac{S_{d W}}{1-\beta_{2}^{t}}SdWcorrected ​=1−β2t​SdW​​
    Sdbcorrected =Sdb1−β2tS_{d b}^{\text {corrected }}=\frac{S_{d b}}{1-\beta_{2}^{t}}Sdbcorrected ​=1−β2t​Sdb​​
    更新权重
    W:=W−α∗vdWcorrected SdWcorrected +εW:=W- \alpha*\frac{ v_{d W}^{\text {corrected }}}{\sqrt{S_{d W}^{\text {corrected }}}+\varepsilon}W:=W−α∗SdWcorrected ​​+εvdWcorrected ​​
    \quad
    b:=b−α∗vdbcorreted Sdbcorrected +εb:=b- \alpha*\frac{v_{\mathrm{db}}^{\text {correted }}}{\sqrt{S_{\mathrm{db}}^{\text {corrected }}}+\varepsilon}b:=b−α∗Sdbcorrected ​​+εvdbcorreted ​​

Adam算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法
其被证明能有效适用于不同神经网络,适用于广泛的结构

超参数:

  • 学习率 α\alphaα
  • β1=0.9\beta_1 = 0.9β1​=0.9,常用
  • β2=0.999\beta_2 = 0.999β2​=0.999,作者推荐
  • ε=1e−8\varepsilon = 1e^{-8}ε=1e−8

9. 学习率衰减


慢慢减少 学习率 的本质在于,在学习初期,使用较大的步伐,开始收敛的时候,用小一些的学习率能让步伐小一些

  • 对不同的 mini-batch 进行训练,一次称之为 epoch
    α=11+decayRate∗epochNum∗α0\alpha = \frac{1}{1+decayRate*epochNum}*\alpha_0α=1+decayRate∗epochNum1​∗α0​

还有些其他的方法:
α=0.95epochNumα0α=kepochNumα0α=ktα0,t为mini-batch的数字\alpha = 0.95^{epochNum}\alpha_0\\ \alpha = \frac{k}{\sqrt {epochNum}}\alpha_0\\ \alpha = \frac{k}{\sqrt t}\alpha_0,t为 \text{mini-batch}的数字α=0.95epochNumα0​α=epochNum​k​α0​α=t​k​α0​,t为mini-batch的数字
还有离散下降学习率,即 不是每步都下调学习率

10. 局部最优的问题


高维度空间中,我们不太可能遇见(概率很低)如上图所示的局部最优点,因为需要这么多的维度方向上都梯度为 0(概率很低)

所以更有可能遇到的是鞍点

基本不会遇见局部最优问题,可能遇见的是平稳段减缓了学习速度,该区域梯度接近于 0 ,要很长时间才能走出去。Momentum 或 RMSprop,Adam 能够加快速度,让你尽早 走出平稳段。

作业

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法相关推荐

  1. 2020-6-9 吴恩达-改善深层NN-w3 超参数调试(3.3 超参数训练的实践:Pandas(资源少,一次一个模型) VS Caviar(资源多,一次多个模型))

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  2. 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)

    文章目录 1. 探索TensorFlow库 1.1 线性函数 1.2 计算 sigmoid 1.3 计算损失函数 1.4 One_Hot 编码 1.5 用0,1初始化 2. 用TensorFlow建立 ...

  3. 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架

    文章目录 1. 调试处理 2. 为超参数选择合适的范围 3. 超参数调试的实践 4. 归一化网络的激活函数 5. 将 Batch Norm 拟合进神经网络 6. Batch Norm 为什么奏效 7. ...

  4. 02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)

    文章目录 1. 梯度下降 2. mini-Batch 梯度下降 3. 动量 4. Adam 5. 不同优化算法下的模型 5.1 Mini-batch梯度下降 5.2 带动量的Mini-batch梯度下 ...

  5. 02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面(作业:初始化+正则化+梯度检验)

    文章目录 作业1:初始化 1. 神经网络模型 2. 使用 0 初始化 3. 随机初始化 4. He 初始化 作业2:正则化 1. 无正则化模型 2. L2 正则化 3. DropOut 正则化 3.1 ...

  6. 02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面

    文章目录 1. 训练,验证,测试集 2. 偏差,方差 3. 机器学习基础 4. 正则化 5. 为什么正则化预防过拟合 6. dropout(随机失活)正则化 7. 理解 dropout 8. 其他正则 ...

  7. 深度学习(二)吴恩达给你的人工智能第一课: 02.改善深层神经网络:超参数调试、正则化以及优化

    目录 第一周 深度学习的实用层面 1.1 训练 / 开发 / 测试集 1.1.1. 训练集.验证集.测试集 ​         1.2 偏差 / 方差 1.3 机器学习基础 1.3.1.降低偏差/降低 ...

  8. 吴恩达 02.改善深层神经网络:超参数调试、正则化以及优化 第一周作业

    Initialization Welcome to the first assignment of "Improving Deep Neural Networks". Traini ...

  9. 吴恩达深度学习之二《改善深层神经网络:超参数调试、正则化以及优化》学习笔记

    一.深度学习的实用层面 1.1 训练/开发/测试集 机器学习时代,数据集很小,可能100.1000.10000条,这种级别.可以按 70%.30% 划分训练集和测试集,训练后直接用测试集评估.或者按 ...

最新文章

  1. c++ 绕点旋转坐标 实例
  2. js怎么获取访问页数记录(知道的能不能告诉我一下)
  3. TCP/IP的三层负载均衡
  4. python的多行语句可以使用反斜杠_python 为什么不用分号作终止符?
  5. css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)
  6. 机器视觉产品技术市场需求日益增长
  7. 【博客项目】—用户新增功能(九)
  8. 表中存在类型为dateTime的字段,并且插入语句,不包括该字段时,会插入失败...
  9. 微信小程序云开发教程-云函数入门(2)-接收参数、前端调用
  10. c语言常用单词大全,c语言必背专业英语词汇大全
  11. 优化算法——差分进化算法(DE)
  12. 利用excel生成word并在其中批量插入图片和题注、文字描述等内容
  13. 用什么样的姿势能拿到国际“AV”大赛的冠军?
  14. html 列表 表格 form表单 文本域 label
  15. 【思维导图】LAMPer技能树
  16. python 基础一
  17. 利用物联网更好地管理供应链
  18. Lua字符串(string)
  19. 快速搭建自己的 KMS 服务器
  20. 服务器错误信息10016,服务器提示错误10016

热门文章

  1. amap不同样式marker点_想出一手漂亮的图,CAD打印样式表你必须会!
  2. epoll边缘触发_C++回声服务器_9-epoll边缘触发模式版本服务器
  3. c# Invoke和BeginInvoke
  4. php注入教程,php注入点构造代码实例详解
  5. Linux视频 pad,Wine 1.9.10 发布下载, 改善视频输出
  6. Weex 解决Print: Entry, :CFBundleIdentifier, Does Not Exist 错误方法
  7. 【miscellaneous】北斗短报文
  8. 字符串数组判断数字,字母汉字,
  9. 【leetcode刷题笔记】Single Number
  10. js中如果无法获取某个html属性,例如自定义了一个dir属性,但获取总是为空,尝试换个词,因为可能什么关键词冲突了。...