Code前端首页关于Code前端联系我们

机器学习算法反向传播研究

terry 2年前 (2023-09-23) 阅读数 105 #AI人工智能

1.付出与收获

诗《悯农》中有两句话:

春天种一粒麦,秋天收万粒。

问:如果一个农民在春天种下 10 粒种子,那么他秋天能收获多少粮食?

因为一粒种子等于一万粒,所以10粒种子收获的谷物是:机器学习之反向传播算法研究

这是一般方法。如何从机器学习的角度来回答?

首先构建模型。

假设你种下一粒种子,你就可以收获种子。努力与收获成正比,比例因子为ω。所以学习模型如下: 机器学习之反向传播算法研究

那么问题就改为,用这个模型来预测当:机器学习之反向传播算法研究

种下种子时可以收获的种子数量:机器学习之反向传播算法研究

问题的关键是。确定参数 ω。

ω可以通过训练来确定,这就是机器学习。但要训练参数,首先需要有训练数据。

从已知条件“春种一粒粟,秋收万麦”,可以提取出一组训练数据: 机器学习之反向传播算法研究

有了模型和数据,就可以开始训练了。

问题是练习什么?如何训练?

练习的目的是确定未知参数ω,基础上预测和目标要一致。

预测值:机器学习之反向传播算法研究

目标值:机器学习之反向传播算法研究

我们将预测值与目标值之间的偏差:机器学习之反向传播算法研究

定义为损失函数。

训练目标改为:机器学习之反向传播算法研究

首先给ω一个初始值:机器学习之反向传播算法研究

偏差为:机器学习之反向传播算法研究

要使偏差趋于0,我们应该如何增加或调整呢?在设置

之前,我们先分析一下参数ω对损失函数:机器学习之反向传播算法研究

的影响。

损失函数的导数:机器学习之反向传播算法研究

也就是说,ω 和损失函数 E(ω) 的趋势相反。当 ω 增大时,E(ω) 减小,并且当 ω 减小时,E(ω) 也增大。而增加或减少的量与E'(ω)有关。

可以看出,导数值的符号表示损失函数的向上方向,导数值的大小表示向上的幅度。

例如这里是-1。符号为负,表示 ω 朝负方向发展,损失函数不断增加。值为 1 意味着 ω 移动 1 个单位,损失函数也增加 1 个单位。

如果将导数视为向量,则表明损失函数的增加速度。

因为目的是减少损失函数,这与导数正好相反,所以我们可以使用负导数方向作为参数调整方向。导数值乘以系数就是参数调整措施。公式如下: 机器学习之反向传播算法研究

由于这里讨论的是一维空间,导数和梯度是一样的,梯度用于高于一维的空间。

所以这种参数调整策略也称为梯度下降法。

根据梯度导数公式,假设η=1,我们有: 机器学习之反向传播算法研究

偏差为:机器学习之反向传播算法研究

不断重复上述过程,直到:机器学习之反向传播算法研究

得到偏差:机器学习之反向传播算法研究

训练结束。

将训练得到的参数值:机器学习之反向传播算法研究

放入模型:机器学习之反向传播算法研究

得到指定模型:机器学习之反向传播算法研究

将:机器学习之反向传播算法研究

放入预测模型:已解决。

2。示例总结

通过上面的示例,您可以大致了解机器学习解决问题的过程。无非是:

  1. 制作模型;
  2. 学习参数;
  3. 结果预测;

模型制作者取决于具体问题,不同的问题需要不同的模型设计。模型的要求是对问题具有足够的描述能力,即能够描述输入和输出训练数据之间的因果关系。

这就像学开车一样。首先你需要确定你的四肢是否健康,你的眼睛是否是色盲。目的是看你是否有能力操作方向盘、油门、离合器以及区分红绿灯。只有具备了这些能力,你才能熟练驾驶。

然而,能力只是前提。如果你想能够做到,你就必须学习。对于模型来说,就是调整参数,使输入和输出训练数据一一匹配。学开车,就是根据不同的路况,进行不同的驾驶动作。重点是输入和输出是相互对应的。例如,如果遇到红灯,应该踩刹车并停车等待。红灯信号是输入,踩刹车的动作是输出。

所以,学习的本质是建立因果关系。输入特定的原因并输出相应的结果。

如何学习?将其与标准因果关系进行比较。

学习开车,红灯和刹车是标准的因果关系。看到红灯时踩刹车是正确的。如果看到红灯就踩油门,不符合标准,那就错了。你要一次又一次地比较、调整,直到建立正确的因果关系,研究就完成了。

对于机器学习来说,训练数据是标准的因果关系。输入数据是默认原因,输出数据是默认结果。

学习过程就是在模型中放入一个标准原因,将输出与标准效果进行比较,如果不一致则调整参数,如此重复,直到与标准效果相同或相当接近。

训练完成、参数固定后,模型将具有预测能力,可用于解决类似问题。就像,如果心里建立了红灯和刹车的联系,无论在北京还是上海、广州还是深圳,只要是红灯场景,你都会采取同样的刹车动作,因为你已经有能力应对这种情况。问题能力。

机器学习模型也具有一定的能力,可以自动处理某些类型的问题。

3。梯度下降算法

上面提到的一种只有一个参数的模型,主要用来描述机器学习的过程和原理。在实际应用中,通常有很多参数。 ω不是一个简单的数字,而是一个多维向量,就像输入和输出一样。

此时的模型可以表示为:机器学习之反向传播算法研究

。其中,y、ω、x都是多维向量。 机器学习之反向传播算法研究

