平方损失函数为例的BP的关键公式推导

看了刘建平老师的博客https://www.cnblogs.com/pinard/p/6422831.html对如下其中两个公式进行详细推导
损失函数为(大写字母为矩阵,小写字母字母加粗为列向量,其中WL的维度为MLML1,即第L层神经元个数乘以第L1层神经元个数):

J(W,b,x,y)=12aLy22=12σ(WLaL1+bL)y22

推导的两个公式如下:

J(W,b,x,y)WL=[(aLy)σ(zL)](aL1)T

J(W,b,x,y)bL=(aLy)σ(zL)

用到两个链式求导法则如下(都来源于刘建平老师博客,链接在文章末尾)
当标量对n个向量进行链式求导,即y1y2ynz1,链式求导法则如下:

(1)zy1=(ynyn1yn1yn2y2y1)Tzyn

z=f(y),y=Xa+bXyz 其中X为矩阵,y为向量,链式求导结果如下:

(2)zX=zyaT

先推导第一个公式,考虑如下复合结构(注意最后所求的J是标量)

WLzLuLJ

其中J=12uL22

uL=aLy=σ(zL)y

zL=WLaL1+bL

由公式(2)可得

JWL=JzL(aL1)T

又有公式(1)可得

JzL=(uLzL)TJuL

其中后半部分比较简单

JuL=uL=aLy

前半部分向量对向量求导,布局为雅克比矩阵形式,结果如下:

uLzL=(σ(zL)y)zL=(σ(z1L)z1L000σ(z2L)z2L000σ(zMLL)zMLL)=diag(σ(zL))

得到的矩阵为对称矩阵,带入到上式,结果为:

JzL=diag(σ(zL))(aLy)=σ(zL)(aLy)=(aLy)σ(zL)

JWL=[(aLy)σ(zL)](aL1)T

第二个式子推导就很简单,由公式(1)可得

JbL=(zLbL)TJzL

前半部分为单位矩阵E后半部分求第一个式子时已经求过,故

JbL=(aLy)σ(zL)

参考博客(矩阵向量求导的知识):
求导定义与布局
矩阵向量求导之定义法
矩阵向量求导之微分法法
矩阵向量求导链式法则

posted @   lcxxx  Views(259)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示