是谁在耳边,说“信号正向传播,误差反向传播” ?
梦回遥远大三的计算智能课,三年前我可想不到居然有朝一日会重新"预习"它......
每一堂课、一本书,当时只道是寻常,如今不经意想起,忽怀念这些瞬间。所谓成长,正是这些乏味却又鲜活的琐碎;所谓时光,正是这些不经意却弥足深刻的只言片语吧。
目录
一. 相关概念
?二. 神经网络通用表示
1. 一个神经元模型
【深度学习|反向传播算法(BP神经网络)】2. 全连接神经网络
三. 前向传播算法
四. 反向传播算法
1. 采用批量梯度下降法获得参数w和b的更新公式
2. 通过链式法则和残差δ的定义求解代价函数的偏导
(1)对于输出层(L层)的权重参数w的偏导
(2)对于隐藏层(l层)的权重参数w的偏导
(3)对输出层和隐藏层的偏置参数b的偏导
(4)公式总结
3.对N个训练样本集用BP算法更新参数的步骤
一. 相关概念 后向传播学习的前馈型神经网络(Back Propagation Feed-forward Neural Network)简称BPNN,不严谨地说BP一般就是BPNN。后向传播是一种学习方法、规则,体现网络的训练过程;前馈型网络是一种结构,体现网络架构。
后向传播
文章图片
反馈型网络。常见学习规则除了后向传播还有梯度下降等。
- 前(正)向传播网络
- 后(反)向传播网络:反向传播是指通过比较输出层的实际输出和预期的结果,得到误差,然后通过相关的误差方程式调整最后一个隐含层到输出层之间的网络权重,之后从最后一个隐含层向倒数第二隐含层进行误差反馈,调整它们之间的网络权重,以此类推,直到输人层与第一隐含层之间的网络权重调整为止。
- 前馈型网络:各神经元从输入层开始单向传播,只接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221526147-1.jpg)
文章图片
- ?反馈型网络:输出层中存在着一个反馈回路到输入层作为输入层的一个输入,也可以自己到自己,可以理解为自控系统方框图中的反馈回路,可用有向循环图或者无向图表示。
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152M13-2.jpg)
文章图片
?二. 神经网络通用表示 1. 一个神经元模型
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152L64-3.jpg)
文章图片
?
上图x1,x2,?,xi,?,xn?表示神经元的n个输入,w1,w2,?,wi,?,wn?表示对应输入的权重参数(链接权重),神经元对输入x权重w进行加权求和得到加权输入z,也就是神经元的状态。随后将z传递给激活函数f(?),得到激活值,对于单个神经元,也就是其输出值y。其中激活函数f(?)可以为多种激活函数,且激活函数均为非线性函数。
2. 全连接神经网络
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215264c-4.jpg)
文章图片
?
- 在第
文章图片
层神经元,用
文章图片
表示这层神经元的个数,
文章图片
。
文章图片
为输入,即
文章图片
,
文章图片
表示第 i 个输入。
文章图片
为期望输出,即
文章图片
,
文章图片
表示第 i 个期望输出。
文章图片
表示第
文章图片
层的加权输出或神经元状态,
文章图片
表示第
文章图片
层的第
文章图片
个神经元的加权输出。
文章图片
表示第
文章图片
层的激活输出(实际输出),
文章图片
表示第
文章图片
层的第
文章图片
个神经元的激活输出(实际输出)。
文章图片
是权重矩阵
文章图片
中的元素,表示前一层
文章图片
层第
文章图片
个神经元的第
文章图片
个加权- 表示从上一层到当前层
文章图片
层的偏置。
文章图片
表示当前层第
文章图片
层第
文章图片
个神经元的偏置。
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215214D-33.gif)
文章图片
第2层第1个激活值
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215241G-34.gif)
文章图片
??
可总结出,第
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152M33-5.gif)
文章图片
层神经元的状态及激活值为(z,a,b都是向量形式):
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221526346-36.gif)
文章图片
对于 L 层网络,正向传播的前馈型神经网络传递过程如下:
文章图片
前向传播算法用于计算模型最终的输出结果;后向传播算法用于减小模型输出结果与实际结果之前的误差,通过调整参数权重来优化模型。因此,神经网络,就是通过前向传播与后向传播算法的循环迭代来训练模型,进而进行预测或者分类。
四. 反向传播算法 1. 采用批量梯度下降法获得参数
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523412-38.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524T2-39.gif)
文章图片
的更新公式 训练方式为梯度下降法,目的是求使代价函数最小的参数值。具体方法为,一步步地循环重复将参数值更新为:上一次参数 - 代价函数对上一次参数值的导数。每一步更新都用到所有的训练样本叫做批量梯度下降。
- 用右上标 (k) 表示第 k 个训练的训练集,不表示网络层数,那么
文章图片
个训练集表示为
文章图片
,每个
文章图片
和
文章图片
都是向量表示。其中
文章图片
。 - 对于第 k 个训练样本集的输入,在第
文章图片
层,用下标 i 表示第 i 个输出
文章图片
或期望输出
文章图片
,其中
文章图片
。
文章图片
维实际输出
文章图片
,
文章图片
维期望的输出
文章图片
。
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152AM-53.gif)
文章图片
,训练的误差定义为,这一次的每个期望输出
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221521641-47.gif)
文章图片
减去实际输出
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221526056-55.gif)
文章图片
,再将这
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523006-56.gif)
文章图片
个项求平方和。也就是说,单个训练样本的代价函数为:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152I32-57.gif)
文章图片
N个样本训练完成之后,得到所有训练样本的总体(平均)代价为:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524Y5-58.gif)
文章图片
上标表示又回到第四节之前,
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152D27-59.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215241Q-60.gif)
文章图片
右上标
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215242S-61.gif)
文章图片
表示表示网络层数,
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524F6-62.gif)
文章图片
仍表示为第 k 个训练集。采用批量梯度下降算法,
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152M33-5.gif)
文章图片
层的参数
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152D27-59.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215241Q-60.gif)
文章图片
的更新公式为如下形式:
文章图片
只需通过BP算法求出每个训练集的代价函数
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524F6-62.gif)
文章图片
对
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152D27-59.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215241Q-60.gif)
文章图片
的偏导数即可得到
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152D27-59.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215241Q-60.gif)
文章图片
的迭代更新公式。
2. 通过链式法则和残差
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215254Y-72.gif)
文章图片
的定义求解代价函数的偏导
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524643-73.jpg)
文章图片
右上标
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215242S-61.gif)
文章图片
表示表示网络层数,并且去掉第四-1节第k个训练数据集误差
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524F6-62.gif)
文章图片
的上标,直接记为
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152CZ-76.gif)
文章图片
,
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152CZ-76.gif)
文章图片
是单个训练数据集的误差。
将E展开到 Layer2,有:
文章图片
其中
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215244P-79.gif)
文章图片
(1)对于输出层(L层)的权重参数w的偏导
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221522460-80.gif)
文章图片
E 对
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215230O-81.gif)
文章图片
求导,由链式法则形式1
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152O01-82.gif)
文章图片
,有:
文章图片
E 对
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215230O-81.gif)
文章图片
求导,由链式法则形式2
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524A7-85.gif)
文章图片
,又有:
文章图片
,即
文章图片
其中,定义:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215224Z-88.gif)
文章图片
那么,由
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524443-89.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525228-90.gif)
文章图片
,得:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215254U-91.gif)
文章图片
推广到一般情况,设网络层数为 L,有:
文章图片
上两式对应矩阵(向量形式)为:
文章图片
其中矩阵哈德马乘积
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523450-94.gif)
文章图片
是对应位置元素分别相乘。
(2)对于隐藏层(
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152M60-95.gif)
文章图片
层)的权重参数w的偏导
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523J8-96.gif)
文章图片
由上一节,得:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524006-97.gif)
文章图片
向量形式为:
文章图片
而由:
文章图片
(
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152MP-100.gif)
文章图片
层的神经元每个
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221521X5-101.gif)
文章图片
都与
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525C0-102.gif)
文章图片
有联接,
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525C0-102.gif)
文章图片
出现了
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523G1-104.gif)
文章图片
次,每一次对应一个
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523516-105.gif)
文章图片
)
故:
文章图片
又因为其中
文章图片
从而
文章图片
,带入
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221522M7-109.gif)
文章图片
,得:
文章图片
向量形式:
文章图片
即利用
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152MP-100.gif)
文章图片
层的
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525103-113.gif)
文章图片
来计算
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/12215230L-114.gif)
文章图片
层的
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221522451-115.gif)
文章图片
,称为误差反向传播。
(3)对输出层和隐藏层的偏置参数b的偏导
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152D30-116.gif)
文章图片
和
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221522200-117.gif)
文章图片
文章图片
向量形式:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221523T8-119.gif)
文章图片
(4)公式总结
文章图片
(其中
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/122152G45-121.gif)
文章图片
)
向量形式:
文章图片
3.对N个训练样本集用BP算法更新参数的步骤 初始化参数
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525404-123.gif)
文章图片
、
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221521358-124.gif)
文章图片
后
Step1. 根据样本集的某个输入样本
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221525N6-125.gif)
文章图片
,利用前向传播算法算出每个神经元的输出z和a,直到输出层
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524209-126.gif)
文章图片
Step2. 由BP算法4个公式求E对参数的偏导数
- 计算出输出层的
文章图片
(由[BP-1]),再依次计算隐藏层的
文章图片
(由[BP-2]) - 然后:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221521123-129.gif)
文章图片
Step3. 更新网络权重和偏置
文章图片
Step4. 判断结束
对于一定的判断结束的准则,比如每个样本的最终输出误差小于可接受的范围或迭代次数达到一定阈值。若不满足,迭代执行Step2、Step3继续对当前样本进行训练,直到当前样本满足条件训练结束。否则,当前样本训练完毕,选取下一样本,转到Step1继续进行训练。
如下图所示:
![深度学习|反向传播算法(BP神经网络)](http://img.readke.com/220423/1221524143-131.jpg)
文章图片
参考:https://blog.csdn.net/qq_32865355/article/details/80260212
推荐阅读
- AI|神经网络的反向传播算法推导
- 深度学习|神经网络之BP(反向传播算法)的原理介绍
- 神经网络|神经网络之BP算法(误差反向传播)
- 机器学习|机器学习(神经网络的代价函数及反向传播算法)
- python机器学习|从零到一实现神经网络(五):数学微分法更新权重参数
- 自动驾驶|AirSim学习笔记1(《端到端自动驾驶》AutonomousDrivingCookbook)
- 人工智能|我的天,强化学习还能用在自动驾驶领域()
- 自动驾驶|强化学习基础篇 OpenAI Gym 环境搭建demo
- 前沿技术|深度学习框架中的自动微分及高阶导数