PRML-5.3.1 误差函数的反向传播,导数的计算

书上的图5.7介绍了神经网络的结构

但是图过于简单,对于推导公式很不利,很难理解,我对原图做了一些修改和扩展,方便大家理解

首先看下图上的一些标记说明

  • 1.i(I)j(J)k(K)ikj
  • 2.z1j,j
  • 3.z1j
  • 4.w,w12jiz2iz1j
  • 5.线,5.48,jka
  • 6.线ah5.49

开始推导

w线
w12kj
Enw12kj
5.50线sigmoidh

(5.50)Enwji=Enajajwji

Enw12kj=Ena1(k)a1(k)w12kj

(5.51)

(5.51)δjEnaj

δ1kEna1(k),δ

(5.52)ajwji=zi

a1(k)w12kj=n=1Jw1nkjz1(j)w12kj=z1(j)

继续书上的推导,把式(5.51)(5.52)代入式(5.50),可以得到
(5.53)Enwji=δjzi


Enw12kj=δ1kz2(j)

kδ(4.3.65.18),sigmoidsoftmax

(5.54)δk=yktk

kw


jw

,5.50

(5.50)Enwji=Enajajwji

w12ji,
Enw12ji=Ena1(j)a1(j)w12ji
5.52
a1(j)w12ji=z2(i)


Ena1(j)
使,5.55

(5.55)δjEnaj=kEnakakaj

jk
k5.9

(5.9)yk(x,w)=σ(j=0Mwkj(2)h(i=0Dwji(1)xi))

5.55
Ena1(j)=n=1KEnan(k)an(k)a1(j)

Ena1(j)k

=Ena1(k)a1(k)a1(j)+Ena2(k)a2(k)a1(j)+...+EnaK(k)aK(k)a1(j)

因为有5.51式,所有项的左半边记为δ1(k),因为5.48,右半边记为m=1Jwnmkjzm(j)a1(j)

=δ1(k)m=1Jw1mkjzm(j)a1(j)+δ2(k)m=1Jw2mkjzm(j)a1(j)+...+δK(k)m=1JwKmkjzm(j)a1(j)

整理合并

=n=1Kδn(k)m=1Jwnmkjzm(j)a1(j)

套用5.49式

=n=1Kδn(k)m=1Jwnmkjzm(j)a1(j)

zJj=h(aJ(j))

=n=1Kδn(k)m=1Jwnmkjh(am(j))a1(j)

m=1

=n=1Kδn(k)wn1kjh(a1(j))a1(j)

=n=1Kδn(k)wn1kjh(a1(j))

=h(a1(j))n=1Kδn(k)wn1kj

得到了公式 5.56

(5.56)δj=h(aj)kwkjδk

总结算法

于是,反向传播算法可以总结如下:

  • 对于网络的一个输入向量n,使用式(5.48)(5.49)进行正向传播,找到所有隐含单元和输出单元的激活。
  • 使用式(5.54)计算所有输出单元的δk
  • 使用式(5.56)反向传播δ,获得网络中所有隐含单元的δj
  • 使用式(5.53)计算导数。

posted @   筷点雪糕侠  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示