第二门课:改善深层神经网络<超参数调试、正则化及优化>-优化算法

1 Mini-batch梯度下降

Batch梯度下降法:即使之前讲的梯度下降法,需要同时处理整个训练集,能够同时看到整个batch训练集的样本被处理。
Mini-batch梯度下降法:每次处理单个mini-batch的训练子集。
在这里插入图片描述
我们将每一个mini-batch记为X{t},维度是(n_x,1000),对应每个mini-batch的输出记为Y{t},维度是(1,1000)
x(i)是第i个训练样本。
z[l]表示神经网络中第l层的z值,
X{t}来代表不同的mini-batch

2 理解Mini-batch梯度下降法

在这里插入图片描述
mini-batch 梯度下降,每次迭代后 cost 不一定是下降的,因为每次迭代都在训练不同的样本子集,但总体趋势应该是下降的。
mini-batch 的 size 大小<两种极端情况>:
大小 = m,就是batch梯度下降法
大小 = 1,就是随机梯度下降法
在这里插入图片描述

3 指数加权平均数

在这里插入图片描述

高值β,得到的曲线更平坦一些,因为多平均了几天的温度,所以曲线波动更小、更平坦,缺点是曲线进一步右移。
在这里插入图片描述

4 理解指数加权平均数

在这里插入图片描述

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

在这里插入图片描述

v2根据指数加权平均公式得到v2=0.98v1+0.02\theta2,将v1代入得v2=0.0196 \theta1+0.02 \theta2
偏差修正可以帮助更好的预测温度,即从紫线变为绿线
2.2.6 动量梯度下降法
在这里插入图片描述

动量梯度下降法基本思想是计算梯度的指数加权平均数,并利用该梯度来更新权重。
在以上几个导数中,发现动量梯度下降法的本质是纵轴上的摆动平均值接近于0,但在横轴方向,所有的微分都指向横轴方向,因此横轴方向的平均值仍然较大。即纵轴方向摆动变小了,横轴方向运动更快。
在这里插入图片描述

7 RMSprop<均方根传播>

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

注:(dW)2
纵轴上的更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。最终得到的更新会变成绿色线。
\varepsilon=10−8 保证分母不为 0
RMSprop 跟 Momentum 有很相似的一点,可以消除梯度下降和mini-batch梯度下降中的摆动,并允许你使用一个更大的学习率,从而加快你的算法学习速度。<不会偏离方向>

8 Adam优化算法<Momentum与RMSprop结合>

在这里插入图片描述
在这里插入图片描述
注:Momentum以及RMSprop两种都需要进行偏差修正。

9 学习率衰减

加快学习算法的一个办法就是随时间慢慢减少学习率,将之称为学习率衰减。
在这里插入图片描述

慢慢减少 学习率 的本质在于,在学习初期,使用较大的步伐,开始收敛的时候,用小一些的学习率能让步伐小一些。
在这里插入图片描述

decayrate:衰减率 epoch-num:代数
除了这个学习率衰减公式,人们还会用其他公式
在这里插入图片描述

<t为mini-batch的数字>

10 局部最优的问题

通常梯度为0的点并不是图中局部最优点,实际上成本函数的零梯度点,通常是鞍点。
在这里插入图片描述

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

在这里插入图片描述

其中存在平稳段,平稳段会减缓学习,平稳段是一块区域,其中导数长时间接近于0,平稳段学习十分缓慢,要很长时间才能走出平稳段。此时Momentum、RMSprop以及Adam优化算法能够加快速度,尽早往下走出平稳段。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 07:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 07:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 07:46:04       82 阅读
  4. Python语言-面向对象

    2024-03-12 07:46:04       91 阅读

热门阅读

  1. 前端自带的base64转化方法

    2024-03-12 07:46:04       43 阅读
  2. 2、设计模式之单例模式详解

    2024-03-12 07:46:04       34 阅读
  3. android JNI float *转MutableList

    2024-03-12 07:46:04       44 阅读
  4. ArrayList与LinkedList的区别

    2024-03-12 07:46:04       49 阅读
  5. django中的QuerySet

    2024-03-12 07:46:04       41 阅读
  6. TypeScript之枚举

    2024-03-12 07:46:04       43 阅读
  7. 如何用prompt提示词开发Open AI项目?

    2024-03-12 07:46:04       46 阅读
  8. Prompt提示词工程构建指南

    2024-03-12 07:46:04       38 阅读
  9. 牛客周赛 Round 36----->C.小红的白色字符串

    2024-03-12 07:46:04       43 阅读
  10. SQLite表添加主键

    2024-03-12 07:46:04       40 阅读