SSVM(Structured Support Vector Machine)学习笔记
本篇笔记主要是记录台湾大学李宏毅老师在 Structure Learning 课程中讲解的内容
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
什么是 Structure?
输入和输出中存在结构化数据的模型。(X:sentence,Y:tree structure)(X:Image,Y:bounding box)
1.Evaluate
定义一个 F ( x , y ) F(x,y) F(x,y),一般是线性的,即 F ( s , y ) = w ∗ ϕ ( x , y ) F(s,y)=w*\phi(x,y) F(s,y)=w∗ϕ(x,y),相当于打分函数。
ϕ ( x , y ) \phi(x,y) ϕ(x,y) 一般是人工定义的,结果是一个向量,其中每一个维度代表一种特征(比如长短、相同字符的数目等),在 SSVM 训练时该函数不变,这一步往往比较难定义,所以后来有些人会使用神经网络自动训练出 ϕ ( x , y ) \phi(x,y) ϕ(x,y) 。
w w w 向量会在训练时改变。
2.Inference
Object Function(Structure 的推断就是穷举法,找出当前最契合的 ( x , y ) (x,y) (x,y) 对)
y ~ = a r g m a x y ∈ Y w ∗ ϕ ( x , y ) \tilde{y}=argmax_{y\in\mathbb{Y}}w*\phi(x,y) y~=argmaxy∈Yw∗ϕ(x,y)
3.Training
对于所有的训练数据 ( x 1 , y ^ 1 ) , ( x 2 , y ^ 2 ) , . . . , ( x n , y ^ n ) , . . . , ( x N , y ^ N ) {(x^1,\widehat{y}^1),(x^2,\widehat{y}^2),...,(x^n,\widehat{y}^n),...,(x^N,\widehat{y}^N)} (x1,y
1),(x2,y
2),...,(xn,y
n),...,(xN,y
N),我们需要找到一个 F ( x , y ) F(x,y) F(x,y) 使得
∀ y ≠ y ^ n , F ( x n , y ^ n ) > F ( x n , y ) \forall y\ne\widehat y^n\ \ \ , \ \ F(x^n,\widehat{y}^n)> F(x^n,y) ∀y=y
n , F(xn,y
n)>F(xn,y)
线性可分(separable)
如果样本是线性可分的,那么可以采用结构化感知机(Structured Perceptron)算法:
-
输入:训练集合 { ( x 1 , y ^ 1 ) , ( x 2 , y ^ 2 ) , . . . , ( x n , y ^ n ) , . . . , ( x N , y ^ N ) } \{(x^1,\widehat{y}^1),(x^2,\widehat{y}^2),...,(x^n,\widehat{y}^n),...,(x^N,\widehat{y}^N)\} { (x1,y 1),(x2,y 2),...,(xn,y n),...,(xN,y N)}
-
输出:符合要求的向量 w w w
-
算法:
-
do:
对于每一个训练集中的样本 ( x n , y ^ n ) (x^n,\widehat{y}^n) (xn,y n)
找到 label y ~ \tilde{y}
-