李宏毅机器学习课程笔记8:Structured Learning - Linear Model、Structured SVM、Sequence Labeling

台湾大学李宏毅老师的机器学习课程是一份非常好的ML/DL入门资料,李宏毅老师将课程录像上传到了YouTube,地址:NTUEE ML 2016
这篇文章是学习本课程第22-24课所做的笔记和自己的理解。


Lecture 22: Structured Learning - Linear Model

Problem 1: Evaluation

上节课说到,Structured Learning的Unified Framework有三个问题:
这里写图片描述
如果 F(x,y) 长成特定形式的话,那么Problem 3就不是问题。

这里写图片描述
这个“特定形式”的 F(x,y) 一定要是线性的。
我们用一组特征 ϕi(x,y) 来描述 (x,y) 对,其中 ϕi(x,y) 是特征 i 的强度。
F(x,y) 可写作 ϕi(x,y) 的线性组合,权重系数可由训练数据学习得到。
这样, F(x,y) 就可写作两个向量之内积,此时Problem 3就不再是问题。

这里写图片描述
具体来讲,对Object Detection这个任务,x是image,y是bounding box,vector ϕ(x,y) 可按图中定义,这些特征都比较弱,可能无法检测出任务。image中state-of-art的方法是visual word,即图中所写的最后一个特征,意思是图像上画出的不同颜色的小方块代表不同的pattern,就像文章中的词汇一样,所以叫visual word。
feature是由人来找还是由model来抽呢?由于 F(x,y) 只是linear function, 没法做很厉害的事情。所以要让performance好的话,要抽出很好的feature,人工的方法未必能找出很好的feature,所以在object detection上,state-of-art的方法是讲image作为CNN的输入,CNN的输出可以很好的代表bounding box中的东西。Google就是用DNN+Structured learning来做的Object Detection.

Problem 2: Inference

这里写图片描述
这里我们假设Problem 2已经解决了。

Problem 3: Training

这里写图片描述
训练时,给定训练数据,要找的是 w w 应该满足图上黄色方框中的条件,即对任意 xr , y^r 是与 xr 最匹配的。

这里写图片描述
举例来讲,以Object Detection为例,对红色圈圈代表对 x1 , 根据最匹配的 x,y 对得到的向量,蓝色圈圈代表不匹配的向量,红色星星蓝色星星是对 x2 的同样概念,现在希望找到一个 w , 使得 w 与红色圈圈的内积> w 与蓝色圈圈的内积, w 与红色星星的内积 > w 与蓝色星星的内积。

这个问题没有想象中那么难,只要符合要求的 w 存在,那么用下面的算法就可以找到 w
这里写图片描述
说明:如果 y~ry^r , 说明现在的 w 不是要找的。这个算法与感知机算法本质相同。感知机是 Binary Classification 的方法, Binary Classification 是 Structured Learning 的特例。

下面形象地解释一下这个算法的过程:
这里写图片描述

可以证明,上述算法是会结束的,与蓝色点的数目没有关系。这个证明与感知机算法的收敛性证明[李航,Chapter 2.3.2] 是很类似的。

总结一下Structured Linear Model:
这里写图片描述

Lecture 23: Structured Learning - Structured SVM

本节课先简要回顾了Structured Learning的概念、Unified Framework以及要使用Unified Framework需解决的三个问题。并给出了两个开放问题:1、在Problem 1中如果 F(x,y) 是非线性的会怎样?2、在Problem 2中如果Inference得到的不是精确解而是近似解会怎样?关于这两个问题的研究很少。
简单介绍了Problem 2中解决argmax问题的可能选项,对Object Detection, 有Branch and Bound algorithm, Selective Search; 对Sequence Labeling, 有Viterbi Algorithm. 采用哪种算法是与任务有关的,甚至在同一个任务中, ϕ(x,y) 定义不同都需要不同的算法来解决Problem 2。
以下假设Problem 2已解决,只关注Problem3.
本讲Outline:
这里写图片描述

Separable case

对上讲中的算法(Structured Perceptron)的收敛性做了证明,由于与感知机算法的收敛性证明[李航,Chapter 2.3.2] 很类似,这里不再贴图。本课程的slides在这里

Non-separable case

现实中很少有Separable case,因此要考虑Non-separable case。

这里写图片描述
就算数据是Non-separable 的,一些 w 也是比较好的,可以定义cost function来衡量 w 有多不好,最小化cost function的 w 就是我们手上最好的 w . cost function可以自己定义,图中 Cn 表示第n笔data的cost。 Cn 不会是负的。为什么不定义为前若干名得分之和减去正确的得分呢?因为在Problem 2中只假设了可以找到第一名的得分,取前若干名是自找麻烦。

