【deeplearning.ai】改善深层神经网络:超参数调试、正则化以及优化

依据训练集和验证集选择算法和调超参

  1. 在训练集上用不同模型训练,选取几个拟合效果好的模型
  2. 将这几个模型应用在验证集上,选择最优的一个或几个
      在步骤2上,可以通过正则化等手段优化模型;步骤1是为了选择模型。

L 2 正则化为什么能起作用?

  从贝叶斯的角度上看,正则化等价于对模型参数引入先验分布。在后验概率估计上,增加高斯分布先验,就是 L 2 正则化;增加拉普拉斯分布先验,就是 L 1 正则化。【这些分布的先验知识是对权重w而言的】。从求导推导过长看,增加了 L 2 先验,相当于在原本权重更新时,减去梯度的计算之前 w α J w ,对w进行了削减,即 ( 1 α 2 m ) w α J w 。其结果就是造成最后的权重 w 比不添加正则化时小,极端一点看,若 α 较大,则 w 0 ,导致 z = w T x + b 0 。而 z 0 时,通过 s i g m o i d 函数,会基本展示不出非线性【即在sigmoid中间段,其基本呈线性传递】,因而导致模型的表达能力减弱,从而起到预防过拟合的作用。

dropout正则化

  dropout正则化在计算机视觉应用比较多,因为计算机视觉的数据一般比较少。通常在我们没有足够多的数据时,导致存在的过拟合现象,我们才使用dropout正则化。【因为使用了dropout正则化后,我们优化的凭证Cost就不再是每次迭代都递减的了。这在某种程度上是很难计算的,因为我们失去了调试工具。】

为什么归一化能加速模型拟合?

  若未归一化前,数据分布呈现狭长状,即不同元素的取值范围差别大,则代价函数在不同元素上取得最优解需要的学习率不同。因此模型需要选择其中最小的学习率,以达到整个模型拟合的效果。而如果归一化了,则可以统一学习率,用较大的学习率去拟合数据,因而能加快模型拟合。

这里写图片描述

网络模型的超参数

  1. 模型方面:隐藏层层数、每层的神经元个数
  2. 优化方面:数据的mini-batch大小、学习率 α 的大小、学习衰减率、优化函数的参数 β (假设是动量梯度下降法)、正则化项的系数 λ
      其中最重要,最需要调试的参数是学习率 α ;其次是优化函数的参数 β 、每层神经元个数和mini-batch的大小;

Batch-Normalize(BN)

  Batch-Normalize操作使网络每一层的输入归一化,即将 a [ i ] 归一化,但是由于某些原因(如激活函数的效果等)就将这个归一化的操作提到了激活函数之前。

BN操作为什么起作用?

  神经网络是多隐藏层叠起来的,其某一层的输入受之前所有层参数的控制,即convariat shift,也就是说该输入的分布是一直在变化的,这给该层的参数优化带来麻烦。BN操作将其分布固定为 0 1 的分布,使用 β γ 之后的均值受参数控制,但也固定分布。因此,BN操作就是讲每层的输入分布固定下来,使优化参数变得简单,也减少某参数梯度过大问题的出现,因而能加速模型拟合。

优化算法

神经网络各优化算法

优化算法前置知识

指数加权(移动)平均

  一种计算连续变量的离散值平均的方式。其计算方式如下:

v i = α V i 1 + β θ i
V 0 = 0 , α + β = 1 α = 0.9 β = 0.1
   v i 可看做第i天之前的平均(实际上是 1 1 α ),而 θ i 是第 i 天的离散值。这种动态求平均的方法,即考虑了前面的元素,也不会综合太过“久远”的无用的信息。【 α v i 线
  该计算方式在前几天的计算中很不准确,如第1天只有 0.1 θ 1 ,所以有偏差修正: v i 1 β t = α v i 1 + β θ i

这里写图片描述

梯度下降的优化

动量梯度下降法

  计算梯度:

v d w = β v d w + ( 1 β ) J w
   和之前的笔记所不同的是,这里的梯度前面多了个系数 ( 1 β ) ,视频里提及之前笔记的那种没有系数的形式,学习率 α 要根据 ( 1 β ) 相应变化,可能是不好调参吧。而且,如果没有系数,相当于 v d w 变为 v d w 1 1 β ,这是会变大的,更可能会出现动量过大,跳出最小值的情况。
  更新参数:
w = w α v d w

RMSprop

  计算梯度:

S d w = β S d w + ( 1 β ) ( w ) 2

  更新方式:
w = w α w S d w

   这个跟之前笔记里的AdaDelta方法基本一模一样

局部最优解

  视频里说到,一直以来,我们担心神经网络陷入局部最优解,是像下图左边的那种,每个元素方向梯度都为 0 ,且都是“凸”方向的极小值点。但是在高纬度中,梯度全为0且都是“凸”极值点的坑不多,大部分还是像下图右边的那种鞍点。因此,我们的优化目标应该是逃离鞍点,而不是过度担心“局部最优解”。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/80869489