阶段2—改善神经网络

2.1  深度学习的实践层面

(1)首先了解训练集验证集测试集的概念:

训练集:训练的样本;

开发集:训练之后的参数放到这些数据中做验证;

测试集:最终的测试的样本。

一般的划分比例:6:2:2,当数据量较大(上百万,上千万),验证集和测试集可缩减到0.5%-3%。另外,验证集和测试集的数据要来源相同,同分布,也就是同一类的数据。

(2)偏差和方差

偏差:算法在训练集上面的错误率,偏差大表现为欠拟合

方差:算法在开发集和训练集上的错误率差值,方差大表现为过拟合

可用以下三幅图来形象地解释:图1的曲线拟合程度较差,即高偏差,但波动较小,接近线性,故低方差。图2的曲线拟合程度高,但波动大,所以是过拟合。图3介于两者之间,拟合较好,且波动小,是优秀的模型!

图1.欠拟合曲线
图2.过拟合曲线
图3.拟合较好的模型

减小方差的方法主要有:

1.增加训练数据量(以图像识别为例,可以通过图片反转,放大增加数据量);

2.正则化

3.提前终止等。

本文主要介绍正则化的原理和实现方法。

(3)正则化——避免过拟合

(3.1)L2正则

对损失函数加上一项,如下式:

L2范数正则

由上图可知,权重W的L2范数的平方等于矩阵中所有元素的平方和,最后一项可理解为:对所有层的权重L2范数平方求和,再乘一个系数λ/2m

反向传播还要对该项求导,即在原来的formbackprop基础上多加一项范数求导,如下式:

dW[l]=(formbackprop)+λ/m*W[l]

代入 W[l]=W[l]−α*dW[l],可得到下式:

(1−α*λ/m)<1,所以每一次都会让W变小,因此L2正则化也称为“权重衰减”。

直观理解:在代价函数加入正则项后,如果λ非常大,为了满足代价函数最小化,那么w[l]这一项必须非常接近于0,所以就等价于很多神经元都没有作用了,从原本的非线性结构变成了近似的线性结构,自然就不会过拟合了。如果是tanh函数,当w非常接近于0时,z也接近于0,该段接近于线性,那么整个神经网络也非常接近于线性的网络,那么就不会过拟合了。

(3.2)dropout(随机失活)正则

即让神经网络中的神经元按照一定的概率随机失活

直观理解:因为神经元有可能会被随机清除,这样子在训练中,就不会过分依赖某一个神经元或者特征的权重。但是这个东西的一大缺点就是代价函数J不能再被明确定义,每次都会随机移除一些节点,所以很难进行复查。如果需要调试的话,通常会关闭dropout,设置为1,这样再来debug。需要注意的是:测试时,要把dropout关掉!

(4)归一化数据——提高训练速度

归一化数据可以加速神经网络的训练速度,一般分两步:零均值;归一化方差。

(5)初始化参数——避免梯度消失和梯度爆炸

直观理解:梯度消失和梯度爆炸是深层神经网络与生俱来的问题,为什么这么说?由于网络层数多,基于梯度下降法的原理,dw[i]会随着层数增加呈指数式的变化,导致不同的层学习的速度差异很大,有些层学习得很快,有些层几乎不变。

那如何解决?就需要对权重值W的初始参数动一下手脚啦,一般希望z不要太大也不要太小,所以呢,n越大,W越小才好。通常的做法就是让W的方差等于1/n,如果是relu函数,就等于2/n。

(6)检验梯度双边梯度逼近

2.2  优化算法

(1)Mini-batch 梯度下降法

简单而言,将大的训练集分割成一个个小的子集,每次迭代将这些子集的损失函数求平均值,这样便可以减小每次计算的向量大小,提高计算速度。另外,该方法的损失函数在迭代过程中会有波动,但总体是呈下降趋势。

(2) 动量(Momentum)梯度下降法

