yaboPP电子
技术文章

理解简单神经网络训练

2019年11月26日经过罗伯特·凯

在本文中,我们将审查神经网络培训的一些重要方面,然后我们将讨论过度训练的概念。

对神经网络很陌生吗?从这里开始或浏览本系列的其余部分以获得更多信息:

  1. 如何使用神经网络进行分类:什么是感知机?
  2. 如何用一个简单的感知器神经网络来分类数据
  3. 如何训练基本感知器神经网络
  4. 理解简单神经网络训练
  5. 神经网络培训理论介绍
  6. 理解神经网络中的学习率
  7. 多层感知器的高级机器学习
  8. SIGMOID激活功能:多层erceptron神经网络中的激活
  9. 如何训练多层的感知者神经网络
  10. 了解多层情人的培训公式和背部经验
  11. 用于Python实现的神经网络架构
  12. 如何在Python中创建多层Perceptron神经网络
  13. 使用神经网络的信号处理:神经网络设计中的验证
  14. 神经网络训练数据集:如何训练和验证Python神经网络

感知器训练数据

训练的目的是提供数据,使神经网络收敛到输入和输出之间可靠的数学关系。在前一篇文章中,数学关系很简单:如果三维空间中的一个点的x分量小于零,则输出为零(例如,表示该数据点是“无效的”,不需要进一步分析);如果x分量等于或大于零,则输出为1(表示“有效”的数据点)。

在诸如此类的情况下,在数学关系是已知的情况下,您可以在电子表格程序中生成培训数据。我用Excel:


x、y和z分量是由RANDBETWEEN()函数生成的。在上面的截图中,随机值都是-10到+10之间的整数。在训练集的另一部分,我使用公式RANDBETWEEN(- 10,10)/10来获得区间[-1,+1]内的非整数x, y和z分量。


需要说明的是:在电子表格中生成训练数据是使用神经网络进行实验的一个很好的方法,而实验是熟悉并最终精通神经网络设计和实现的一个非常重要的部分。然而,在实际应用中,您通常不能以这种方式制造训练数据,因为使用神经网络的全部意义是创建一个您不知道的、不容易定义或确定的算法。

下面的小节将讨论在创建训练集时需要记住的一些事情。

提供丰富的培训数据

神经网络不会通过洞察力和批判性思维来学习。这是一个纯粹的数学系统,它非常渐进地逼近复杂的输入-输出关系。因此,大量的数据有助于网络继续细化其权重,从而实现更大的整体功效。

分散你的数据

在你的训练数据中加入多样性是很重要的。我们想让感知机接近真实的,广义的输入和输出之间的关系,而不是一个虚假的或过度简化的关系,存在于一个不充分多样化的训练集的输入和输出值之间。

想象一下,你之前从未见过一棵树,你不知道一棵树的样子。你的朋友正试图通过向您展示数千张的树木照片来帮助您。不幸的是,他住在一个松树林中,他只用松树拍照。在研究照片后,你可以轻松地看一棵松树,也可能在冷杉或云杉,说“这是一棵树。”但是,如果你看到橡木,或樱花或棕榈树,你会说什么?This probably isn’t the best analogy that I’ve ever come up with, but I think it gives a general idea of what happens to a neutral network when you train it with data that don’t reflect the diversity of the real processing task.

将训练数据与操作数据相匹配

培训数据应该代表网络将尝试分类的数据。毕竟,培训的目的是使网络能够有效地处理某种类型的现实生活信息。For example, with regard to the simple classification system that we’ve been studying, I might know that my real-life input data will stay within the interval (–5, +5), perhaps because the three components of the input vector are actually analog voltages delivered by an op-amp with a ±5 V supply. If this were the case, I would produce a training set that includes numerous integer and non-integer values ranging from –5 to +5.

洗牌

在前一篇文章中,我们看到一个训练集可以被处理多次,每个完整的遍历集合称为一个epoch。但是,最好在每个epoch之后对训练集中的样本进行洗牌,这样网络就不会受到时序的负面影响订单里面有样品。我可能会在神经网络软件中实现这个功能,但您也可以在电子表格中复制训练集,然后在复制集中随机重新排列样本。

过度训练

神经网络可以响应输入和输出之间的极其复杂的关系,因此网络可能包含特定于训练集的输入 - 输出详细信息,并且与实际分类任务无关。这被称为过度训练(或过度装箱)。

下图有效地说明了过度训练的概念。

使用的图像礼貌Ignacio Icke[4.0 CC冲锋队]

红点和蓝点表示神经网络分类的训练样本。黑线表示一个好的分类策略:它遵循一般模式从蓝色分开红色,因此它可能会在实际数据上产生最低的错误。绿线是过度训练的分类策略。它遵循培训数据太好;在尝试完全分类训练样本时,它创建了一个较少的输入输出关系,因此对现实生活数据不太适合。

另一种将过度训练形象化的方法是下面的图表。


在这种情况下,我们认为神经网络作为生成数学函数的系统,该数学函数用作训练样本所显示的输入输出关系的近似。弱势显然是不可接受的,因为该功能不准确地近似训练数据的趋势,但过度训练也是有问题的,因为趋势在训练集中过度关注细节过度关注细节扭曲。

结论

我希望你知道如何更清楚地了解如何培训神经网络。下一篇文章将继续讨论培训,但我们将从更为理论的角度来看问题。