SSVM(Structured Support Vector Machine) 学习笔记

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~=argmaxyYwϕ(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} y~ 可以使得 w ∗ ϕ ( x n , y ) w*\phi(x^n,y) wϕ(xn,y) 最大化,即
      y ~ = a r g m a x y ∈ Y w ∗ ϕ ( x n , y ) \tilde{y}=argmax_{y\in\mathbb{Y}}w*\phi(x^n,y) y~=argmaxyYwϕ(xn,y
      ​ 如果 y ~ n ≠ y ^ n \tilde{y}^n\ne\widehat{y}^n y~n=y n,则更新 w w w
      w = w + ϕ ( x n , y ^ n ) − ϕ ( x n , y ~ n ) w=w+\phi(x^n,\widehat y^n)-\phi(x^n,\tilde y^n) w=w+ϕ(xn,y n)ϕ(xn,y~n
      w w w 不再更新时结束

可以用数学推理证明当样本线性可分时, w w w 可在有限步内被推断出来。

线性不可分(non-separable)

如果样本线性不可分,对于每一个样本 ( x n , y ^ n ) (x^n,\widehat{y}^n) (xn,y n) 可定义一个 Cost Function
C n = m a x [ F ( x n , y ) ] − F ( x n , y ^ n ) C^n=max[F(x^n,y)] - F(x^n,\widehat y^n) Cn=max[F(xn,y)]F(xn,y n)

C n = m a x [ w ∗ ϕ ( x n , y ) ] − w ∗ ϕ ( x n , y ^ n ) C^n=max[w*\phi(x^n,y)] - w*\phi(x^n,\widehat y^n) Cn=max[wϕ(xn,y)]wϕ(xn,y n)
则总的 Cost Function 为
C = ∑ n = 1 N C n C=\sum^N_{n=1}C^n C=n=1NCn
一般使用梯度下降法(Gradient Desent)来最小化 Cost Function

  • 输入:训练集合 { ( 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

  • 算法:

    • for t = 1 to T:#规定一个最大更新次数 T

      ​ 随机挑出一个训练样本 ( x n , y ^ n ) (x^n,\widehat{y}^n) (xn,y n)

      ​ 找到 label y ~ \tilde{y} y~ 可以使得 w ∗ ϕ ( x n , y ) w*\phi(x^n,y) wϕ(xn,y) 最大化,即
      y ~ = a r g m a x y ∈ Y w ∗ ϕ ( x n , y ) \tilde{y}=argmax_{y\in\mathbb{Y}}w*\phi(x^n,y) y~=argmaxyYwϕ(xn,y

      Δ C n = ϕ ( x n , y ~ n ) − ϕ ( x n , y ^ n ) \Delta C^n =\phi(x^n,\tilde y^n)-\phi(x^n,\widehat y^n) ΔCn=ϕ(xn,y~n)ϕ(xn,y n

      w = w − η Δ C n = w − η [ ϕ ( x n , y ~ n ) − ϕ ( x n , y ^ n ) ] w = w-\eta\Delta C^n=w-\eta[\phi(x^n,\tilde y^n)-\phi(x^n,\widehat y^n)] w=wηΔCn=wη[ϕ(xn,y~n)ϕ(xn,y n]

      ​ 可以发现当学习率 η = 1 \eta =1 η=1 时,梯度下降法和线性可分时的结构化感知机结果一样
      w = w + ϕ ( x n , y ^ n ) − ϕ ( x n , y ~ n ) w=w+\phi(x^n,\widehat y^n)-\phi(x^n,\tilde y^n) w=w+ϕ(xn,y n)ϕ(xn,y~n

正则化就是在 Cost function 后面加 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2,可以在算法中对应加入即可。

Consider More

在以上过程中,我们并没有考虑一点,那就是我们希望离正确答案 y ^ \widehat y y 更接近的 y y y 可以在 w ∗ ϕ ( x , y ) w*\phi(x,y) wϕ(x,y) 中得到更高的分数,我们应该在训练的时候考虑这一点,找到一个更合理的 w w w

为解决该问题,可以定义一个 Δ ( y ^ , y ) \Delta(\widehat y,y) Δ(y ,y)

然后修改 Cost Function 为:
C n = m a x [ Δ ( y ^ n , y ) + w ∗ ϕ ( x n , y ) ] − w ∗ ϕ ( x n , y ^ n ) C^n=max[\Delta(\widehat y^n,y)+w*\phi(x^n,y)] - w*\phi(x^n,\widehat y^n) Cn=max[Δ(y n,y)+wϕ(xn,y)]wϕ(xn,y n)
找到不仅分数高,距离也大的 y y y ,以它为标准做 Cost。

思想就是希望分数越高的 y y y 距离 y ^ \widehat y y 越近。

y ~ ≠ y ^ n \tilde y\ne\widehat y^n y~=y n 时,我们需要
C n > 0 C^n>0 Cn>0
即使得 y ~ \tilde y y~
Δ ( y ^ n , y ~ ) + w ∗ ϕ ( x n , y ~ ) − w ∗ ϕ ( x n , y ^ n ) > 0 \Delta(\widehat y^n,\tilde y)+w*\phi(x^n,\tilde y) - w*\phi(x^n,\widehat y^n)>0 Δ(y n,y~)+wϕ(xn,y~)wϕ(xn,y n)>0

Δ ( y ^ n , y ~ ) > w ∗ ϕ ( x n , y ^ n ) − w ∗ ϕ ( x n , y ~ ) \Delta(\widehat y^n,\tilde y)> w*\phi(x^n,\widehat y^n)-w*\phi(x^n,\tilde y) Δ(y n,y~)>wϕ(xn,y n)wϕ(xn,y~)

即让 y y y 得分越低的距离 y ^ \widehat y y 越远。

4.Structure SVM

我们现在有(1)(2)公式,需要找到一个 w w w 使得 C C C 最小
C = ∑ n = 1 N C n + 1 2 ∣ ∣ w ∣ ∣ 2 (1) C=\sum^N_{n=1}C^n\tag{1}+\frac{1}{2}||w||^2 C=n=1NCn+21w2(1)

C n = m a x [ Δ ( y ^ n , y ) + w ∗ ϕ ( x n , y ) ] − w ∗ ϕ ( x n , y ^ n ) (2) C^n=max[\Delta(\widehat y^n,y)+w*\phi(x^n,y)] - w*\phi(x^n,\widehat y^n)\tag 2 Cn=max[Δ(y n,y)+wϕ(xn,y)]wϕ(xn,y n)(2)

如果转化(2)式为
C n + w ∗ ϕ ( x n , y ^ n ) = m a x [ Δ ( y ^ n , y ) + w ∗ ϕ ( x n , y ) ] C^n+w*\phi(x^n,\widehat y^n)=max[\Delta(\widehat y^n,y)+w*\phi(x^n,y)] Cn+wϕ(xn,y n)=max[Δ(y n,y)+wϕ(xn,y)]
推导成
∀ y : C n + w ∗ ϕ ( x n , y ^ n ) ≥ Δ ( y ^ n , y ) + w ∗ ϕ ( x n , y ) \forall y:C^n+w*\phi(x^n,\widehat y^n)\ge \Delta(\widehat y^n,y)+w*\phi(x^n,y) y:Cn+wϕ(xn,y n)Δ(y n,y)+wϕ(xn,y)
我们如果想要最小化损失函数 C C C,其实是在以下这个规划问题中,找到一组 w , ϵ 1 , ϵ 2 , . . . , ϵ N w,\epsilon^1,\epsilon^2,...,\epsilon^N w,ϵ1,ϵ2,...,ϵN 使得 C = ∑ n = 1 N ϵ n + 1 2 ∣ ∣ w ∣ ∣ 2 C=\sum^N_{n=1}\epsilon^n+\frac{1}{2}||w||^2 C=n=1Nϵn+21w2 最小
∀ n , ∀ y : w ∗ ϕ ( x n , y ^ n ) − w ∗ ϕ ( x n , y ) ≥ Δ ( y ^ n , y ) − ϵ n \forall n,\forall y:w*\phi(x^n,\widehat y^n)-w*\phi(x^n,y)\ge \Delta(\widehat y^n,y)-\epsilon^n n,y:wϕ(xn,y n)wϕ(xn,y)Δ(y n,y)ϵn
y = y ^ y=\widehat y y=y 带入可得
ϵ n ≥ 0 \epsilon^n\ge0 ϵn0
即如图所示的,规划问题求解( w 、 ϵ w、\epsilon wϵ 都只有一维时):
SSVM(Structured Support Vector Machine) 学习笔记_第1张图片

5.Beyond Structured SVM

使用 DNN (深度神经网络)得到 ϕ ( x , y ) \phi(x,y) ϕ(x,y)
SSVM(Structured Support Vector Machine) 学习笔记_第2张图片
如果使用的是规划问题求解(ILP)法来训练 SSVM 可能无法一起学习,但如果使用的是梯度下降法,则可以将DNN 和 SSVM 一起训练。

甚至可以这样
SSVM(Structured Support Vector Machine) 学习笔记_第3张图片

你可能感兴趣的:(SVM,SSVM,机器学习,人工智能,算法)