Toriyung

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

神经网络的反向传播公式表达(吴恩达)

 

首先要明确的是反向传播的目的

神经网络训练的最终目的,是得到可观的模型参数(如ω,b等)训练参数的方式,就是通过反向传播,使用梯度下降法(一般情况下)改变模型参数。

其原理则是通过最优化损失函数(loss function),即使其导数向0靠近,公式表达为dL/dω,而损失函数L是一个复合函数,则其求导过程如图所示

 

 

 

 由链式法则知,dL/dω = dL/da * da/dz * dz/dω  (一切的源头

需要注意的是,上述链式法则实际上部分应该为偏导,但此次为方便理解全部使用导数,其中da/dz为激活函数(即非线性函数)求导,需注意

吴恩达后续的视频中用

dz表达dL/dz

da表达dL/da

dw表达dL/dω

这是为了方便在python中定义变量dzdadw等,需要注意

则由上式可以得出

dz/dω = X

dz/db = 1

所以最终可以得到

dw = dL/dω = dL/dz * dz/dω = dz*X (或者dz*A)

db = dL/db = dL/dz * dz/db = dz

da[L-1] = ω * dz  (吴恩达视频并没有给出推导过程)

其中dz = dL/da * da/dz   

  对于dL/da:如果在最后一层,dL/da则由前向传播最终值yhat和损失函数得到,如果在中间层,则可以后一层a计算得到。

       对于da/dz:即激活函数的求导   

由以上四个公式,则可计算反向传播如图

 

posted on   Toriyung  阅读(354)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示