笔记(2):BP算法

基础

神经网络的表示

基于梯度的优化方法中, 我们提到一个具有 nl+1 层的神经网络可以一般表示为 y=f(W,b,X)=fnl(Wnl,bnl,fnl1(Wnl1,bnl1,...f1(W1,b1,X)...)) ,神经网络的训练就是调整 W,b 使得 L(y,f(W,X,b)) 最小。
需要注意的是,当神经网络从第0层,即输入层为第0层与输入层为第1层开始的表述可能由稍许不同。本博文以输入层为第1层,输入层与下一层之间的权值与偏置值记为 W1,b1

链式法则

链式法则(chain rule)是求复合函数导数的一个法则。假设 f,g 为两个关于x的可导函数,则复合函数 y=f(g(x)) 的导数为 dydx=dfdgdgdx=f(g(x))g(x)

求解 L(y,f(W,X,b)) 的最优值

首先损失函数 L 是关于 W,b 的函数,由基于梯度的优化方法,我们可以知道可以根据梯度来0更新搜索最优值。而 L 是一个复合函数,因此我们可以采用链式法则来迭代调整每一层网络的权值与偏置值。假如我们采用梯度下降的方法来调整 nl 层,则有:

LWnl=LfnlfnlWnl

Wnli+1=WnliϵLWnl

如此我们可以迭代更新每次的 Wi,bi

神经网络的前馈算法

我们知道在神经网络中上一层的输出时下一层的输入,假设第 j 层输出为 aj , 则第 j+1 层的输出为 aj+1=fj(Wjaj+bj) ,其中 fj 为激活函数,当我们令 zj+1=Wjaj+bj 时,我们就可以得到如下算法:
1. 令 j=1 aj=a1=X
2. 计算 zj+1=Wjaj+bj
3. 计算 aj+1=fj(zj+1)
4. 重复步骤2-3,直到输出层 y=anl+1=fnl(znl+1)=fnl(Wnlanl+bnl)

BP算法

nl 层网络的更新

我们知道 nl+1 层的输出为 y=anl+1=fnl(znl+1),znl+1=Wnlanl+bnl ,则损失函数为 L(y,fnl(Wnlanl+bnl)) 。则
Wnl 更新

LWnl=LfnlfnlWnl=Lfnlanl

Wnli+1=WnliϵLWnl

bnl 更新
Lbnl=Lfnlfnlbnl=Lfnl

bnli+1=bnliϵLWnl

nl1 层网络的更新

此时 L=L(y,fnl(Wnlfnl1(Wnl1anl1+bnl1)+bnl)) ,则对 nl1 层更新为:
Wnl1 更新

LWnl1=Lfnlfnlfnl1fnl1Wnl1=LfnlWnlanl1

Wnli+1=WnliϵLWnl1

bnl1 更新
Lbnl1=Lfnlfnlfnl1fnl1bnl1=LfnlWnl

bnli+1=bnliϵLbnl1

综合

明显第 j(jnl) 层来说,更新与第 n1 层类似。观察上述等式,我们知道每层对权值的导数十分相似,都是一个项乘以上一层的输出,即当前层的输入,我们将该项称为“error term” δj
则第 nl 层:

δnl=Lfnl

Wnli+1=Wnliϵδnlanl

bnli+1=bnliϵδnl

j(jnl) 层:
δj=δj+1Wj+1

Wji+1=Wjiϵδjaj

bji+1=bjiϵδj

伪代码

  1. 计算第 nl 层的 error term: δnl=Lfnl
  2. 计算第 j(j=nl1,nl2,,1) 层 error term: δj=δj+1Wj+1
  3. 更新第 j+1 层的权值与偏置值:
    Wj+1i+1=Wj+1iϵδj+1aj+1

    bj+1i+1=bj+1iϵδj+1
  4. 重复步骤2-3,知道 $j=1,同理更新第1层权值与偏置值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值