读书笔记

(本文是基于
neuralnetworksanddeeplearning
这本书的第三章Improving the way neural networks
learn
整治而成的读书笔记,遵照个人口味做了删减)

上一章,大家学习了改进网络磨练的代价函数:交叉熵函数。前些天要介绍神经网络容易碰到的过拟合(overfitting)问题,以及解决的模式:正则化(regularization)

过拟合

过拟合现象

在了然过拟合这么些题材从前,大家先做个试验。

如果大家应用一个有 30 个隐藏层,23860 个参数的网络来预测 MNIST
数据集。然则,我们只用多少集中的 1000
张图片展开训练。训练过程和过去一律,代价函数接纳接力熵函数,学习率 \(\eta = 0.5\),batch 大小为 10,并且训练400 轮。

下图是教练过程中 cost 的变更:

找个正规网赌平台 1

可以看出,cost
是在逐渐变小的。不过这是不是代表网络被磨炼得尤为好啊?我们来看看每一轮的准确率境况:

找个正规网赌平台 2

在大概 280
轮磨练此前,网络的准确率确实在缓慢上升,但其后,我们见到,准确率基本没有大的精益求精,始终维持在
82.20 上下。这和 cost
下降的状态是违背的。这种看似赢得磨炼,其实结果很差的情景,就是过拟合(overfitting)

出现过拟合的原由在于,网络模型的泛化能力很差。也就是说,模型对磨练多少的拟合程度十分好,但对未见过的新数据,就几乎没什么拟合能力了。

要更进一步领会过拟合现象,大家再来看看其他实验。

下图是磨炼过程中,在测试数据上的 cost(之前是教练多少上的):

找个正规网赌平台 3

图中,cost 在前 15
轮训练中日益改进,但从此却又起头上升。这是网络出现过拟合的信号之一。

另一个过拟合的信号请看下图:

找个正规网赌平台 4

这是教练集上的准确率。可以看到,网络的准确率一路升起直到
100%。有人可能会纳闷,准确率高不是好事吧?确实,准确率高是我们需要的,但必须是测试集上的准确率。而教练集上的高准确率,带来的结果未必是好事。它可能代表,网络在教练多少上「钻了牛角尖」。它并不是学习出哪些识别手写体数字,而是一味记住了教练多少长什么样。换句话说,它在训练多少上拟合太过了。

过拟合在当代神经网络中是很广泛的题目,因为网络参数巨大,一旦锻炼样本不够充裕,有些参数就可能没有训练到。为了实用地磨炼网络,我们需要上学可以裁减过拟合的技术。

穿插验证集

在解决过拟合这个题目上,大家需要引入另一个数据集——交叉验证集(validation
dataset)。

交叉验证集可以认为是一种双确保措施。在解决过拟合时,大家会用到很多技巧,有些技巧本身就带有自己的参数(也就是我们说的超参数(hyper
parameter)
),倘若只在测试集上考查,结果可能造成我们解决过拟合的办法有针对测试集的「嫌疑」,或者说,在测试集上过拟合了。因而,用一个新的交叉验证集来评估解决的效果,再在测试集上试验,可以让网络模型的泛化能力更强。

多少个缓解过拟合的小方法

所以称之为小方法,即这种艺术即使实惠,但如故功用很小,要么实践意义不大。

early stop

检测过拟合有一个很显明的措施,就是跟踪测试集上的准确率。当准确率不再上升时,就终止训练(early
stop)。当然,严谨来讲,这不是过拟合的充要条件,可能磨炼集和测试集上的准确率都停下上升了。但这种政策仍旧有助于缓解过拟合问题。

可是,在实践中,大家平日是跟踪验证集上的准确率,而非测试集。

充实练习多少

找个正规网赌平台 5

上图是用装有磨炼多少开展训练时,锻炼集和测试集上准确率的更动意况。

可以观察,相相比在此以前只用 1000
个训练样本的情状,网络在训练集和测试集上的准确率只想差了 2.53%(从前是
17.73%)。也就是说,增添锻练多少后,过拟合问题很大程度上缓解下来了。所以,扩张磨练多少也是解决过拟合的方法之一(而且是最简便有效的法子,所谓「算法好不如数据好」)。可是,扩展数量不是概括地将数据拷贝复制,而是让多少的花色样式越来越助长。

在真实情况中,锻练多少是很难获取的,所以这种格局执行起来很艰辛。

压缩模型参数

减掉模型参数本质上和扩张训练多少是一样的,不过,对于神经网络而言,参数越多,效果一般会更好,所以这种措施不是逼不得已,我们一般不会接纳。

正则化

L2 正则化

正则化是解决过拟合常用的形式。在这一节中,我们将介绍最常用的正则化技巧:L2
正则化(weight decay)。