用SGD找到最小化C的 w ,要如何处理 Cn 中的max() 呢?还是可以算的,想想maxout NN……
这里写图片描述
w 不同,得到的 maxy[wϕ(xn,y)] 是不同的。 w 所形成的空间是被 maxy[wϕ(xn,y)] 切割成好几块的,在不同去榆中, argmaxy[wϕ(xn,y)] 会得到不同的 y ,这样就可以在不同区域中分别写出 Cn , 以及求出 Cn w 的导数。区域边界上是无法微分的,避开边界就可以微分了。
可以求出梯度就可以用SGD了,SGD过程如图所示,如果学习率设为1,就是Structured perceptron. (w减去错的feature, 加上对的feature)。

Considering Errors

这里写图片描述
现在要修改一下刚才的Cost function, 因为错误是有不同等级的,在training的时候应考虑到这一点。若y可接受,则w应使y的得分 wϕ(x,y) 也很高;若y错得很严重,则w应使y的得分 wϕ(x,y) 很低。这样的好处是:学到的结果是比较安全的,因为若testing与training有一些差距,第一名并不是正确的,至少可保证分数比较高的结果与第一名差距不大。评价y的好坏是task-depended的,这里(Object Detection)用 Δ(y^,y) 表示,定义见图。

这里写图片描述
这样,衡量错误y的分数的标准就在刚才的基础 wϕ(xn,y) 上加上了 y y^n 的差异程度。
其精神在于,希望 Δ 大的结果,得分与正确结果差较大, Δ 小的结果,得分与正确结果差较小。
或者可理解为 y^n 的得分 wϕ(xn,yn) 比其他所有 y 的得分 wϕ(xn,y) 都大出一个 Δ(y^n,y) 时, Cn 最小。
在定义 Δ 时要尽量使 maxy() 问题好解,因为 maxy() 问题已经不是Problem 2了。
改变 Cn 后,用gradient descent求解 w 的过程与前面是类似的。

从另外一个观点解释新的cost function:
这里写图片描述
这个观点是说,新的cost function 是训练误差的upper bound,最小化upper bound不代表error一定会变小,但error有可能跟着变小。
C 是error,最小化 C 是很困难的,因为 Δ 可能比之前看到的不可微分的函数更加复杂,例如是阶梯状的函数,无法用gradient descent。而新的cost function 是 C 的upper bound,图中给出了证明。要想用upper bound作为cost function,形式不止一种,图中所给的Slack variable rescaling就是另一种,它在 Δ wϕ 数量级不同时比Margin rescaling更合理一些。

Regularization

由于训练数据和测试数据有mismatch的问题,所以加上正则项让 w 接近0 的话会鲁棒一些。
加上正则项之后,参数 w 的更新类似于DNN中的weight decay.
这里写图片描述

Structured SVM

这里写图片描述
回答图中Are they equivalent?的问题:
二者本不等价,但是加上“minimizing C”之后就等价了。

这里写图片描述
在问题的原来形式中,定好 w Cn 就直接决定了。
在问题变化后的形式中,将 Cn 改记为 εn (Slack variable, 松弛变量),定好 w Cn(εn) 没有直接决定。
因此要将原来的叙述“Find w minimizing C ”,改为“Find w,ε1,...,εn minimizing C ”。
简单的将 y^n 代入 y , 可得 εn0

对Structured SVM的一个直观解释:
这里写图片描述
由于施加约束的不等式太多,如果不加松弛因子的话,可能不存在同时满足这些不等式的 w
因此要加入松弛因子,松弛因子显然是非负的(不然就不起“松弛”的作用了),但又希望它尽量小。
最后得到一个二次规划问题。
但是现在约束太多了……

Cutting Plane Algorithm for Structured SVM

这里写图片描述
先不管不等式约束,假设 w 是一维的, N=1 . 每个不等式约束都在 εw 平面上画出一条直线,并规定只有在其中一半平面上取 ε,w 才是可以的。由于不等式约束很多,因此找出交集很难。Cutting Plane算法可帮助我们找出结果。

这里写图片描述
对每个example,很多个不等式约束给出了一个交集,在众多不等式约束中,只有很少的几个是起决定作用的,而其他约束是去掉之后不改变结果的。起决定作用的不等式约束所对应的y的集合,叫做working set, 每个example都有一个working set.
先初始化working set, 然后解二次规划问题(y∈working set),解得 w , 再根据 w 找出被违反最严重的不等式约束,将其对应的y添加到working set中. 按下图所示方法,找到被违反最严重的y。
这里写图片描述

所以,Cutting Plane Algorithm for Structured SVM的过程就是:
这里写图片描述

用例子形象的说明这一过程:
这里写图片描述
这里写图片描述
这里写图片描述

Multi-class and binary SVM

这里写图片描述
这里写图片描述
x⃗  ϕ(x,y) 的第y个位置。

Beyond Structured SVM (open question)

