具体证明过程:https://blog.csdn.net/nyist_yangguang/article/details/111292836
下面pdf截图为华科朋友手证:
下面证明有问题,我还在学习相关数学证明,资料有https://www.zybuluo.com/hanbingtao/note/476663,等以后学会了再更新。
先上图,我们首先要知道,反向传播是为了改变w b 等参数,进而减小Loss和Cost,改变的原理是利用梯度(Cost函数的斜率),也称降低梯度下降法。
我们在求某些矩阵的导数的时候,目的是为了利用已有的条件,在程序中实现。所以公式很多是凑出来的,符合1:等式成立;2:成员已知,该公式就是一个可用公式。在这个基础上,
dz1=dL/dz1
=dL/da2 * da2/dz2 * dz2/da1 * da1/dz1
=dL/dz2 * dz2/da1 * da1/dz1
我们可以看到
,故dz2/da1 = dz2/dx = w2 (求函数z2关于x的偏导)
故da1/dz1 = g1'(z1) (意思是将z1当做自变量,把导数以f'(x)的形式表现了出来)
所以
dz1=dL/dz1
=dL/da2 * da2/dz2 * dz2/da1 * da1/dz1
=dL/dz2 * dz2/da1 * da1/dz1
=dL/dz2 * w2 * g1‘(z1)
=dz2 * w2 * g1’(z1) ( 将dz2 代替dL/dz2 )
三者维度分别为 dz2 : (n2,样本数) w2 : (n2,n1) g1’(z1) :和z1一样,(n1,样本数)
很明显,三者无法进行矩阵乘法,按照实际操作需要(我也不知道为什么交换了,难道为了维度需要,可以交换?)
故原方程= w2.T * dz2 * g1'(z1)
结果是(n1,样本数) * (n1,样本数),是两个矩阵进行点乘,也就是相应位置元素的相乘。