反向传播算法中,逐级向前计算delta公式的由来
学习吴恩达机器学习第九章反向传播编程练习,有这样一个公式:
它的证明在博客反向传播算法(过程及公式推导)中可以找到 https://www.cnblogs.com/wlzy/p/7751297.html
原博客证明内容过多,这里节选关键部分:
首先,将第层第个神经元中产生的错误(即实际值与预测值之间的误差)定义为:
(由后往前,计算每一层神经网络产生的误差):
推导过程:
公式中通过求和号 把偏导数的分量相加,是以求多元复合函数偏导链式法则为依据的。
求多元复合函数偏导链式法则的理解可参考博客: 多变量微积分笔记4——全微分与链式法则
https://www.cnblogs.com/bigmonkey/p/8350943.html
在极坐标中,x = x(u, v), y = (u, v),退化成直角坐标后f = f(x, y),如何求f的全微分?这与之前不同,将x,y代入f后仍有两个变量,这需要连续使用链式法则:
x和y的微小改变导致了f的改变,而u和v的微小改变有导致了x和y的改变,这样传递的结果就变成了u和v的微小改变有导致了f的改变。
需要注意的是最终结果中的偏导:
其中、、、、、不是函数,是偏导的数值。把它们理解成系数,就能理解其中系数的交换和重新结合,最终凑成全微分公式的形式,从中得到偏导数链式法则。
其实偏导数链式法则,就是全微分链式法则的延续,df可以分解为dx+dy,dx可以再分解为du+dv,dy可以再分解为du+dv,......,如果u或者v还是其他变量的函数,那么du或者dv还可以再分解。(我为了方便书写和理解没有带系数,比如dx+dy其实是dx与dy分别乘以系数的代数和,8dx+7dy,8和7分别是系数,如果我用另一个字母表示系数,那么看着更混乱)
以下链接可以帮助理解偏导数的求解过程,它利用的原理还是偏导数链式法则。
另外,关于 = ,是这样得来的:
因为,
通过导数运算得到:
但是少了一项,也就是sigmoid的导数,不应该忽略这一项。也许是因为这里的C是方差,而实际的C(J)是:
https://zhuanlan.zhihu.com/p/25081671
详解反向传播算法(上)
机器学习:一步步教你理解反向传播方法
https://yongyuan.name/blog/back-propagtion.html
反向传播算法(过程及公式推导)
https://blog.csdn.net/u014313009/article/details/51039334
CSDN-Ada助手: Java 技能树或许可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java
普通网友: 支持一下!我也写了一篇获取【大厂面试真题解析、核心开发学习笔记、最新全套讲解视频、实战项目源码讲义、学习路线简历模板】的文章
D_didadida: 不知道python怎么添加这个起始于路径
CleloGauss: 没有在pom里build,我就说为什么一直找不到xml,感谢
im_felicia: 看一下你的数透的筛选框,里面没内容导致