0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经网络泛化问题

电子设计 来源:电子设计 作者:电子设计 2020-12-14 21:02 次阅读

每当我们训练自己的神经网络时,我们都需要注意称为神经网络的泛化的问题。从本质上讲,这意味着我们的模型在从给定数据中学习以及将所学信息应用到其他方面有多出色。

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

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

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

回到深度学习,我们的目标是使神经网络从给定的数据中尽可能有效地学习。如果我们成功地使神经网络了解到,其他2个品种都还狗,那么我们已经培养了非常general(一般的)神经网络,它会在现实世界中执行得很好。

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

现在,我们实际上没有自由在像“繁殖”这样的基础上划分所有数据。相反,我们将简单地拆分所有数据。数据的一部分,通常是较大部分(大约80–90%)将用于训练模型,其余部分将用于测试模型。我们的目标是确保测试数据的性能与训练数据的性能大致相同。我们使用诸如损失和准确性之类的指标来衡量这一绩效。

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

参数数量

在神经网络中,参数的数量本质上是指权重的数量。这将与层数和每一层中神经元的数目成正比。参数和过度拟合的数量之间的关系如下:越多的参数,越容易导致过拟合。

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

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

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

层的数量越多,越多的激活函数扰乱层之间的线性度,并且因此更加非线性。

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

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

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

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

dropout神经元

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

在训练过程中的每一个瞬间,一组不同的神经元将以随机的方式掉落。因此,我们可以说在每个时刻,我们都在有效地训练某个神经网络比原始神经网络少的某个子集神经网络。由于辍学神经元的随机性质,该子神经网络每次都会改变。

实际上,这里发生的是,当我们训练带有缺失神经元的神经网络时,我们基本上是在训练许多较小的子集神经网络,并且由于权重是原始神经网络的一部分,因此神经网络的最终权重可以视为所有相应子集神经网络权重的平均值。这是正在发生的事情的基本可视化:

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

第一个原因是dropout的神经元促进神经元独立。由于在特定瞬间可能存在或不存在围绕特定神经元的神经元这一事实,因此该神经元不能依赖于围绕其的那些神经元。因此,它会被迫成为更独立,同时训练。

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

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

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

权重正则化

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

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

为什么权重过大对神经网络不利的其他原因之一是由于增加的输入输出差异。基本上,当出现网络中的巨大权重,这是非常容易对小的变化的输入,但神经网络应该基本输出同样的事情了类似的投入。当我们拥有巨大的权重时,即使我们保留两个非常相似的单独的数据输入,它们的输出也可能有很大的不同。这会导致在测试数据上发生许多错误的预测,从而降低了神经网络的通用性。

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

因此,基本上,我们需要限制权重的增长,以使权重不会增长太多,但是我们到底该如何做呢?神经网络尝试将训练时的损失降到最低,因此我们可以尝试在该损失函数中包括权重的一部分,以便在训练时权重也被最小化,但是当然要优先考虑减少损失。

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

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

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

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

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98714
  • 机器学习
    +关注

    关注

    66

    文章

    8116

    浏览量

    130546
  • 深度学习
    +关注

    关注

    73

    文章

    5236

    浏览量

    119895
收藏 人收藏

    评论

    相关推荐

    卷积神经网络的优点

    卷积神经网络的优点  卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的神经网络模型,在图像识别、语音识别、自然语言处理等领域有着广泛的应用。相比
    的头像 发表于 12-07 15:37 2950次阅读

    人工神经网络和bp神经网络的区别

    人工神经网络和bp神经网络的区别  人工神经网络(Artificial Neural Network, ANN)是一种模仿人脑神经元网络结构和功能的计算模型,也被称为
    的头像 发表于 08-22 16:45 3427次阅读

    卷积神经网络模型搭建

    卷积神经网络模型搭建 卷积神经网络模型是一种深度学习算法。它已经成为了计算机视觉和自然语言处理等各种领域的主流算法,具有很大的应用前景。本篇文章将详细介绍卷积神经网络模型的搭建过程,为读者提供一份
    的头像 发表于 08-21 17:11 610次阅读

    卷积神经网络和深度神经网络的优缺点 卷积神经网络和深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经元之间的权重,从而实现对大规模数据进行预测和分类。卷积
    发表于 08-21 17:07 2313次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    卷积神经网络的介绍 什么是卷积神经网络算法 卷积神经网络涉及的关键技术 卷积神经网络(Convolutional Neural Network,CNN)是一种用于图像分类、物体识别、语
    的头像 发表于 08-21 16:49 1423次阅读

    卷积神经网络层级结构 卷积神经网络的卷积层讲解

    卷积神经网络层级结构 卷积神经网络的卷积层讲解 卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的神经网络模型,在许多视觉相关的任务中
    的头像 发表于 08-21 16:49 4372次阅读

    卷积神经网络的基本原理 卷积神经网络发展 卷积神经网络三大特点

    卷积神经网络的基本原理 卷积神经网络发展历程 卷积神经网络三大特点  卷积神经网络的基本原理 卷积神经网络(Convolutional Ne
    的头像 发表于 08-21 16:49 1435次阅读

    卷积神经网络三大特点

    卷积神经网络三大特点  卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,其具有三大特点:局部感知、参数共享和下采样。 一、局部感知 卷积神经网络
    的头像 发表于 08-21 16:49 3567次阅读

    卷积神经网络模型原理 卷积神经网络模型结构

    卷积神经网络模型原理 卷积神经网络模型结构  卷积神经网络是一种深度学习神经网络,是在图像、语音、文本和视频等方面的任务中最有效的神经网络
    的头像 发表于 08-21 16:41 659次阅读

    卷积神经网络模型有哪些?卷积神经网络包括哪几层内容?

    卷积神经网络模型有哪些?卷积神经网络包括哪几层内容? 卷积神经网络(Convolutional Neural Networks,CNN)是深度学习领域中最广泛应用的模型之一,主要应用于图像、语音
    的头像 发表于 08-21 16:41 1507次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点  卷积神经网络(Convolutional neural network,CNN)是一种基于深度学习技术的
    的头像 发表于 08-21 16:41 1931次阅读

    卷积神经网络的应用 卷积神经网络通常用来处理什么

    卷积神经网络的应用 卷积神经网络通常用来处理什么 卷积神经网络(Convolutional Neural Network,简称CNN)是一种在神经网络领域内广泛应用的
    的头像 发表于 08-21 16:41 3976次阅读

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法 卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的人工
    的头像 发表于 08-17 16:30 913次阅读

    什么是神经网络?为什么说神经网络很重要?神经网络如何工作?

    神经网络是一个具有相连节点层的计算模型,其分层结构与大脑中的神经元网络结构相似。神经网络可通过数据进行学习,因此,可训练其识别模式、对数据分类和预测未来事件。
    的头像 发表于 07-26 18:28 1952次阅读
    什么是<b class='flag-5'>神经网络</b>?为什么说<b class='flag-5'>神经网络</b>很重要?<b class='flag-5'>神经网络</b>如何工作?

    三个最流行神经网络

    在本文中,我们将了解深度神经网络的基础知识和三个最流行神经网络:多层神经网络(MLP),卷积神经网络(CNN)和递归神经网络(RNN)。
    发表于 05-15 14:19 1174次阅读
    三个最流行<b class='flag-5'>神经网络</b>