Structured SVM是linear的,要让它表现很好的话需要把feature定得很好,这对人来讲较难。
这里写图片描述
这里写图片描述
这里写图片描述

Lecture 24: Structured Learning - Sequence Labeling

本讲介绍Structured Learning的一个具体问题, Sequence Labeling 。 Sequence Labeling 的输入输出都是序列,这里先假设两个序列的长度相等。RNN可以完成 Sequence Labeling 的任务,但是也有一些基于Structured Learning的方法。本讲以词性标注(POS tagging)作为Structured Learning的例子来说明问题。
本讲Outline:
这里写图片描述

Hidden Markov Model (HMM)

这里写图片描述
HMM假设经过如下两个步骤产生句子:根据语法,产生词性序列;根据词性序列和词典,产生句子。
语法表现为马尔科夫链的形式,可得产生词性序列的概率。从各词性集合中采样得到句子,相应的得到在给定词性序列的条件下,产生句子的条件概率。

对这两个步骤给出数学上的一般化的表达:
这里写图片描述

公式中的概率是用统计的方法得到的,而在台大数位语音处理课程中,HMM中的概率是用EM算法求的,这是因为在语音识别中有隐变量。

这里写图片描述
要做POS Tagging, 就是要根据观察到的句子 x ,找到Hidden的词性序列 y (Hidden Markov Model一词的来源)。 y~=argmaxyYP(x,y) . 但是穷举的方法不现实,因为可能的词性序列 y 太多了,幸好有Viterbi算法!

这里写图片描述
HMM也是Structured Learning的一种方法,所以也要回答三个问题。

这里写图片描述
HMM存在着如下问题:
假设训练数据为 (x,y^) ,要想让HMM得到正确的结果,就应该有 P(x,y^)P(x,y) , 但HMM可能做不到让 P(x,y)P(x,y^) 。 例如根据训练数据,估计“N→?(→a)”,用HMM的估计结果是?=V, 而在训练数据中出现过的却是?=D. 即,对于HMM,在训练数据中从未出现过的 (x,y) 可能有较大的 P(x,y) (HMM会“脑补”它没看过的东西)。不过这也不尽然是缺点,在训练数据较少时“脑补”可能是有好处的。
之所以HMM会脑补,是因为在HMM中假设transition probability和emission probability是独立的。
要想解决脑补问题,可以使用更复杂的模型(假设两个概率之间不是独立的)来模拟两个序列之间的概率。但模型太复杂、参数太多会有过拟合的问题。
而CRF用与HMM相同的模型(假设transition probability和emission probability是独立的),却可以解决“脑补”问题。

Conditional Random Field (CRF)

这里写图片描述
CRF不在意 P(x,y) 是否大于1,它在意的是 P(y|x) .

CRF与HMM的model其实是一样的,只是在training的时候不同。
这里写图片描述
这里写图片描述
这里写图片描述

这样,得到 P(x,y)=exp(wϕ(x,y)) , 如果内积小于0,取指数来能解释成概率,但如果内积大于0就不能解释成概率。而且这个“概率”也不保证合一性。所以,把 P(x,y)=exp(wϕ(x,y)) 改为 P(x,y)exp(wϕ(x,y)) .
这里写图片描述

CRF里的feature vector ϕ(x,y) 长成什么样子呢?它是由两部分拼成的一个高维向量。
这里写图片描述

CRF的training
这里写图片描述
根据训练数据,定义目标函数(给定 xn , 得到正确 y^n 的概率),寻找 w 最大化目标函数。最大化目标函数就是,最大化观察到的 (xn,y^n) 的概率,最小化没观察到的 (xn,y) 的概率(不会“脑补”)。由于要最大化目标函数,所以采用的是梯度上升。

这里写图片描述
经过数学计算,每一笔 (xn,y^n) ws,t 的偏微分有两项。第一项表示,如果pair (tag=s,word=t) 在正确答案 (xn,y^n) 中出现次数多,则 ws,t 要增加;第二项表示,如果pair (tag=s,word=t) 在随便一个答案 (xn,y) 中出现次数多,则 ws,t 要减小,第二项里的 P(y|xn) 与现在的 w 有关,第二项可用Viterbi算法来解。这两项之间有trade-off的关系。
得到随机梯度上升的参数更新公式,求出 w ,进而就可以做Inference了。

CRF的Inference
这里写图片描述

CRF v.s. HMM
这里写图片描述
HMM给出的结果V直接是从统计来的,而CRF完全不care这些统计数据(N接V几次,从V产生c几次),CRF只是调参数使正确的(x,y) pair的分数高,可能调来调去就会把 P(a|V) 从0.5调成0.1,这样在Inference时得到的结果是D。

