反向传播算法(BP算法)

本文详细介绍了反向传播(BP)算法在神经网络中的应用,阐述了BP算法的基本方程及其推导过程,并详细描述了算法的执行流程,包括前向传播和反向误差传播,为神经网络的训练提供了关键的梯度计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

BP 算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用 BP 算法进行训练。BP 算法允许来自代价函数的信息通过网络向后流动,以便计算梯度。

反向传播的四个基本方程及推导

定义

这里写图片描述

在接下来的公式中:
wljk 表示从 (l1)th 层的 kth 个神经元到 lth 层的 jth 个神经元的链接上的权重。
alj 表示 lth 层第 jth 个神经元的激活值。
blj 表示在 lth 层第 jth 个神经元的偏置。
C 表示代价函数。
L 表示输出层。
有了上面的表示,我们可以将两个相邻层之间的激活值通过方程关联起来:

zlj=kwljkal1k+bljalj=σ(zlj)

其中 σ() 为激励函数。
上面两个公式的向量化形式:
zl=wlal1+blal=σ(zl)

关于代价函数的两个假设:
1. 代价函数可以被写成一个在每个训练样本 x 上的代价函数 Cx 的均值 C=1nxCx
2. 代价可以写成神经网络输出的函数 cost C=C(aL)

最后,定义 l 层的第 jth 个神经元上的误差 δlj 为:

δljCzlj

反向传播其实是对权重和偏置变化影响代价函数过程的理解。最终极的含义其实就是计算偏导数 Cwljk Cblj 。为了计算这些值,我们首先引入了一个中间量 lj ,这个我们称为在 lth 层第 jth 个神经元上的误差。
反向传播将给出计算误差 δ 的流程,然后将其关联到计算 Cwljk Cblj 上。

四个方程式

我们先直接给出四个基本方程,然后给出推导的过程。

δL=aCσ(zl)(BP1)δl=((wl+1)Tδl+1)σ(zl)(BP2)Cblj=δlj(BP3)Cwljk=al1kδlj(BP4)

其中, 运算符表示矩阵对应元素相乘。

四个基本方程的推导

BP1:
已知定义 δLj=CzLj ,应用链式法则,得:

δLj=CaLjaLjzLj

aLj=σ(zLj) 得:
δLj=CaLjσ(zLj)

这就是 (BP1) 的分量形式。
BP2:
δ=Czlj=kCzl+1kzl+1kzlj=kzl+1kzljδl+1k

因为 (注意 wl+1kj 表示的意义, k,j 都是表示一层网路的第几个神经元,重要的是符号的位置):
zl+1k=jwl+1kjalj+bl+1k=jwl+1kjσ(zlj)+bl+1k

做微分,得:
zl+1kzlj=wl+1kjσ(zlj)

把他带入上式,得:
δlj=kwl+1kjδl+1kσ(zlj)

这就是(BP2)的分量形式。
BP3:
δlj=Czlj=Cbljbljzlj

zlj=kwljkal1k+blj 得:
bljzlj=1

因此:
Cblj=δlj

BP4:
Cwljk=Czljzljwljk

zlj=kwljkal1k+blj 得:
zljwljk=al1k

因此:
Cwljk=al1kδlj

反向传播算法流程

  1. 输入 x 为输入层设置对应的激活值 a1
    • 前向传播:对每个 l=2,3,,L 计算相应的 zl=wlal1+bl al=σ(zl)
    • 输出层误差 δL 计算向量 δL=aCσ(zL)
    • 反向误差传播:对每个 l=L1,L2,,2, 计算 δl=((wl+1)Tδl+1)σ(zl)
    • 输出:代价函数的梯度由 Cwljk=al1kδlj Cblj=δlj 得出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值