但无论模型多么复杂,参数有多少,学习方法基本是一样的。通过预测值与默认值之间的偏差来调整参数。

偏差的大小与参数ω有关,它是ω的函数,如下: 机器学习之反向传播算法研究

虽然参数很多,但不要害怕,我们使用分而治之的策略来简化。 。

首先,假设只有一个参数,其他不变。根据一开始的努力与收获的例子,我们可以得到参数的调整如下: 机器学习之反向传播算法研究

其他参数不变,只有一个是求导,也叫偏导数,可以写成下面的形式。公式: 机器学习之反向传播算法研究

以此类推,我们可以得到所有参数调整策略: 机器学习之反向传播算法研究

将所有参数的偏导数放在一起: 机器学习之反向传播算法研究

称为梯度,它指向损失函数增加最快的方向。

所以参数调整策略可以组合成一个公式: 机器学习之反向传播算法研究

这是一个梯度下降算法。

直观的效果是这样的: 机器学习之反向传播算法研究

4. 反向传播算法

反向传播算法主要应用于神经网络中。神经网络并没有什么神秘之处,它只是学习模型之一。

但是这类模型的特点之一就是不容易被忽悠。其实,设计模型不需要考虑太多。你只需要根据问题的大小添加或删除网络节点和层,就总是能够满足要求。

因为有人已经证明,如果它们足够大,神经网络可以适应你能想到的任何功能。它就像信号处理的傅里叶变换。

但缺点是参数较多,费时间,学习难度大。

所以,需要的是大量的训练数据和强大的计算机处理能力。剩下的就可以交给时间了。

幸运的是,计算机的处理能力已经有了巨大的提高,互联网上的数据量也在不断增加。这也是当今神经网络更加有效的一个重要原因。

让我们言归正传,继续反向传播算法。

如前所述,无论系统多么复杂,无论它有多少参数。学习的基本方法不变,比较,调整参数,比较,调整参数,直到得到满意的结果。参数调整策略是梯度下降。神经网络也不例外。

如果是这样,反向传播算法是什么?

我们知道梯度导数需要偏导数。这对于一个简单的模型来说还不算什么,但是对于一个有数百、数千层、数千万甚至数亿个参数的神经网络呢?可以算吗?就算能数出来,一一数起来又需要多长时间?

反向传播算法解决了如何快速求偏导数的问题。

本着复杂问题简单化的指导思想,我们举一个简单的例子。

有一个简单的神经网络:机器学习之反向传播算法研究

之间:机器学习之反向传播算法研究

偏差:机器学习之反向传播算法研究

要训练这个神经网络并得到每个参数ω的值,必须最小化这个偏差。可以用梯度下降算法来做,如下: 机器学习之反向传播算法研究

问题的关键是求偏差函数的梯度。也就是求每个参数的偏导数。我们看第一个参数:机器学习之反向传播算法研究

我很困惑,不知道从哪里开始。

没问题。我们来找出网络结构各个量之间的关系: 机器学习之反向传播算法研究

求偏导数:机器学习之反向传播算法研究

将偏导数的结果与神经网络结构图进行比较。你发现什么规律了吗?

每个参数的偏导数仅与前向传播的输入和输出路径中的参数相关。从后向前看,部分下降似乎沿着道路蔓延。

这样,对于神经网络来说,只要知道每个节点的前向传播输入以及从后到前到达该节点的路径上的参数,就可以得到该节点的偏导数参数。

使用这些神经网络规则来计算梯度的算法称为反向传播算法。

所以,反向传播算法并不是一个独立的优化算法。这应该与梯度下降算法结合使用。是一种计算梯度下降的算法。

为什么参数的偏导数有这个特性?

其实结合神经网络的结构,你会发现并不难理解。

偏导数的含义是某一参数的变化对整体结果的影响。

因为神经网络路径中的参数都是乘法的。第一个参数变化将作用于输入,然后沿着路径向后传播。每个节点都会按比例放大或缩小。放大或缩小倍数与节点参数有关。所以最终反映整体结果的是输入参数和路径参数的乘积。

5。题外话

了解了反向传播和偏导数的特点后,一些相关术语就会很容易理解了。

例如梯度消失、梯度爆炸。

如果神经网络层数比较多,每层参数都小于1,那么根据反向传播算法,从后到前经过几层后,因为偏导数是连续相乘的结果,就会导致前一层的偏导数大多为0,参数无法学习,无法达到理想的目标点。这就是梯度消失。

梯度爆炸正好相反。如果每层参数都大于1,连续相乘后层会膨胀,导致偏转过大,从而超过目标点。

无论是梯度消失还是梯度爆发,对机器学习都是不利的。

这也是当前神经网络中Sigmoid激活函数被ReLU取代的原因。

下图左边是原Sigmoid函数,右边是导数。可见,即使最大值很小,那么将其放入神经网络的路径中也很容易导致梯度消失。 机器学习之反向传播算法研究

下图是ReLU函数。可以看出,如果函数的值大于0,导数始终为1,即使相乘也不会缩小或膨胀,有效避免了梯度和爆炸。 机器学习之反向传播算法研究

学习水平。

参数调整策略公式中:机器学习之反向传播算法研究

参数η称为学习率。

学习率的大小对学习过程影响很大。如果设置太小,学习速度会太慢,学习时间会更长。如果设置太大,会造成振荡或发散,影响最终效果。 机器学习之反向传播算法研究

(本文部分图片来源于网络,如有违规,请联系作者删除)

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门