使用BP算法计算sparse coding目标函数的梯度
参考网页:
http://deeplearning.stanford.edu/wiki/index.php/Deriving_gradients_using_the_backpropagation_idea
BP算法求解梯度,即将重构误差根据权重依次从输出层向前传输到隐含层,具体过程如下:

接下来介绍如何使用BP算法对Sparse coding目标函数计算梯度,目标函数为
对s求导,只与第一、二部分有关


从输出层到输入层分别计算梯度

注意:1、区分输入与权重,激活函数的输入与权重无关,隐含层delta要对后一层的delta进行加权求和 然后再乘以本层的梯度,在这里使用权重
2、注意计算Delta时,后面的点乘,不要写成乘
从输出层到输入层依次代入,得到第一项的梯度为
2、第二项对s求导



依次代入,得到

故sparse coding 对s的梯度为:
最后一项为点乘
使用以上的图示方法计算梯度,简单明白,不容易出错,必须得好好掌握
从tornadomeet的博客 Spase Cdoing中关于矩阵的范数求导 中了解到,Frobenius范式与诱导2范式的区别。
诱导2范式:
Frobenius:
因此sparse coding中第一项其实是frobenius范式

浙公网安备 33010602011771号