改善深层神经网络:第一周深度学习的实用层面

1.1 训练/开发/测试集

小数据的时候我们一般7 3分,或者6 2 2分,但是大数据后,我们只需要其中的一部分作为验证机和测试集

改善深层神经网络:第一周深度学习的实用层面

有一条经验法则,尽量确保你的训练集和测试集来自同一分布

1.2 偏差与方差

从做左右是高偏差(欠拟合),ok,高方差(过拟合)

改善深层神经网络:第一周深度学习的实用层面

列举了一些可能情况
高方差,过拟合,训练误差小,测试误差大
高偏差,欠拟合,训练误差大,测试误差大

改善深层神经网络:第一周深度学习的实用层面

高方差,高偏差图上表示为一部分过拟合,一部分欠拟合

改善深层神经网络:第一周深度学习的实用层面

,偏差是机器学习模型中预测值与实际值之间的差异,而方差则是这些预测值的分布情况。
偏差:泛华误差的这部分误差是由于错误的假设决定的。例如实际是一个二次模型,你却假设了一个线性模型,一个高偏差的模型最容易出欠拟合
方差:这部分误差由于模型对微小变化较为敏感,一个多*度的模型更容易有高的方差(例如高阶多项式)因此容易过拟合

1.3机器学习基础

(1)如果高偏差,即欠拟合(针对训练误差):可以A:增加更多的特征个数 B:使用更复杂的模型,使用更复杂的网络 C:新的**函数 D 自适应学习率
(2)如果高方差,即过拟合(针对测试误差):可以A:增加更多的数据 B:正则化 C:早停 D:dropout

# 1.4 正则化 # ## L2范数 ## 在损失函数加上超参数乘以L2范数 改善深层神经网络:第一周深度学习的实用层面

加上L2范数后的梯度更新公式,最后在权重前面加了个小于1的参数,那么每次迭代权重都会逐渐变小,所以也叫权重衰减

改善深层神经网络:第一周深度学习的实用层面

why?
更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。

L1范数

改善深层神经网络:第一周深度学习的实用层面

比原始的更新规则多出了η * λ * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。

1.5 为什么正则化可以减少过拟合

说法一

箭头的方向就是lamda逐渐变大,w逐渐变小的过程

改善深层神经网络:第一周深度学习的实用层面

说法二

以tanh**函数为例,因为lamda变大,w变小,导致输入到**函数的值z变小,整体函数近似线性,线性函数模型简单。

改善深层神经网络:第一周深度学习的实用层面

L1比L2更容易获得稀疏解
A:图表解释
首先我们要明白,L1或L2等值线上与平方误差等值线相切的点,是该等值线上可以使总损失函数最小的点。理由,我们那图中L1举例,任取一点w2和相切点w1,

改善深层神经网络:第一周深度学习的实用层面

w1损失=w1平方误差+w1 L2函数值
w2损失=W2平方误差+ w2 L2函数值
因为处于等值线上,所以L2函数值是相等的。但是w1平方误差<w2平方误差,所以相切点总损失函数最小
然后,我们通过图表就可以发现,平方损失函数与两个损失函数相切点,L1更容易使0点,即更容易稀疏
B:公式解释
**# 1.6 dropout正则化 #
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

1.7 理解dropout

说法一

下图,紫色点这个神经元,不愿意把赌注放给任意输入(或特征),因为他们随时可能被删除,不愿给任何一个输入加上太多权重,因此该单元通过这种方法积极的传播开来,并为四个输入增加一点权重,通过传播所有权重,dropout将产生收缩平方范数的效果

改善深层神经网络:第一周深度学习的实用层面

说法二

改善深层神经网络:第一周深度学习的实用层面

1.8其他正则化方法

  • 数据增强
  • 早停技术,不用向L2正则化那样去尝试大量lamba参数

1.9正则化输入

训练神经网络,其中一个加速训练的方法就是归一化输入
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在一些数据比较和评价中常用到。典型的有归一化法,还有比如极值法、标准差法。

归一化方法的主要有两种形式:一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。在数字信号处理中是简化计算的有效方式。

归一化处理的好处:

1 加快梯度下降的求解速度,即提升模型的收敛速度
两个特征区间相差非常大时,如左图中的x1[0-2000]和x2[1-5],形成的等高线偏椭圆,迭代时很有可能走“之字型”路线(垂直长轴),从而导致需要迭代很多次才能收敛。
而右图对两个特征进行了归一化,对应的等高线就会变圆,在梯度下降进行求解时能较快的收敛。
因此在机器学习中使用梯度下降法求最优解时,归一化也很有必要,否则模型很难收敛甚至有时不能收敛。

改善深层神经网络:第一周深度学习的实用层面

2 有可能提高模型的精度
一些分类器需要计算样本之间的距离,如果一个特征的值域范围非常大,那么距离计算就会主要取决于这个特征,有时就会偏离实际情况

标准化/归一化处理的类型及含义:

  • 线性归一化(min-max normalization)
    x=xmin(x)max(x)min(x) x&#x27;=\frac{x-min(x)}{max(x)-min(x)}
    这种归一化适合数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min。
  • 标准差标准化(z-score standardization)
    x=xuσ x&#x27;=\frac{x-u}{\sigma}
    经过处理的数据符合标准正态分布,均值为0,标准差为1。
  • 非线性归一化
    经常用在数据分化较大的场景,有些数值大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数、反正切等。需要根据数据分布的情况,决定非线性函数的曲线。
    log函数:x = lg(x)/lg(max);反正切函数:x = atan(x)*2/pi

梯度消失于梯度爆炸

改善深层神经网络:第一周深度学习的实用层面

如上图所示的网络结构,我们在进行反向传播更新w1权值的时候,公式如下

改善深层神经网络:第一周深度学习的实用层面

sigmod函数导数如下图所示

改善深层神经网络:第一周深度学习的实用层面

从图中可以看出最大值是0.25,所以存在一下两种现象

改善深层神经网络:第一周深度学习的实用层面

ReLu函数

relu函数解决问题的方式很简单,如果偏导数是1的话就不存在爆炸与消失的问题了,relu函数图像如下

改善深层神经网络:第一周深度学习的实用层面

从上图中,我们可以很容易看出,relu函数的导数在正数部分是恒等于1的,因此在深层网络中使用relu**函数就不会导致梯度消失和爆炸的问题。

神经网络权重初始化

#梯度的数值逼近
假设导函数是3 theta 平方,如果使用单边求导,误差是0.3

改善深层神经网络:第一周深度学习的实用层面

如果是双边误差,误差是0.0001

改善深层神经网络:第一周深度学习的实用层面

#梯度检验
#梯度检验笔记

参考文献

  1. https://zhuanlan.zhihu.com/p/21560667?refer=intelligentunit