Structured Learning和Structured SVM的学习(下)

来源:互联网 发布:算法导论 第三版 pdf 编辑:程序博客网 时间:2024/06/06 03:37

http://bubblexc.com/y2011/547/

在上面的部分中,经验损失为0意味着我们得到了一个完全符合训练样本要求的discriminative function f,即(xi,yi),f(xi)=yi。然而,多数时候,我们无法得到满足前面式子中所有约束的可行解。因此,我们还是借鉴SVM 的思想,在优化问题中加入松弛变量,这样就使模型不必完全拟合训练集中的样本,从而得到下面的优化问题:

minw,ξ12||w||2+Cni=1nξ2s.t.i,yYyi:w,δψi(y)1ξi
可以将ξi理解为是对那些不能满足约束条件的y的惩罚。但是,在这里,对于两个不满足约束条件的y1,y2,我们对其进行了等量的惩罚,这显然是不合理的。正确的做法是,如果Δ(y1,yi)>Δ(y2,yi),那么我们应该给予y1更大的惩罚。因此我们在进行惩罚时还应该考虑损失函数的影响,于是可以进一步得到下面的优化问题(具体推导过程参见文章所列参考资料):

minw,ξ12||w||2+Cni=1nξ2s.t.i,yYyi:w,δψi(y)Δ(yi,y)ξi
  • 求解方法

经过上面的分析,我们最终将求解discriminative function f的问题转化为一个类似svm中优化问题,只要解决这个优化问题,就能得到所需的f。但是,直接利用svm中求解的方法确是不可行的,因为上述优化问题中的约束条件实在是太多了。假设有n个训练样本,y可能的状态数为|Y|,那么总的约束个数为n*(|Y|-1);如果y的取值是连续的,那么便有无数个约束条件了。。。因此,尽管形式上与传统svm的优化问题相同,但在求解方法上我们却需要另辟蹊径。

实际上,在上述优化问题中,只有w和ξ是变量,假设w的维度为d,那么只需要根据n+d个约束就可以求得最优解,其它约束会自动被满足。因此,在求解过程中,我们希望找到一个所有约束条件的子集,使得满足这个子集中约束的解,也是在一定误差下的最优解,具体方法就是利用cutting plane training算法:对于一个训练样本(xi,yi),我们为其维护一个约束条件的working set Si,初始Si为空,然后迭代求解。在每一轮迭代中,我们根据的working set中的约束求出w的值,然后对于(xi,yi),找出此时‘most violated constraint’,也就是求解下式:

y=argmaxyYH(y)H(y)=Δ(yi,y)δψi(y),w
H(y)超过一定的阈值,则将y对应的约束加入到Si中,并且开始下一轮迭代。当working set不再变化时,算法结束,此时的w就是一定误差下的最优解。
  • 使用Structured SVM

SVM Struct是一个Structured SVM的编程框架,遵循这个框架我们利用Structured SVM解决自己的问题。在这个框架中,我们只需要实现三个模块:

  1. feature mapping,即ψ(xi,yi)
  2. loss function,即Δ(yi,y)
  3. 寻找‘most violated constraint’,也就是求解y=argmaxyY(Δ(yi,y)δψi(y),w)

在这三个模块中,个人感觉最为困难的是选择feature mapping function ψ(xi,yi)。在实际问题中,我们常常无法确定从何种角度来描述(x,y)的特征效果最好。我们可以通过kernelized来解决这个问题,即选择核函数k,

Missing open brace for superscript
这样,我们不需要明确的定义ψ(xi,yi)了,只需要选择一个能比较样本间相似程度的kernel就可以了,这个相对简单。但同时,由于没有明确指明ψ(xi,yi),利用kernel在计算‘most violated constraint’时就会复杂一些。总之,有利有弊,还得根据自己的问题决定。
  • 相关资料
  1. Large Margin Methods for Structured and Interdependent Output Variables
  2. Structured Learning and Prediction in Computer Vision