L2 正则化是在代价函数中添加正则化项(regularization
term)
。比如,下边是正则化后的交叉熵函数:
\[ C=-\frac{1}{n}\sum_{xj}{[y_j \ln
a_j^L+(1-y_j)\找个正规网赌平台,ln(1-a_j^L)]}+\frac{\lambda}{2n}\sum_w{w^2}
\tag{85} \]
所谓正则化项,其实就是权值的平方和,前面的 \(\lambda / 2n\) 是针对性所有样本取均值,而
\(\lambda\)
就是我们说的超参数。之后会商讨 \(\lambda\)
的值该如何取。注意,正则项中并不曾错误,因为对错误的正则化效果不明朗,所以一般只对权值举办正则化。

L2 正则化也足以用在任何代价函数中,比如平方差函数:
\[
C=\frac{1}{2n}\sum_x{||t-a^L||^2}+\frac{\lambda}{2n}\sum_w{w^2}
\tag{86} \]
俺们可以写出 L2 正则化的通式:
\[ \begin{eqnarray} C = C_0 +
\frac{\lambda}{2n}\sum_w w^2,\tag{87}\end{eqnarray} \]
其中,\(C_0\) 是本来的代价函数。

直观上,正则化的职能就是让学习的权值尽可能的小。可以说,正则化就是在小小化原代价函数和搜索小权值之间找折中。而两者之间的严重性由
\(\lambda\) 控制。当 \(\lambda\)
大时,网络会尽可能减小权重,反之,则尽量减小原先的代价函数。

咱们先经过一些实验看看这种正则化的意义。

累加正则化项后,梯度下降的偏导数会时有暴发一些生成:
\[ \begin{eqnarray} \frac{\partial
C}{\partial w} & = & \frac{\partial C_0}{\partial w} +
\frac{\lambda}{n} w \tag{88}\\ \frac{\partial C}{\partial b} & =
& \frac{\partial C_0}{\partial b}. \tag{89}\end{eqnarray}
\]
其中,\(\partial C_0/\partial w\)
和 \(\partial C_0/\partial b\)
可以透过 BP 算法总结,因而,新的偏导数很容易总计:
\[ \begin{eqnarray} w & \rightarrow &
w-\eta \frac{\partial C_0}{\partial w}-\frac{\eta \lambda}{n} w
\tag{91}\\ & = & \left(1-\frac{\eta \lambda}{n}\right) w -\eta
\frac{\partial C_0}{\partial w}. \tag{92}\end{eqnarray} \\
\]

\[ \begin{eqnarray} b & \rightarrow & b
-\eta \frac{\partial C_0}{\partial b}. \tag{90}\end{eqnarray}
\]

在批磨炼时,梯度下降公式变为:
\[ \begin{eqnarray} w \rightarrow
\left(1-\frac{\eta \lambda}{n}\right) w -\frac{\eta}{m} \sum_x
\frac{\partial C_x}{\partial w}, \tag{93}\end{eqnarray}
\]
(注意,式子前半局部除的是教练多少大小 n,后半片段是批操练的 m)

现行,在 1000 个训练样本的例证中,我们投入正则化项(\(\lambda\)
设为0.1,其他参数和事先同一),并探望磨练的结果如何:

找个正规网赌平台 6

找个正规网赌平台 7

可以见见,准确率较在此之前的 82.27%
有了强烈的增强,也就是说,正则化确实在肯定程度上遏制了过拟合。

当今,大家用所有的 50000 张图纸磨炼,看看正则化能否起功用(这里我们设置
\(\lambda\) 为 5.0,因为 n 由原来的
1000 变为 50000,如若 \(\lambda\)
的值和事先同一,那么 \(\frac{\eta
\lambda}{n}\) 的值就会小很大,weight decay
的功效就会大优惠扣)。

找个正规网赌平台 8

可以看出,准确率上升到
96.49%,而且测试集准确率和磨炼集准确率之间的距离也越来越压缩了。

何以正则化能减小过拟合

以此问题得以用奥卡姆(Occam)剃刀(奥卡姆(Occam)’s
Razor)
来表达。奥卡姆(Occam)剃刀的构思是,假如多少个模型都能拟合数据,那么大家先行挑选简单的模子。

正则化给神经网络带来的熏陶是:权值 (相对值)
会更小。权值小的功利是,当输入发生轻微的变通时,网络的结果不会发生大的波动,相反地,倘诺权值
(相对值)
过大,那么一点点变动也会生出很大的响应(包括噪声)。从这点来看,我们得以认为正则化的网络是相比较简单的模子。

本来,简单的模型也不一定是真的有效的,更要紧的是要看模型的泛化能力是不是充分好。关于正则化,人们一向没法找出系统科学的诠释。由于神经网络中,正则化的功力往往不错,由此大部分情景下,大家都会对网络展开正则化。

此外正则化技巧

L1 正则化

