以前就听说过Structured Learning,但只知道其大体的概念。听师兄说现在用的挺多的,于是前一段时间断断续续的看了有关这方面的一些资料,在此总结一下。
在利用机器学习方法建模时,我们往往是寻找一个映射函数 f:X -> Y,将输入X 映射为输出Y。输入X的形式是多种多样的,但在“常规”的机器学习方法中,输出Y是一个number或者一个label,比如分类、回归、分布密度估计的各种方法。而Structured Learning中,Y不再局限在一个number,而可以是complex structured object,比如说是一副image,一个image region,一个label sequence,或是parse tree 等等。个人感觉,structured learning使我们能更加直接的解决问题,它提供了一种框架是我们能直接得到具体问题中想要的输出。理论上,感觉你可以把任何输出都作为一种结构。
在Structrued Learning中,主要涉及两个任务:Inference Task和Learning Task。Learning Task 就是根据训练集合 (x1,y1),(x2,y2),...,(xn,yn) ,学习一个模型,这其中,模型往往是一个参数化模型,因此Learing的过程就是确定参数的过程。Inference Task就是在训练好模型后,根据给定的输入X,预测一个最佳的输出Y。Structured Learning 具有多种方法,其中很重要的一类方法是基于概率图模型的方法,尤其是无向图模型,将structured learning的问题转换为图模型中的基本问题。还有一类方法就是Large Margin Method for Structured Learning,也就是structured svm,是传统svm方法的一种扩展,现在structured svm 已经有了比较成熟的算法实现框架。下面谈一下对structured svm 的一些理解。
在structured svm中,我们的目标寻找一个discriminant function F:X×Y→R 。在discriminant function确定后,给定一个输入值x,选择能最大化F的值Y作为输出,即hypotheses f为如下形式:
为了量化预测的准确性,我们还需要定义一个损失函数(loss function) Δ:Y×Y→R 。损失函数满足:当 时, ;当 时, 。给定一组训练集S,f(x;w)的性能可以通过经验损失函数来度量
首先,考虑存在函数f,使得经验损失为零的情况。这种情况出现时,说明满足以下非线性限制
假设这些限制是可解的,那么一般情况下,可行解 w∗ 不唯一(可能解得多个解,并且w也可以放缩)。为了得到唯一的解,我们选择能使separation margin(最小的 ⟨w,δψi(y)⟩ )最大的w,并且限制w的长度。即可以表示为如下优化问题:
至此,我们就可以求解这个优化问题,解得 w∗ ,找到最后的 f(x;w∗) 了。但是,现在还存在着两个问题:第一,满足约束的可行解可能不存在,就是说无法找到完全满足训练集中的样例,使经验损失为零的模型。第二,这上述优化问题中,约束条件的个数太多了(n|Y|-n个)!即使可行解存在,我们也需要找到一种代价合理的方法来求解。关于这两个,还是规整下记录到下一篇里吧。