使用BP算法计算sparse coding目标函数的梯度

参考网页:

http://deeplearning.stanford.edu/wiki/index.php/Deriving_gradients_using_the_backpropagation_idea

BP算法求解梯度,即将重构误差根据权重依次从输出层向前传输到隐含层,具体过程如下:

接下来介绍如何使用BP算法对Sparse coding目标函数计算梯度,目标函数为

对s求导,只与第一、二部分有关

1、先看第一部分:,先忽略前面的系数

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

注意:1、区分输入与权重,激活函数的输入与权重无关,隐含层delta要对后一层的delta进行加权求和 然后再乘以本层的梯度,在这里使用权重

  2、注意计算Delta时,后面的点乘,不要写成乘

从输出层到输入层依次代入,得到第一项的梯度为

2、第二项对s求导

     

  

依次代入,得到

故sparse coding 对s的梯度为:

 

最后一项为点乘  

 

使用以上的图示方法计算梯度,简单明白,不容易出错,必须得好好掌握

 


 

从tornadomeet的博客 Spase Cdoing中关于矩阵的范数求导 中了解到,Frobenius范式与诱导2范式的区别。

诱导2范式:

Frobenius:

 因此sparse coding中第一项其实是frobenius范式

 

posted @ 2014-12-08 16:40  dupuleng  阅读(479)  评论(0)    收藏  举报