误差反向传播算法-1| 学习笔记

简介: 快速学习误差反向传播算法-1。

开发者学堂课程【机器学习算法 :误差反向传播算法-1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/535/detail/7240


误差反向传播算法-1

 

多层感知器的训练

单层感知器根据输出值的不一样,可以分为离散型和连续性,离散型的按照离散感知器学习规则,连续型的使用Δ学习规则或Δ学习规则的变种,如:LMS 学习规则。

确定学习规则后,单层感知器训练依照离散感知器学习规则或 & 学习规则,对于一组输入有一个预期输出,通过模型再得到一个实际输出,通过比较感知器输出结果和预期输出结果是否一致,如果不一致会有一个差值,基于差值调整感知器的权重和阈值,直至差值小到接受范围内,即可完成模型训练,得到一个比较满意的结果。

1.单层感知器学习规则的逻辑

如下∶

Ø 定义一个包含感知器参数的损失函数,用来衡量当前模型优劣。

Ø 调整参数的值,让损失函数逐步变小

Ø 损失函数小到一定程度,使得输出结果和预期输出结果的差可以接受

Ø 学习得到合乎要求的模型

多层感知器的学习规则同样使用该逻辑,只是由于多层感知器的隐藏层的神经元,没有直接的预期输出结果,其预期输出体现在下一层(单隐藏层)或者下 N 层(多个隐藏层)的输出中,需要从整体考虑具体的损失函数。

总结:无法定义隐藏层的输出函数得到的是整体隐藏函数。

如图为单隐藏的多层感知器,三层:输入、输出和隐藏。

此时有两组权重需要调整。根据之前预期输出和实际输出的差去调整,实际上预期输出是输出层的输出,而非隐藏层。在此就会十分繁琐。

图片20.png

2. 步骤

Step 1:初始化 W, b

Step 2:在训练数据集中选取(Xi,Yi)

Step 3 :

计算损失函数 L=Yi=(WXi+b),如果 L≤0,则更新权重及偏置量∶

图片21.png

step 4∶转至 Step 2

3. 示例

(1)题目

多层感知器的拓扑结构如图,共有三层。输入层一层含有三个结点,一个是 b 偏置,还有两个输入向量的分量 x1,x2。隐藏层两个结点,一个 h1,一个 h2。输出层一个结点 o。

同时权重已经在线上标明,如:x1 的权重为1和0。

图片22.png

(2)分析

首先它们的关系如下,隐藏层和输入层:h1=b*0+x1*1+x2*1等于x1+x2;h2 =b*1+x1*0+x2*1等于。此时假设激活函数没有,直接为简单的累加求和,最后结果为 o 的平方。而 o 净输出=2*h1+3*h2。即结果如图。

图片23.png

假设此时 x1 发生变化,必然会对 h1 产生影响,常用导数来表示。导数的概念为用极限的概念表示变化率,所以当 x1极小时,对应的导数就表示  h1 的变化的量。

图片24.png

同时h1此时较为特殊,它还受 x2 的影响,b 为0所以不做影响。即此时 h1 依赖于多个变量,所以再说明 x1 对于 h1的影响应使用偏导数。同样当 x2 变化时也会对 h1 产生影响。

x1 变化时,h1 也会变化,可以通过导数来表示:图片25.png

h1 依赖于多个变量,x1 的影响需偏导数来表示:图片26.png

h1 依赖于多个变量,x2 的影响需偏导数来表示:图片27.png

同样 h1 的变化也会影响 o。

o 依赖于多个变量,h1 的影响需偏导数来表示:图片28.png

图片29.png

最后具体衡量 x1 变化对于 o的影响。而此时并不能直接为 x1 求导,此时因使用链式求导法则。根据u=2x1+5x2+3b,o 就是 u 的平方。所以 o 对 x1 求导就是 o 对 u 求导和 u 对 x1 求导两者的乘积,所以最后要用数量来衡量 x1 对 o 的影响则为8x1+20x2+12b。

x1 变化对于 o 的影响为:图片30.png

o 对 x1 求导: 图片31.png

x1 变化对 o 的影响为:8x1+20x2+12b

l 链式求导法则:

假设此时有函数 y=f(g(X)),要求 y 对 x 的导数,只需设 u=g((X)),y=f(g(X)) 就会变为 y=f(u),再求 y 对于 u 求导即可,而此时 u 又是关于 x 的函数,所以再求 u 对 x 求导,最后两者乘积就是 y 对 x求导的结果。这就是链式求导法则。

图片32.png

同理 x2 变化后的对 o 的影响也可以求出。虽然 x2 对 h1 和 h2 都有影响但 o 的表达式中已经包含了 h1 和 h2 两者的影响,所以直接使用 o 对 X1  求导就表明了,x2 变化对 o 的影响。同理还可以求出b变化时的影响。

