您的位置:首页 > 理论基础 > 计算机网络

【deeplearning.ai】深度学习(4):优化神经网络(2)

2020-11-24 22:28 986 查看

吴恩达老师DeepLearning.ai课程笔记
【吴恩达Deeplearning.ai笔记一】直观解释逻辑回归
【吴恩达deeplearning.ai笔记二】通俗讲解神经网络上
【吴恩达deeplearning.ai笔记二】通俗讲解神经网络下
深度网络不好使?吴恩达老师带你优化神经网络(1)

想提高一个深层神经网络的训练效率,需从各个方面入手,优化整个运算过程,同时预防其中可能发生的各种问题。

本文涉及优化深层神经网络中的几种梯度下降法,梯度下降中的Momentum、RMSProp、Adam优化算法及学习率衰减,批标准化等内容。

1梯度下降法之批梯度下降(BGD)

批梯度下降法(Batch Gradient Descent,BGD)是最常用的梯度下降形式,前面的逻辑回归及深层神经网络的构建中所用到的梯度下降都是这种形式。其在更新参数时使用所有的样本来进行更新,具体过程为:

示例图:

  • 优点:最小化所有训练样本的损失函数,得到全局最优解;易于并行实现。
  • 缺点:当样本数目很多时,训练过程会很慢。

2梯度下降法之随机梯度下降法(SGD)

随机梯度下降法(Stochastic Gradient Descent,SGD)与批梯度下降原理类似,区别在于每次通过一个样本来迭代更新。其具体过程为:


示例图:

  • 优点:训练速度快。
  • 缺点:最小化每条样本的损失函数,最终的结果往往是在全局最优解附近,不是全局最优;不易于并行实现。

3梯度下降法之小批量梯度下降法(MBGD)

小批量梯度下降法(Mini-Batch Gradient Descent,MBGD)是批量梯度下降法和随机梯度下降法的折衷,对用 m 个训练样本,每次采用t ( 1 < t < m ) 个样本进行迭代更新。具体过程为:

其中,

然后,

示例图:

样本数 t 的值根据实际的样本数量来调整,为了和计算机的信息存储方式相适应,可将 t 的值设置为 2 的幂次。将所有的训练样本完整过一遍称为一个epoch。

4梯度下降优化方法之指数加权平均

指数加权平均(Exponentially Weight Average)是一种常用的序列数据处理方式,其计算公式为:

给定一个时间序列,例如伦敦一年每天的气温值:

其中蓝色的点代表了真实的数据值。

对于一个即时的温度值,取权重值 β 为 0.9 ,则有:

根据:



由此求得的值即得到图中的红色曲线,它反应了温度变化的大致趋势。

当取权重值 β = 0.98 时,可以得到图中更为平滑的绿色曲线。而当取权重值 β = 0.5 时,得到图中噪点更多的黄色曲线。 β 越大相当于求取平均利用的天数就越多,曲线自然就会越平滑而且越滞后。

当进行指数加权平均计算时,第一个值 ν0 被初始化为 0 ,这样将在前期的运算用产生一定的偏差。为了矫正偏差,需要在每一次迭代后用以下式子进行偏差修正:

5梯度下降优化方法之Momentum梯度下降

动量梯度下降(Gradient Descent with Momentum)是计算梯度的指数加权平均数,并利用该值来更新参数值。具体过程为:

其中的动量衰减参数 β 一般取 0.9 。

进行一般的梯度下降将会得到图中的蓝色曲线,而使用Momentum梯度下降时,通过累加减少了抵达最小值路径上的摆动,加快了收敛,得到图中红色的曲线。

当前后梯度方向一致时,Momentum梯度下降能够加速学习;前后梯度方向不一致时,Momentum梯度下降能够抑制震荡。

6梯度下降优化方法之RMSProp算法

RMSProp(Root Mean Square Prop,均方根支)算法在对梯度进行指数加权平均的基础上,引入平方和平方根。具体过程为:

其中的 ε = 10-8 ,用以提高数值稳定度,防止分母太小。

7梯度下降优化方法之Adam优化算法

Adam(Adaptive Moment Estimation,自适应矩估计)优化算法适用于很多不同的深度学习网络结构,它本质上是将Momentum梯度下降和RMSProp算法结合起来。具体过程为:

其中的学习率 α 需要进行调参,超参数 β1 被称为第一阶矩,一般取 0.9 , β2 为第二阶矩,一般取 0.999 , ε 一般取 10-8 。

8学习率衰减

随着时间推移,慢慢减少学习率 α 的大小,在初期 α 较大时,迈出的步长较大,能以较快的速度进行梯度下降,而后期逐步减小 α 的值,减小步长,有助于算法的收敛,更容易接近最优解。

常用到的几种学习率衰减方法有:

其中的decay_rate为衰减率,epoch_num为将所有的训练的epoch数。

9批标准化

批标准化(Batch Normalization,BN)和之前的数据集标准化类似,是将分散的数据进行统一的一种做法。具有统一规格的数据,能让机器更容易学习到数据中的规律。

对于含有 m 个节点的某一层神经网络,对 z 进行批标准化操作的步骤为:

其中的 γ、β 并不是超参数,而是两个需要学习的参数,神经网络自己去学着使用和修改这两个扩展参数。这样神经网络就能自己慢慢琢磨出前面的标准化操作到底有没有起到优化的作用,如果没有起到作用,就使用 γ 和 β 来抵消一些之前进行过的标准化的操作。例如当

就抵消掉了之前的正则化操作。


当前的获得的经验无法适应新样本、新环境时,便会发生“Covariate Shift”现象。对于一个神经网络,前面权重值的不断变化就会带来后面权重值的不断变化,批标准化减缓了隐藏层权重分布变化的程度。采用批标准化之后,尽管每一层的 z 还是在不断变化,但是它们的均值和方差将基本保持不变,这就使得后面的数据及数据分布更加稳定,减少了前面层与后面层的耦合,使得每一层不过多依赖前面的网络层,最终加快整个神经网络的训练。

批标准化还有附带的有正则化的效果:当使用小批量梯度下降时,对每个小批量进行批标准化时,会给这个小批量中最后求得的 z 带来一些干扰,产生类似于DropOut的正则化效果,但效果不是很显著。当这个小批量的数量越大时,正则化的效果越弱。

需要注意的是,批标准化并不是一种正则化的手段,正则化效果只是其顺带的小副作用。另外,在训练时用到了批标准化,则在测试时也必须用到批标准化。

训练时,输入的是小批量的训练样本,而测试时,测试样本是一个一个输入的。这里就又要用到指数加权平均,在训练过程中,求得每个小批量的均值和方差加权平均值,之后将最终的结果保存并应用到测试过程中。

10Softmax回归

Softmax回归模型是逻辑回归模型在多分类问题上的推广,在多分类问题中,输出y的值不再是一个数,而是一个多维列向量,有多少种分类是就有多少维数。激活函数使用的是softmax函数:

损失函数为:

注:本文涉及的图片及资料均整理翻译自Andrew Ng的Deep Learning系列课程,版权归其所有。翻译整理水平有限,如有不妥的地方欢迎指出。

推荐阅读:

视频 | 憋不出论文怎么办?不如试试这几种办法
【深度学习实战】pytorch中如何处理RNN输入变长序列padding
【机器学习基本理论】详解最大后验概率估计(MAP)的理解

欢迎关注公众号学习交流~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