Deep Learning的在线学习资料一直进展比较慢,开始的时候还可以,只有一层的训练,简单的BP算法求导然后使用L-gfbs就基本可以求出来解了。但是真正到了后面的深度网络的时候才算是真正的是Deep的Learning吧。
1:这节课是使用2层的sparse encoder然后给stacked起来,第二层的sparse encoder的输出直接带入到一个softmax层的输入,然后进行softmax的分类识别。单独的训练每一层的sparse encoder以及单独的softmax这些都是非常简单的,计算active层的值然后直接求partial derivative接着带入工具包直接迭代求解就是了。
2:这里要说的是每一层的weight都求出来了,如何统一进行fine tune(微调)。微调主要是撰写stackedAE的cost 以及求出来gradient,cost就不多说了指的是softmax层的cost。主要说下gradient。在本书中其实是不进行softmax层的weight的更新的,只需要更新其余两层的weight。对最有一层sparse encoder的权重的求偏导书上已经给出就是theta'(I-P)
theta就是softmax层的weight,I首先是一个向量,大小是label的数量,然后如果当前样本x属于第k个label那么I(label,1)=1, 其余都为0。P就是当前样本属于每个theta的概率。
然后倒数第二层的偏导就好求多了,直接根据课本上来就是了,具体的推导也很简单,推导最难的是对最后一层sparse encoder的求导。
3:总结下,主要是2个难点,第一个是cost指的是最后一层的cost,也就是softmax的cost;第二个是求偏导是直接从sparse encoder的最后一层开始,对于softmax的权重是不进行更新的。。
4:可以完全达到书本上的参考值,fine tune之前精度是87%点多,fine tune之后是97%点多