吴恩达深度学习笔记之改善神经网络(二)
来源:互联网 发布:网络网线接那几根线 编辑:程序博客网 时间:2024/05/18 22:47
2.1 mini-batch 梯度下降法(mini-batch gradient descent)
我们知道,向量化可以让我们有效的对所有的m个训练样例进行计算,允许我们处理整个训练集,而无需某个明确的公式,所以我们要把训练样本放到巨大的矩阵x当中去。向量化能够让我们相对较快的处理m个样本,但如果是很大的话,处理速度仍然缓慢。mini-batch要做的就是将整个训练集分割为小一点的子训练集。比如,我们的整个训练集有50万个样本,我们取1000个子训练集,如下图所示:
我们接下来用如下图的伪代码来解释其原理:
这就是使用mini-batch 梯度下降法训练的一步,一次遍历训练集只让我们做一次梯度下降。
2.2 理解mini-batch 梯度下降法
使用batch梯度下降法时,每次迭代都需要历遍整个训练集,可以预期每次迭代的成本都会下降,所以如果成本函数J是迭代的一个函数,它应该会随着每次迭代而减少,如果不是这样,那肯定出了问题。使用mini-batch梯度下降法时,成本函数并不是每次迭代都是下降的,这是因为每次丢带都在训练不同的样本集,或者说在训练不同的mini-batch。我们来看一下他们的成本函数图,如下:
噪声产生的原因在于也许
其次我们需要决定的变量之一是mini-batch的大小。m就是训练集的大小,如果mini-batch的大小为m,其实就是batch梯度下降法,如果mini-batch为1 就是随机梯度下降法。如下所示:
if mini-batch size=m :batch gradient descent
if mini-batch size=1 :stochastic gradient descent
我们再来看看这三种情况下的成本函数优化情况。如下所示:
stochastic gradient descent :
每次迭代只对一个样本进行梯度下降,大部分时候,向着全局最小值靠近,有时候会远离最小值。平均来看,它最终会靠近最小值。其次需要注意的是:随机梯度下降法永远不会收敛,他只会在最小值附近波动。而且随机梯度下降法会失去所有向量化所带来的加速。
mini-batch gradient descent:
一方面可以大量向量化,另一方面不需要等待整个训练集被处理完就可以开始进行后续工作。
mini-batch size指导性原则:如果样本集较小,没必要使用mini-batch梯度下降法,以2000为基准。如果太大,则mini-batch大小为26 到29 之间。
2.3 指数加权平均(Exponentially weigthed averages)
我们先介绍一下指数加权平均的关键公式:
接着我们以某一个地区一年的气温作为例子来讲解这个公式。
如下:
我们通过下面一组操作,也就是移动加权平均的操作,如下所示:
解释一下,
我们可以通过调整超参数
2.4 指数加权平均的偏差修正(Bias correction in Exponentially weigthed averages)
偏差修正是为了解决早起预测不准确的问题,我们依然以气温预测为例,如下所示:
上图中,紫色是没有加上偏差修正的计算结果,绿色是经过偏差修正之后得到的计算结果。他们的超参数
我们要在他的基础上再进行如下的计算:
由上可知,当t很小的时候,
2.5 动量梯度下降法(Gradient descent with momentum)
除了batch/mini-batch/stochastic gradient descent 梯度下降法,还有一种算法叫做momentum梯度下降法,运行速度几乎总是快于标准的梯度下降法,简而言之,基本的思想就是计算梯度的指数加权平均数,并利用该梯度更新权重 ,以下是batch/mini-batch gradient descent以及momentum梯度下降法优化走势图。
蓝线表示batch梯度下降法 ,红线是momentum梯度下降法 我们会发现梯度下降法需要很多计算步骤,慢慢摆动到最小值,这种上下波动减慢了梯度下降法的速度,导致我们无法使用更大的学习率,结果可能会偏离函数的范围,为了避免摆动过大,我们需要使用较小的学习率,另一个看待问题的角度是在纵轴上,我们希望慢一点,但是在横轴上,我们希望快一点,所以使用momentum梯度下降法,我们需要做的是,在每次迭代中,确切的说是在第t次迭代中,我么要计算微分dw,db,注意是利用现有的mini-batch计算dw,db,如果使用batch梯度下降法,则现在的mini-batch就是全部的batch,对于batch梯度下降法的效果是一样的。
momentum的算法流程如下:
momentum
compute dw,db on current mini-batch
2.6 RMSProp(root mean square prop)
除了momentum可以加快学习算法之外,均方根算法也可以加快学习算法。
算法流程如下:
on iteration t:
compute dw,db on current mini-batch
2.8 Adam 优化算法
Adam优化算法基本上就是将momentum和RMSprop结合在一起,我们来看看Adam算法的流程。
使用Adam算法首先需要初始化 vdw=0,Sdw=0,Vdb=0,Sdb=0
on iteration t: compute dw,db, using current mini-batch
2.8 学习率衰减(learning rate decay)
加快学习算法的一个办法就是随时间慢慢减少学习率,我们将之称为学习率衰减,我们可以将学习率设置如下:
其中
还有下面的一些衰减公式:
也可以进行手动调试学习率。
- 吴恩达深度学习笔记之改善神经网络(二)
- 吴恩达深度学习笔记之改善神经网络(一)
- 吴恩达深度学习之改善神经网络(三)
- 吴恩达神经网络和深度学习课程自学笔记(二)之神经网络基础
- 深度学习与神经网络_吴恩达 学习笔记(二)
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 深度学习笔记(二)神经网络
- 神经网络与深度学习学习笔记:神经网络的优化(二)
- 吴恩达深度学习课程笔记之神经网络基础
- 吴恩达深度学习笔记之卷积神经网络(卷积网络)
- 吴恩达深度学习笔记之卷积神经网络(实例探究)
- 吴恩达深度学习笔记之卷积神经网络(目标检测)
- 吴恩达深度学习笔记之卷积神经网络(特殊应用)
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第一周)
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
- 一对一关系映射
- Scrapy爬虫框架学习笔 二 CrawlSpider的使用
- 用grunt搭建自动化的web前端开发环境-完整教程
- SDUT 2117-数据结构实验之链表二:逆序建立链表
- vue数组中有相同的数据处理
- 吴恩达深度学习笔记之改善神经网络(二)
- heatmap学习笔记
- Java树形结构
- WPF与MVVM的实现(五)注册路由事件
- c++内存泄漏和内存碎片的问题
- 数据库与数据仓库
- boost库编译与安装
- C语言单元小结(6)
- 数据结构实验之排序四:寻找大富翁