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

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:公式解释b
假设只有一个参数为w,损失函数为L(W),分别使用L1正则化和L2正则化的导数分别为
J L 1 ( w ) = L ( w ) + λ ∣ w ∣ J_{L1}(w)=L(w)+\lambda|w| JL1(w)=L(w)+λw
J L 2 ( w ) = L ( w ) + λ w 2 J_{L2}(w)=L(w)+\lambda w^2 JL2(w)=L(w)+λw2
假设L(W)在0处的导数为 d 0 d_{0} d0 ,即 ( ∂ L ( w ) ∂ w ) w = 0 = d 0 (\frac {\partial L(w)} {\partial w})_{w=0}=d_0 (wL(w))w=0=d0,分别使用L1正则和L2正则化的导数
L2正则化在0处的导数 ( ∂ L 2 ( w ) ∂ w ) w = 0 = d 0 + 2 λ w = d 0 (\frac {\partial L2(w)} {\partial w})_{w=0}=d_0+2\lambda w=d_0 (wL2(w))w=0=d0+2λw=d0
L1正则化在0处的导数: ( ∂ L 1 ( w ) ∂ w ) w = 0 − = d 0 − λ (\frac {\partial L1(w)} {\partial w})_{w=0^-}=d_0-\lambda (wL1(w))w=0=d0λ
( ∂ L 1 ( w ) ∂ w ) w = 0 + = d 0 + λ (\frac {\partial L1(w)} {\partial w})_{w=0^+}=d_0+\lambda (wL1(w))w=0+=d0+λ
可见,引入L2正则时,代价函数在0的导数仍是d0,无变化。而引入L1正则化后,代价函数在0处的导数有一个突变,如果d0−λ<0,d0+λ>0,则在0处会是一个极小值点,因此优化时,很可能优化到该极小值电商,即w=0处
这里只解释了只有一个参数的情况,如果有更多的参数,也是类似的,因此用L1正则更容易产生稀疏解。

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 ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x&#x27;=\frac{x-min(x)}{max(x)-min(x)} x=max(x)min(x)xmin(x)
    这种归一化适合数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min。
  • 标准差标准化(z-score standardization)
    x ′ = x − u σ x&#x27;=\frac{x-u}{\sigma} x=σxu
    经过处理的数据符合标准正态分布,均值为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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值