L1 正则化的样式和 L2 很像,只不过正则化项略有区别:
\[ C=C_0+\frac{\lambda}{n}\sum_w{|w|}
\tag{95} \]
下面来看看 L1 正则化对网络暴发的影响。

率先,我们对 (95) 式求偏导:
\[ \begin{eqnarray} \frac{\partial
C}{\partial w} = \frac{\partial C_0}{\partial w} +
\frac{\lambda}{n} \, {\rm sgn}(w), \tag{96}\end{eqnarray}
\]
其中,\({\rm sgn}(w)\) 表示 \(w\) 的符号,如果 \(w\) 为正,则为 +1,否则为 -1。

如此这般,梯度下降的公式就成为:
\[ w \rightarrow w’=w-\frac{\eta
\lambda}{n}{\rm sgn}(w)-\eta \frac{\partial C_0}{\partial w}
\tag{97} \]
相比较 L2 的公式 (93),我们发现,多少个姿态都有压缩 weight
的效益,这跟此前分析正则化能起效果的原委是同样的。只但是 weight
缩短的主意不平等。在 L1 中,正则化项让 weight 以一个固定的常数向 0
靠近(weight 是幸亏负都一样),而 L2 中weight 减小的量跟 weight
本身存在一个百分比关系(也就是说,weight 越小,这多少个量也越小)。所以,当
weight 的相对值很大时,L2 对 weight 的平抑功能比 L1 大。

在上式中,存在一个败笔:当 \(w=0\)
时,\(|w|\)
是没法求导的。这些时候,大家只需要简单地令 \({\rm sgn}(w)=0\) 即可。

dropout

dropout 和 L1、L2
存在很大分别,它不会修改代价函数,相反地,它修改的是网络的社团。

只要大家要训练如下的网络:

找个正规网赌平台 9

在梯度下降时,dropout
会随机删除隐藏层中一半的神经细胞,如下(虚线表示删除的神经细胞):

找个正规网赌平台 10

让网络在这种「残缺」的状态下练习。

超过河下一轮 batch
锻炼时,我们先过来完整的网络,然后继续轻易删除隐藏层中一半的神经细胞,再锻炼网络。如此循环直到磨炼截至。

当要利用网络预测的时候,我们会还原所有的神经细胞。由于训练时只有一半的神经细胞启动,因而每个神经元的权值等价于完全网络的两倍,所以,真正使用网络预测时,大家要取隐藏层的权值的一半。

dropout 的思索可以这么精晓:假如大家遵照规范形式 (没有 dropout)
训练很多一律结构的网络,由于各样网络的起首化不同,操练时的批操练多少也会存在差异,因而各样网络的出口都会设有出入。最终我们取所有网络的结果的均值作为最终结出(类似随机森林的投票机制)。例如,我们训练了
5 个网络,有 3
个网络将数字分类为「3」,那么大家就可以认为结果是「3」,因为此外七个网络可能出错了。这种平均的政策很强劲,因为不同的网络可能在不同档次上现身了过拟合,而平均取值可以化解一定水准的过拟合现象。dropout
每一遍磨练时会 drop 一些神经元,这就像在教练不同的网络,dropout
的过程就像在平均很多网络的结果,由此最后起到减小 overfitfing 的效用。

人为扩大磨练多少

除了 dropout,扩充磨练多少也是釜底抽薪过拟合的实惠政策。

为了解磨练多少集对结果的震慑,我们准备做几组实验。每组实验的教练集大小不一,磨练的轮数和正则化的参数
\(\lambda\)
也会做相应调整,其他参数则保持不变。

找个正规网赌平台 11

正如图中所示,训练数据量的扩大有助于加强分类的准确率。图中的结果看似网络已经趋于收敛,但换成对数坐标后,这种效率就越是显著了:

找个正规网赌平台 12

为此,借使我们能将数据集扩展到几十万几百万,准确率应当可以持续上升。

赢得更多磨炼多少是很拮据的,但是好在我们有此外技术达到近似的功能,那就是人造扩展数据。

譬如,大家有一张 MNIST 的训练图片:

找个正规网赌平台 13

旋转 15º 后,我们就赢得另一张样本图片:

找个正规网赌平台 14

这两张图纸肉眼都得以见到是「5」,但在像素级别上,它们差距很大,由此不失为不错的磨炼样本。重复这种做法(旋转运动等等操作),大家得以拿走数倍于原练习多少集大小的样书。

这种做法效果明摆着,在许多试验中都拿到成功。而且,这种思维不仅仅局限于图片识别,在另外职责(如:语音识别)中,这种做法无异于奏效。

除此以外,数据量也足以弥补机器学习算法的不足。假如在同等数量规模下,算法 A
要好于算法 B,但要是为算法 B
提供更多数据,后者的机能往往会超过前者。而且,即便两者数据规模一样,但算法
B 的数目比 A 的尤其丰裕,B 也说不定超越A,这就是所谓好的算法不如好的数额

参考

Leave a Comment.