X2 变化对 o 的影响为:图片33.png

b 变化对 o 的影响为:图片34.png

(3) 从输入建立到输出的关系,当网络结构简单时,遍历路径可控∶

b 变化会影响到 h1, 再影响 o

b -> h1 ->o

b 变化会影响到 h2,再影响 o

b ->h2 ->o

x1 ->h1 ->o

x1 ->h2 ->o

x2 -> h1 -> o

x2 ->h2 ->o

当输入变量增多、隐藏层增加或者隐藏层中的神经元增多时,求偏导的次数快速增加,与神经元个数的二次方成正比。

计算量过大,使得学习过程变得仅仅理论上可行。(这也是闵斯基看衰 ANN 的原因)。设想一个2个隐藏层,每个隐藏层10个节点的结构,输入变量 x 将会有10*10条路径影响到输出变量 o。

从输入到输出的链式求导顺序,关的是输入对输出的影响。事实上通过简单计算能得到模型输出和实际输出的差异,我们更想知道的是输出 o 的变化对前面的路径(输入+权重参数)有什么影响.

相关文章
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
11月前
|
机器学习/深度学习 算法 前端开发
图解前向、反向传播算法,一看就懂!
前向传播是神经网络中信息从输入层经过隐藏层传递到输出层的过程。每个神经元接收前一层的输出,通过加权求和和激活函数处理后传递给下一层,最终生成预测结果。此过程涉及输入信号、加权求和、激活函数应用等步骤。前向传播用于生成预测结果,在训练阶段与真实标签比较以计算损失函数,并在推理阶段直接生成预测值。反向传播则利用链式法则计算损失函数相对于权重的梯度,调整参数以减小误差,从而优化模型性能。两者结合实现神经网络的有效训练和预测。
|
机器学习/深度学习 人工智能 自然语言处理
深度学习还不如浅层网络?RL教父Sutton持续反向传播算法登Nature
【9月更文挑战第24天】近年来,深度学习在人工智能领域取得巨大成功,但在连续学习任务中面临“损失可塑性”问题,尤其在深度强化学习中更为突出。加拿大阿尔伯塔大学的研究人员提出了一种名为“持续反向传播”的算法,通过选择性地重新初始化网络中的低效用单元,保持模型的可塑性。该算法通过评估每个连接和权重的贡献效用来决定是否重新初始化隐藏单元,并引入成熟度阈值保护新单元。实验表明,该算法能显著提升连续学习任务的表现,尤其在深度强化学习领域效果明显。然而,算法也存在计算复杂性和成熟度阈值设置等问题。
280 2
WK
|
机器学习/深度学习 监控 算法
反向传播算法是如何工作的
反向传播算法通过最小化损失函数优化神经网络。首先,输入数据经由前向传播得到预测结果,并计算损失;接着,反向传播计算各参数的梯度,并利用梯度下降法更新权重和偏置。这一过程反复进行,直至满足停止条件。算法具备高效性、灵活性及可扩展性,能处理复杂模式识别与预测任务,适用于不同类型与规模的神经网络,显著提升了模型的预测准确性和泛化能力。
WK
555 3
|
机器学习/深度学习 算法
**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。
【6月更文挑战第28天】**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。数据从输入层流经隐藏层到输出层,计算预测值。接着,比较预测与真实值计算损失。然后,从输出层开始,利用链式法则反向计算误差和梯度,更新权重以减小损失。此过程迭代进行,直到损失收敛或达到训练次数,优化模型性能。反向传播实现了自动微分,使模型能适应训练数据并泛化到新数据。
316 2
|
机器学习/深度学习 人工智能 算法
反向传播算法
深度学习中,反向传播是神经网络训练的关键,它通过计算损失函数对参数的梯度来调整网络权重,减少预测与真实值的差距。该过程包括:1) 前向传播,输入数据通过网络;2) 计算损失,评估预测输出与实际值的偏差;3) 反向传播,利用链式法则计算所有参数的梯度;4) 参数更新,使用梯度下降法更新权重。这一循环不断迭代,提高模型性能。反向传播使得神经网络能适应复杂任务,推动了现代机器学习的发展。
|
机器学习/深度学习 算法 PyTorch
神经网络反向传播算法
神经网络中的反向传播算法是用于训练的关键步骤,通过计算损失函数梯度更新权重。它始于前向传播,即输入数据通过网络得出预测输出,接着计算预测与实际值的误差。反向传播利用链式法则从输出层开始逐层计算误差,更新每一层的权重和偏置。例如,一个包含隐藏层的网络,初始权重随机设定,通过反向传播计算损失函数梯度,如sigmoid激活函数的网络,调整权重以减小预测误差。在Python的PyTorch框架中,可以使用`nn.Linear`定义层,`optimizer`进行参数优化,通过`backward()`计算梯度,`step()`更新参数。
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数

热门文章

最新文章