动量梯度下降的基本思想就是:计算梯度的指数加权平均数,并利用该梯度来更新权重。该方法可以减少损失函数下降时候的波动,以较快的速度达到最小值

动量梯度下降法的算法如下图所示,其中β通常取0.9。可以形象地认为β给损失函数下降提供了一个阻力,在迭代过程中减小损失函数下降的加速度,从而使其下降地更加“平稳”。

Momentum梯度下降法

(3) Adam 优化算法

Adam 算法就是在动量梯度下降法的基础上作了一点改进,算法如下图所示:

Adam 算法

2.3  超参数调试 和 Batch Norm

(1)超参数的调试

1.超参重要程度:以采用Adam优化的深层神经网络为例,按照重要程度对超参数进行排序,最重要的是学习率,其次是各隐藏层的单元数和Mini-batch规模,然后是隐藏层层数,其他的超参数(如β1、β2、\varepsilon )都取默认值。

2.调试方法:超参数较少:网格点的方式来调试;超参数较多:随机选择点进行调试。(原因是:不知道哪个超参数是更重要的,随机的方式去测试超参数点的性能,更为合理。)

3.Scale均匀随机:超参数调试时,某些超参数是在一个范围内进行均匀随机取值,如果在 0.001~1 的范围内进行均匀随机取值,随机数会有90%的概率落在在0.1∼1 之间,这显然是不合理的。所以我们需要对随机数作一些处理,即将随机值变成指数,如学习率如果在10^a~10^b 之间的范围内,则随机值r∈[a,b]。

在超参数调试的实际操作中,我们需要根据计算资源来决定的调试方式:计算资源有限,仅调试一个模型,每天不断优化;计算资源充足,同时并行调试多个模型,选取其中最好的模型。

(2)激活值的归一化——Batch Norm

在2.1节提及归一化可提高训练速度,对激活函数前的z[l]进行归一化可加速模型训练过程。

Batch Norm 计算公式

实现反向传播更新参数时,需要计算各个参数的梯度:dw[l]、dγ[l]、dβ[l]。这里不需要求db[l],因为Batch Norm将z[l]改成均值为0,标准差为1的分布,再由β和γ进行重新的分布缩放,那就是意味着,无论b[l]值为多少,在这个过程中都会被减去,b不再起作用。所以Batch Norm可以把b掉,或取零值。

Batch Norm的原理

1.与输入层归一化的原理相同,即通过改变损失函数的形状,使得每一次梯度下降都可以更快的接近全局最优点,从而加快训练速度。不同的是,Batch Norm 将各个隐藏层的激活函数的激活值进行的归一化,并调整到另外的分布。

归一化原理图

2.训练过程,w[l]不断变化,对于后面的网络,a[l]的值也在不断变化,所以就有了Covariate shift的问题(训练集和预测集样本分布不一致)。如果对z[l]使用了Batch Norm,那么即使其值不断的变化,但是其均值和方差却会保持,因此削弱了前层参数与后层参数之间的联系,使得网络的每层都可以自己进行学习。

Batch Norm还有轻微的正则化效果。这是因为在使用Mini-batch梯度下降的时候,每次计算均值和偏差都是在一个Mini-batch上进行计算,而不是在整个数据样集上。这样就在均值和偏差上带来一些比较小的噪声。因此,Mini-batch越大,噪声越小,正则化的效果越少。

在这里有个问题,Batch Norm是在Mini-batch中计算均值和方差的,但我们对单个测试集进行预测时,就无法计算均值和方差。一般的做法:对于训练集的Mini-batch,使用指数加权平均,当训练结束的时候,得到指数加权平均后的均值和方差,而这些值直接用于Batch Norm公式的计算,用以对测试样本进行预测。

(3)Softmax 回归

Softmax回归 logistic回归 从二分类问题推广到了多分类问题上,两者的不同点在于最后一层隐藏层的激活函数和损失函数。

Softmax回归的激活函数是一个概率计算函数,最后计算得到各个分类的概率大小。

Softmax激活函数
损失函数
梯度计算公式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容