误差反向传播算法-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 的变化对前面的路径(输入+权重参数)有什么影响.

相关文章
|
4天前
|
机器学习/深度学习 算法 网络架构
什么是神经网络学习中的反向传播算法?
什么是神经网络学习中的反向传播算法?
9 2
|
4天前
|
机器学习/深度学习 算法
大模型开发:解释反向传播算法是如何工作的。
反向传播算法是训练神经网络的常用方法,尤其适用于多层前馈网络。它包括前向传播、计算损失、反向传播和迭代过程。首先,输入数据通过网络层层传递至输出层,计算预测值。接着,比较实际输出与期望值,计算损失。然后,从输出层开始,利用链式法则反向计算误差和权重的梯度。通过梯度下降等优化算法更新权重和偏置,以降低损失。此过程反复进行,直到损失收敛或达到预设训练轮数,优化模型性能,实现对新数据的良好泛化。
|
4天前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
35 1
|
4天前
|
机器学习/深度学习 人工智能 算法
神经网络算法——反向传播 Back Propagation
神经网络算法——反向传播 Back Propagation
31 0
|
4天前
|
机器学习/深度学习 算法
反向传播原理的梯度下降算法
反向传播原理的梯度下降算法
|
4天前
|
机器学习/深度学习 算法 关系型数据库
反向传播原理的反向传播算法
反向传播原理的反向传播算法
|
4天前
|
机器学习/深度学习 算法 数据挖掘
反向传播算法
反向传播算法
|
4天前
|
机器学习/深度学习 数据采集 算法
【深度学习基础】反向传播BP算法原理详解及实战演示(附源码)
【深度学习基础】反向传播BP算法原理详解及实战演示(附源码)
79 0
|
4天前
|
机器学习/深度学习 算法 TensorFlow
【Python机器学习】神经网络中误差反向传播(BP)算法详解及代码示例(图文解释 附源码)
【Python机器学习】神经网络中误差反向传播(BP)算法详解及代码示例(图文解释 附源码)
51 0
|
4天前
|
机器学习/深度学习 自然语言处理 算法
【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)
【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)
48 0