当前网络状况复杂 请尝试使用其他网络_神经网络泛化

State-of-the-art 神经网络的泛化能力远未达到人们的科幻片预期。本文深入浅出的介绍了这个问题,并列出了当前有效的解决方法,背后的原理也解释的通俗易懂,非常难得。

无论何时训练自己的神经网络,我们都需要留意神经网络的泛化问题。本质上,这是指我们的模型从给定数据中学习并将所学到的知识应用于其它地方的能力有多强。

在训练神经网络时,有一部分数据作为训练数据,还有一些数据保留用作检查神经网络的性能。如果神经网络在尚未训练的数据上表现良好,那么可以说它在给定数据上的表现很好。让我们通过一个例子来理解这点。

假设我们正在训练一个神经网络,该神经网络应该告诉我们给定图像是否有狗。假设我们有几只狗的图片,每只狗都属于某个品种,并且这些图片中总共有12个品种。我用10个品种的狗的所有图像进行训练,而其余2个品种的图像保留用为测试。

44e36c2312e52a4f0a517c8c495b5afa.png

在讲深度学习之前,让我们先从人类视觉角度来看。比如有一个在整个生命中从未见过狗的人(仅仅是举一个例子)。现在,我们将向他展示10种狗,并告诉他这是狗。然后,我们向他展示其它2个品种,他是否能够识别出它们也是狗?他应该能做到,10个品种应该足以理解和识别狗的独特特征。将从某些数据中学习并获得的知识正确应用于其他数据的这个概念称为泛化。

回到深度学习,我们的目标是使神经网络从给定的数据中尽可能有效地学习。如果我们成功的使神经网络理解其他2个品种还是狗,那我们就是训练了一个非常通用的神经网络,它会在现实世界中表现得很好。

知易行难,训练通用神经网络是深度学习从业人员最令人头痛的任务之一。这是由于神经网络中的一种现象,即过拟合。如果神经网络对10个犬种进行训练,并且拒绝将其他2个犬种归为犬,则该神经网络对训练数据而言过拟合了。这意味着神经网络已经记住了那10种狗,并且只将它们视为狗。因此,它无法形成对狗长什么样的一般性理解。在训练神经网络的同时解决这个问题是我们在本文中要探讨的。

我们实际上没法像“品种”标准一样划分所有数据,而是简单地划分所有数据。数据的一部分,通常是较大部分(大约80–90%)将用于训练模型,其余部分用于测试模型。我们的目标是确保测试数据的性能与训练数据的性能大致相同。我们使用损失和准确率之类的指标来衡量性能。

我们可以控制神经网络的特定方面,以防止过拟合。以下一一介绍。首先是参数数量。

参数数量

在神经网络中,参数的数量实质上是指权重的数量。这与层数及每层神经元的数量成正比。参数的数量和过度拟合之间的关系如下:越多参数,越可能过拟合。下面我会解释原因。

我们需要根据复杂性来定义问题一个非常复杂的数据集将需要一个非常复杂的函数来成功解析和表示它。从数学上来讲,我们可以将复杂性与非线性联系起来。让我们回想一下神经网络公式。

e1adec24d2155771dd24a37ec1e80dc4.png

在这里,W1,W2和W3是此神经网络的权重矩阵。现在,我们需要注意的是方程式中的激活函数,它应用于每一层。由于具有这些激活功能,每一层都与下一层非线性连接

第一层的输出为f(W_1 * X)(设为L1),第二层的输出为f(W_2 * L1)。如此处所示,由于激活函数(f),第二层的输出与第一层具有非线性关系。因此,在神经网络的末端,最终值Y相对于输入X具有一定程度的非线性,具体取决于神经网络中的层数

层数越多,则越多的激活函数扰乱层间的线性关系,因此非线性更多。

由于这种关系,我们可以说,如果神经网络在每一层中具有更多的层更多的节点,它将变得更加复杂。因此,我们需要根据数据的复杂性来调整参数。除了重复实验和比较结果外,没有确定的方法。

在给定的实验中,如果测试得分远低于训练得分,则该模型具有过拟合的特征,这意味着神经网络对于给定的数据具有太多的参数。这意味着神经网络对于给定的数据来说太复杂了,需要简化。如果测试分数与训练分数大致相同,则该模型已经泛化,但这并不意味着我们已经达到了神经网络的最大潜力。如果我们增加参数,性能将会提高,但也可能会过拟合。因此,我们需要继续尝试通过平衡性能和泛化来优化参数数量

我们需要将神经网络的复杂度与数据复杂度相匹配。如果神经网络太复杂,它将开始记忆训练数据,而不是对数据有通用性的理解,从而导致过拟合。

