我遇到了一个有趣的关于神经网络基础的书,以及他说第一章中的梯度下降公式:
梯度下降:对于每一层,根据规则
w^l \rightarrow w^l-\frac{\eta}{m} \sum_x \delta^{x,l} (a^{x,l-1})^T更新权重
其中,w^l是l层中的权重矩阵,x是特定训练示例的指标。
我不想重写这一章中的所有公式,但重要的第一部分是关于网络中任何权重的成本变化率的BP4方程:
\frac{\partial C}{\partial w^l_{jk}} = a^{l-1}_k \delta^l_j
我是不是遗漏了什么,或者第一个公式是不正确的?难道我们不应该用Hadamard产品来代替,像这样吗?
w^l \rightarrow w^l-\frac{\eta}{m} \sum_x \delta^{x,l} \odot a^{x,l-1}
谢谢你帮忙。
发布于 2019-08-20 16:22:20
您可以通过在这两种情况下显式地写下所得到的内容来查看结果。在更新规则中求和后,您想得到的是:
\sum_x \delta^{x,l} (a^{x,l-1})^T = \delta^{1,l} a^{1,l-1}+\delta^{2,l} a^{2,l-1}+...
它是通过文本中给出的形式得到的。
请记住,Hadamard积只能对相同维数的向量进行,并导致相同维数的另一个向量。我想你可以把\delta当作一个m维向量(m是训练例子的数目),用向量分量取它的Hadamard乘积,但是你最终会得到另一个m维向量。在这一点上,对x的总结变得毫无意义。您可以说“执行Hadamard积,然后对行进行求和”,这将给出上述结果。
编辑:
我将试图进一步澄清所给对象的尺寸。假设L层有j个神经元,1874-1层有k个神经元.这使得w^l成为一个(j x k)维矩阵。更新方程必须保留维数,因此右手边也必须是相同大小的矩阵。
现在,a^{(l-1)}是一个含有k组分的向量,对应于l-1层神经元的激活。同样,L层的误差有j个分量,每个神经元一个。
为了得到一个(j x k)矩阵,我们取这两个向量的外积,这就是方程中存在转置的原因。最后,我们对所有的训练样本进行求和,以完成计算。
https://datascience.stackexchange.com/questions/57726
复制相似问题