这里写图片描述
在提出CRF的论文里的实验:数据由mixed-order HMM产生,看HMM和CRF哪个对数据fit得更好。右图横轴表示HMM的错误率,纵轴表示CRF的错误率。在 α0.5 时,HMM表现更好(数据就是从HMM产生的);而在 α0.5 时(data的产生方式与HMM、CRF的假设都很不合的时候),CRF表现更好,因为这时HMM只会按照概率,而CRF会调整参数fit数据。

Summary
CRF也是Structured Learning的一种方法,它也解决了三个问题。
这里写图片描述

Structured Perceptron/SVM

这部分讲Structured Perceptron/SVM 怎么用在Sequence Labeling上面。
Structured Perceptron是Structured Learning的一种方法,它也解决了三个问题。
这里写图片描述

在Sequence Labeling上,Structured Perceptron与CRF十分相似,只是在training的时候有一点区别:
这里写图片描述

Structured SVM的Problem 1,2 都与Structured Perceptron相同,在training时加上了margin的概念和error的概念。
这里写图片描述

Towards Deep Learning

为什么不用RNN?
这里写图片描述
Sequence Labeling的问题,可以用RNN或LSTM来解,也可以用HMM, CRF, Structured Perceptron/SVM 来解,用哪个比较好呢?
RNN, LSTM有一个缺点是,如果用单方向的RNN, LSTM,那么在做决定时并没有看完整个sequence,即在产生时刻t的output时只考虑了时刻1~t的input, 没有考虑时刻t之后的input。而HMM, CRF, Structured Perceptron/SVM 在做Inference的时候,用的是Viterbi算法,看过了整个sequence。那么用双方向的RNN, LSTM会怎样呢?不知道,没看到相关文献。
HMM, CRF, Structured Perceptron/SVM 的另一个有点是,可以明确地考虑output sequence中的label dependency(label与label之间的关系)。假设知道在output sequence中某些元素是不可能出现的,那么可以把这件事塞到Viterbi算法里面去(穷举所有sequence时只穷举符合constrain的sequence)。如果RNN, LSTM有足够多的训练数据的话,或许也可以把label dependency学进来。明确的约束或许要胜过学到的。
RNN, LSTM的另一个问题是,它的cost 和 error 不见得是有关系的。而HMM, CRF, Structured Perceptron/SVM 的 cost 是 error 的 upper bound,cost减小的时候error很可能也会跟着减小,train的时候更安心。
不过,RNN, LSTM的无可比拟的优点是,它可以Deep。
综合来看,RNN, LSTM要胜过HMM, CRF, Structured Perceptron/SVM。

这里写图片描述
不过,我们可以将RNN, LSTM与 HMM, CRF, Structured Perceptron/SVM 结合起来:model的底层是RNN, LSTM(deep),后面接HMM, CRF, Structured Perceptron/SVM (明确描述label dependency, cost 是 error 的upper bound)

结合的例子:
这里写图片描述

右图中RNN的output作为 ϕ(x,y) 中的 x w 和RNN中的参数可以一起train。

Concluding Remarks
这里写图片描述

GAN与Structured SVM
GAN中的Discriminator可以看作是Evaluation Function,
GAN中的Generator可看作在解Inference问题,
怎么训练GAN,就是Problem 3的solution。
GAN的训练与Structured SVM的训练有异曲同工之妙:Structured SVM的训练中每次要找出最competitive的那些example,希望正确的example的Evaluation Function的分数大过competitive example, 然后update model,重新选择competitive example……GAN的训练类似,正确的example (Real x)让Evaluation Function (Discriminator) 最大,然后用Generator得出最competitive的x,再去训练Discriminator(对Real x给较大的值,对Generated x给较小的值),……
这里写图片描述


李宏毅机器学习课程笔记

李宏毅机器学习课程笔记1:Regression、Error、Gradient Descent
李宏毅机器学习课程笔记2:Classification、Logistic Regression、Brief Introduction of Deep Learning
李宏毅机器学习课程笔记3:Backpropagation、”Hello world” of Deep Learning、Tips for Training DNN
李宏毅机器学习课程笔记4:CNN、Why Deep、Semi-supervised
李宏毅机器学习课程笔记5:Unsupervised Learning - Linear Methods、Word Embedding、Neighbor Embedding
李宏毅机器学习课程笔记6:Unsupervised Learning - Auto-encoder、PixelRNN、VAE、GAN
李宏毅机器学习课程笔记7:Transfer Learning、SVM、Structured Learning - Introduction
李宏毅机器学习课程笔记8:Structured Learning - Linear Model、Structured SVM、Sequence Labeling
李宏毅机器学习课程笔记9:Recurrent Neural Network
李宏毅机器学习课程笔记10:Ensemble、Deep Reinforcement Learning

猜你喜欢

转载自blog.csdn.net/xzy_thu/article/details/74560814
今日推荐