通常,深度学习从业人员是首先训练有足够大量参数的神经网络,以使模型过拟合。因此,最初我们尝试获得一个非常适合训练数据的模型。接下来,我们尝试迭代减少参数的数量,直到模型停止过拟合为止,这可以被认为是一种最佳的神经网络。我们可以用来防止过拟合的另一种技术是使用Dropout神经元。

Dropout神经元

在神经网络中,添加Dropout神经元是减少神经网络过拟合的最流行,最有效的方法之一。Dropout是指基本上网络中的每个神经元都有一定的概率从网络中完全脱离。这意味着在特定时刻,存在某些神经元,这些神经元不会连接到网络中的任何其他神经元。这是一个可视化示例:

3a3fc63738c658dc4b4c5792595771a5.png

每次训练,一组不同的神经元将以随机的方式脱离。因此,可以说,每次我们都在有效地训练某个比原始神经网络少的某个子神经网络。由于dropout神经元的随机性,该子神经网络每次都会改变。

本质上,当我们训练带有dropout神经元的神经网络时,我们是在训练许多较小的子神经网络,并且由于权重是原始神经网络的一部分,因此神经网络的最终权重可以被视为所有相应子神经网络权重的平均值。以下是过程的可视化:

2eb8d6035f40f2e0a97d49817db7f878.png

这就是dropout神经元在神经网络中的工作方式,但是为什么dropout会防止过拟合?主要原因有两个:

第一个原因是dropout神经元促进神经元独立。由于特定神经元周围的神经元在某个瞬间可能存在或不存在,该神经元不能依赖于周围的神经元。因此,训练中它会被迫变得更独立。

第二个原因是由于dropout,我们实质上是一次训练多个较小的神经网络。通常,如果我们训练多个模型并求平均权重,通常会由于每个神经网络的独立学习的积累而提高性能,但是这非常耗时且昂贵,因为我们需要定义多个神经网络并分别进行训练。而在dropout的情况下,做同样的事情,我们需要一个神经网络,就可以从中训练子神经网络的多种可能配置

训练多个神经网络并汇总其学习知识称为“ensembling”,通常可以提高性能。使用dropout实际上是在只有1个神经网络的情况下实现的。

减少过度拟合的下一种技术是权重正则化。

权重正则化

在训练神经网络时,某些权重的值可能会变得非常大。发生这种情况的原因是,这些权重集中在训练数据中的某些特征上,这导致它们在整个训练过程中的值不断增加。因此,网络过拟合训练数据。

我们不需要不断增加权重来获取特定模式,相反,如果它们的值相对于其他权重更高,那就很好了。但是,在训练过程中,当神经网络通过多次迭代对数据进行训练时,权重值可能会不断增加,直到权重变得巨大,这是没必要的。

为什么巨大的权重对神经网络不利的另一个原因之一是由于输入输出方差的增加基本上,当网络中出现巨大的权重,对小的输入变化输出非常容易出现极大波动,但神经网络应该对相似的输入基本输出相同的结果。当权重巨大时,即使我们保证两个独立数据输入非常相似,它们的输出也可能会有很大差异。这导致在测试数据上发生许多错误的预测,从而降低了神经网络的泛化能力。

神经网络中权重的一般规则是,神经网络中的权重越高,神经网络越复杂。因此,具有较高权重的神经网络通常趋于过拟合。

因此,我们需要限制权重的增长,以免权重增长太多,但是我们到底该如何做呢?神经网络试图在训练时使损失最小化,因此我们可以尝试在损失函数中包括一部分权重,以便在训练时也使权重最小化,不过当然降低损失是首要的目标。

有两种方法可以执行此操作,它们称为L1和L2正则化。在L1中,我们只计算网络所有权重绝对值之和的一小部分。在L2中,我们只取网络所有权重的平方值的总和的一小部分。我们只是将此表达式添加到神经网络的整体损失函数中。公式如下:

9752851cabcdb57fb2982ce08834b9e4.png

在这里,lambda是一个可以更改权重变化影响程度的系数值。我们只是将L1或L2项增加到神经网络的损失函数中,以便网络同时最小化这些项。通过增加L1或L2正则化,网络将限制其权重的增长,因为权重的大小是损失函数的一部分,并且网络始终尝试使损失函数最小化。下面我们重点介绍L1和L2之间的一些区别。

使用L1正则化时,权重因正则化而减小,L1会尝试将其完全降低到零。因此,对神经网络贡献不大的不重要权重最终将变为零。但是,在L2中,由于平方函数对于小于1的值成反比,权重不会被推为零,而是会被推向较小的值。因此,不重要的权重比其他权重要小得多。

这涵盖了防止过拟合的重要方法。在深度学习中,我们通常使用这些方法的组合来提高神经网络的性能并改善模型的泛化能力。谢谢阅读!

Reference:

Generalization in Neural Networks by Harsha Bommana

https://medium.com/deep-learning-demystified/generalization-in-neural-networks-7765ee42ac23​medium.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值