如何训练卷积神经网络解决问题

这是关于卷积神经网络(CNN)属性和应用的系列文章的第二篇,主要关注于模式识别和物体分类。在第一部分中,我们展示了微控制器中的经典线性程序执行与CNN及其优势的差异。我们讨论了CIFAR网络,它可以用于在图像中对猫、房子或自行车等物体进行分类,或执行简单的语音模式识别。本文解释了如何训练这些神经网络来解决问题。

神经网络的训练过程

在系列的第一部分中讨论的CIFAR网络由不同层次的神经元组成,如图1所示。32像素×32像素的图像数据呈现给网络并通过网络层传递。CNN的第一步是检测和研究要区分物体的独特特征和结构。为此使用滤波器矩阵。一旦设计师建模了像CIFAR这样的神经网络,这些滤波器矩阵最初仍然是未确定的,此时网络仍无法检测模式和物体。

为了促进这一点,首先需要确定矩阵的所有参数和元素,以最大化检测物体的准确性或最小化损失函数。这个过程被称为神经网络训练。对于第一部分中描述的常见应用,网络在开发和测试期间训练一次。之后,它们就可以使用了,参数不再需要调整。如果系统正在分类熟悉的物体,则不需要额外的训练。只有当系统需要分类完全新的物体时才需要训练。

训练网络需要训练数据,稍后使用类似的数据集来测试网络的准确性。例如,在我们的CIFAR-10网络数据集中,数据是十个物体类别中的图像集合:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。然而——这是整个AI应用开发中最复杂的部分——在训练CNN之前,这些图像必须被命名。本文将讨论的训练过程遵循反向传播的原则;网络连续展示大量图像,并同时传递目标值。在我们的示例中,这个值是关联的物体类别。每次展示图像时,滤波器矩阵都会被优化,以便物体类别的目标和实际值匹配。完成这个过程后,网络也可以检测在训练期间未看到的图像中的物体。

图1. CIFAR CNN架构。

图2. 由前向传播和反向传播组成的训练循环。

过拟合和欠拟合

在神经网络建模中,经常会出现关于神经网络应该有多复杂的问题——即它应该有多少层,或者它的滤波器矩阵应该有多大。这个问题没有简单的答案。在这方面,重要的是讨论网络的过拟合和欠拟合。过拟合是由于模型过于复杂,参数过多而导致的结果。我们可以通过比较训练数据损失和测试数据损失来确定预测模型是否与训练数据拟合得太差或太好。如果训练过程中损失很低,而在网络呈现从未见过的测试数据时损失急剧增加,这强烈表明网络已经记住了训练数据,而不是泛化模式识别。这主要发生在网络具有太多参数存储或太多卷积层时。在这种情况下,应减小网络规模。

损失函数和训练算法

学习分为两个步骤。第一步,网络展示一张图像,然后由神经元网络处理以生成输出向量。输出向量的最高值表示检测到的物体类别,例如我们示例中的狗,在训练情况下不一定正确。这一步称为前向传播。

在输出处产生的目标和实际值之间的差异称为损失,相关函数是损失函数。网络的所有元素和参数都包含在损失函数中。神经网络学习过程的目标是以这样的方式定义这些参数,使得损失函数最小化。这种最小化是通过一个过程实现的,即在输出处产生的偏差(损失=目标值减去实际值)通过网络的所有组件向后传递,直到到达网络的起始层。学习过程的这部分也称为反向传播。

在训练过程中,产生了一个逐步确定滤波器矩阵参数的循环。这个过程的前向传播和反向传播重复进行,直到损失值低于先前定义的值。

优化算法、梯度和梯度下降法

为了说明我们的训练过程,图3显示了一个仅包含两个参数x和y的损失函数。z轴对应于损失。这里函数本身并不起作用,仅用于说明。如果我们仔细观察三维函数图,我们可以看到函数具有全局最小值和局部最小值。

可以使用大量数值优化算法来确定权重和偏置。最简单的是梯度下降法。梯度下降法基于这样一个想法:从损失函数中随机选择一个起点,逐步使用梯度找到通向全局最小值的路径。梯度作为一个数学运算符,描述了物理量的进展。它在损失函数的每个点提供一个向量——也称为梯度向量——指向函数值变化最大的方向。向量的大小对应于变化量。在图3中的函数中,梯度向量将指向某个点的最小值(红色箭头)。由于表面的平坦,大小会很低。在更远区域的峰值附近,情况会有所不同。在这里,向量(绿色箭头)向下陡峭,大小很大,因为地形陡峭。

使用梯度下降法,从任意选择的点开始,迭代寻找通向最陡下降的路径。这意味着优化算法在起点计算梯度,并沿着最陡下降的方向迈出一小步。在中间点重新计算梯度,并继续通向山谷的路径。这样,从起点到山谷中的点就形成了一条路径。这里的问题是,起点不是预先定义的,而必须随机选择。在我们的二维地图中,细心的读者会将起点放在函数图的左侧。这将确保(例如,蓝色)路径的终点在全局最小值处。另外两条路径(黄色和橙色)要么长得多,要么以局部最小值为终点。因为优化算法不仅要优化两个参数,而是要优化数十万个参数,所以很快就会清楚,起点的选择只能是偶然正确的。在实践中,这种方法似乎并不有用。这是因为,根据所选的起点、路径,训练时间可能很长,或者目标点可能不是全局最小值,这样网络的准确性就会降低。

因此,过去几年已经开发了许多优化算法来绕过上述两个问题。一些替代方法包括随机梯度下降法、动量、AdaGrad、RMSProp和Adam——仅举几个例子。在实践中使用的算法由网络开发者确定,因为每个算法都有特定的优缺点。

训练数据

如前所述,在训练过程中,我们向网络提供带有正确物体类别标记的图像,如汽车、船等。在我们的示例中,我们使用了一个已经存在的CIFAR-10数据集。在实践中,AI的应用可能超出了识别猫、狗和汽车的范围。例如,如果必须开发一个新的应用来检测制造过程中螺丝的质量,那么网络也必须使用来自好和坏螺丝的训练数据进行训练。创建这样的数据集可能非常繁琐和耗时,通常是开发AI应用中最昂贵的步骤。一旦数据集被编译,它被分成训练数据和测试数据。训练数据用于如前所述的训练。测试数据用于在开发过程结束时检查训练网络的功能。

结论

在本系列的第一部分“理解卷积神经网络”中,我们描述了一个神经网络,并详细检查了它的设计和功能。现在我们已经为功能定义了所有所需的权重和偏置,我们可以假设网络可以正常工作。在本系列的最后一篇文章中,我们将通过将其转换为硬件来测试我们的神经网络,以识别猫。为此,我们将使用Analog Devices开发的带有基于硬件的CNN加速器的MAX78000人工智能微控制器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值