论文笔记 《Convolutional Neural Support Vector Machines:Hybrid Visual Pattern Classifiers for Multi-robot Systems》 and 《Deep Learning using Linear Support Vector Machines》

论文出处:
文章1:《Convolutional Neural Support Vector Machines: Hybrid Visual Pattern Classifiers
for Multi-robot Systems》
ICMLA2012(C类)
文章2:《Deep Learning using Linear Support Vector Machines》 ICML2013 Workshop

简述

  • 这两篇文章的模型是一致的(在第二篇的Introduction提到了:Our models are essentially same as the ones proposed in (Zhong & Ghosh, 2000; Nagi et al., 2012), with the minor novelty of using the loss from the L2-SVM instead of the standard hinge loss.)
  • 模型可以简单理解成,由于训练集较大,所以需要用到SGD来求解SVM(可以参考文章1中的引用[22] R. Wijnhoven and P. de With, “Fast training of object detection using stochastic gradient descent,” inProc. of the ICPR, Aug. 2010, pp. 424–427),同时,可以通过将SVM的梯度传到CNN中,达到联合训练的目的。(注,事实上,笔者对这两篇文章的模型的理解也不是太有把握,先按照目前的理解进行描述,第二篇作者给出了源码,如果往后有必要了,可能会进行阅读来加深理解)
  • 下面描述分成两大部分
    • 如何用SGD训练SVM
    • 如何将SVM的梯度传回到CNN中进行BP

如何用SGD训练SVM

这部分的描述,主要可以参考文章1的引文[22]。
为什么要用SGD,因为适用了大数据:

  • 训练收敛快,耗时短
  • 可以在线学习

具体过程:
L1-SVM的损失函数可以写成:

SGD需要导数,于是就是求个导:

另外,文章1做出了改进,加入了一个投影(下图红色部分):

作者做出的解释是:

如何将SVM的梯度传回到CNN中进行BP

这部分的描述,主要可以参考文章2。
由于文章2明确地说它的novelty就是将L1-SVM loss转换成L2-SVM loss,所以我只摘录了文章2如何将SVM梯度传回去CNN的部分。
顺带一提为什么要用L2-SVM loss

  • L1-SVM loss,即hinge loss,不是严格可导的(其实只是在单点上不可导,影响不大,作者也给出了它的(刨除了不可求导点的)求导公式)
  • 从实验效果看,效果比L1-SVM好一点。

鼠绘了一个渣图来帮助描述。。

如上图,现在需要将loss传回到$\omega_{cnn}$
$\omega_{cnn}$只影响到了$h_n$,而由于SVM中的$\omega_{svm}$已经通过SGD求解得到,可以看成常数,所以$h_n$只影响到loss,于是如果想把梯度传回到CNN,本质上是要知道loss对$\omega_{cnn}$的偏导,根据链式法则,有:

其中第二项参考常规CNN或者NN的BP公式就可以了。第一项作者给出L1-SVM和L2-SVM的公式:

很久没有更新网站,发现多了不少评论和问题,无法一一回复,如果现在仍有问题请再次留言 :) 2016.03.29