李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

每次写博客,都是我最开心的时候,因为每次决定写博客都是我觉得学到了非常重要的知识点。这篇博客,我会来谈论一下Structured Learning 以及在句法分析上的应用,Structured Learning 应用很广泛,只要掌握了这一思想,我们自然就会去应用它,我们的毕业论文方向是信息检索,我也会用你Structured Learning 方法来看一下效果会怎样。
在这篇博客中,我们会深入探讨Structured Learning 的各个细节,如果仅仅是想应用它的话,可以把中间探讨过程略过,但是如果可以,还是耐心看完,因为我都是从初学者角度去解释它,针对自己踩过的坑重点讲解。在这里,我用的资料都是来自李宏毅老师的PPT。
在大多数机器学习教材里面,你会发现很少讲Structured Learning的,我也是在看cs224d课程的时候,在recursive neural network中提到句法树学习里看Structured Learning 一脸懵逼,到处找资料才学习到Structured Learning 。我们就通过一个问题来引出接下来我们要学习的内容。
我们都都知道在分类问题中,我们会给一个训练数据,标记好了类。如果让你用一个模型来解决它,你会怎么做? so easy,有很多方法,knn,svm朴素贝叶斯,决策树等等哪个不行啊,这个问题我们可以看到,它的输出可能是数(每个类都用数字来标识)。现在我们再来问一个问题,我们知道在自然语言里面有句法树分析这样的一个重要任务,给定了一组训练数据,让你来判断学习这个树结构,这个时候你会用什么方法呢? 这个问题,就是属于Structured Learning 的范畴。

首先我们来看看关于Structured Learning 的框架
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
如图所说,我们给一函数F,对于输入X和标记Y,我们都会输出出一个实数R,这里的Y是一个抽象的概念,对应到我们句法分析上代表树的结构。输出的实数R就是代表我们的X和Y有多匹配,匹配度越高,R的值就越大。然后我们测试集上就是寻找一个能F(X,Y)的输出值最大的Y.
写到这里,有的人可能会觉得F(X,Y)的表达很奇怪,而且整个式子有一种似曾相识的感觉,是不是很像机器学习里的朴素贝叶斯学习方法? 我们只要把F(X,Y)换成P(X,Y)就可以了。 这样做其实是可以的,我们之所以用F(X,Y),因为它是更一般的表达式,P(X,Y)是F(X,Y)的一种形式,我们之所以用F(X,Y)是因为,不是在任何情况下都一个用P(X,Y)来表达。我们就用F(X,Y)抽象的表示X和Y匹配的程度,具体的表达形式,还是需要根据你要处理的具体任务来定,这个我们会在后面讲到句法分析的时候讲解。
我们学习的Structured Learning 的时候,我们主要要解决这三个问题。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

现在我们来看看第一个问题,F(x,y)是什么东西
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
那个和w相称的函数叫特征函数,这个在传统方法里是人工标注的,现在一般都是用深度学习来表征。(对于这个,我不想详细解释了,如果有问题可以私信,或者自己看看条件随机场,和最大熵模型,里面也都有关于特征函数概念),可以举一个例子就是,在我们自然语言里面,可以用向量表示词,而这个词的各个维度权重就是对应某个特长函数的值(就解释这么多吧,这些都是基本概念了)。
再来看看第二个问题,我们怎么来找到最大值对应的y,其实F(x,y)的表达已经知道了,用穷举的办法就可以找到啊,所以寻找方法还是基于已经知道F(x,y)的表达的基础上,所以为了方便理解,你可以想想朴素贝叶斯里面是怎么寻找最大y了。在这里,我们就假定我们已经知道了最大的值。
第三个问题是我们要重点展开讨论的,我们怎么去学习F(x,y),其实就是学习里面的参数w.
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
用语言来直白描述就是,我们希望学习这么一些参数w,使得用参数w乘以正确的正确标记样本的特征函数,他们的值要大过于参数w诚意错误标记样本的特征函数。下面举例李宏毅老师在课上讲的例子
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
这个是关于人脸识别的task,不同的人脸识别位置会对应不同的特征函数,我们希望正确的人脸识别乘以w,可以获得更高的分数。
解释到这里,这种方法我们是不是很熟悉的呢? 像不像SVM的精神,有征服样本,学习一些参数w,使正样本和负样本分隔开来。其实跟道理都是一样的,所以这种方法有一个统一的名称叫max margin method,我么们也会在后面看到,我们在structured learning 里面,最终是把它的推导方式转化到svm的问题。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
这个是我们的更新参数w的算法,至于这个算法为什么会收敛,会在后面证明。

具体的算法举例如下图
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
图中的w向量是我们最终要学习的向量(在这里w向量是二维,这个只是我们为了方便可视化做的假设,在我们实际应用中,我们的w向量维度往往很大)。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
以上就是我们更w的方法。我们在自然语言句法分析上学习参数w的时候,并不是用这样的方法,我们是用深度学习的方法来更新w.
接下来,我们还要做进一步的工作,就是证明这个更新算法它是收敛的。
首先我们要假设,样本可分割性。就是假设存在函数F(x,y)可以让正确的样本分数最高。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

以上就是关于算法收敛的证明。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

以上我们讨论的是样本可分的情况,事实上我们在实际应用中更多的是碰到样本不可分的情况,这个时候我们还需要用别的方法。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

所以在这里我们就定义一个cost function
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

以上我们很好的解决了怎么让正确标记的F(x,y)他的值更大,但是我们把所有错误样本都是同等对待,为了让我们的模型更加robust,我们还要对错误标记的label进行打分,让那些更接近正label的获得分数更高一些。所有我们引进来 error function
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
相应地,我们地梯度方程也要修改一些

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

从另一个角度来看看 这种方法
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

这里我提一下slack variable rescaling, 因为我们之前地cost function 是把delta 和 特征函数地差值加起来,但是有它地不合理性,因为delete 和特征函数差值可能不在一个scale上,他们相加起来有时候是没意义地,针对这种情况,用 delta乘以 他们地插值相对来说更合理一些。另一方面,这样做地话delta值很大地时候,他地cost function 也会变大,相反,delta比较小地时候,他地cost function 值会缩小。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
在regularization里面,我们是加了一个w的优化,我们希望w更小,这样受到错误样本的y影响就会减少,模型也会更加robust。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

接下来我们来引出structured learning
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
在这里我们能看到转换
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
从数学意义上来讲,这两个式子并不是严格意义上的等价,因为上面的式子他表达的是最大值,是一个数值,而下面他是一个大于号,表达是一个集合,但是在我们这个方程里面却可以这样转换,因为我们要minimize C,也就是说我们要在集合中找最小的值,也就是第一个式子中max值了。这个是一个细节,就这么提一下。
接下来,我们再做进一步的变换
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
到这里是不是有很熟悉的感觉,这个就有点像SVM里面软间隔模型了。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
再这一步做的唯一变换就是把 y 等于 y head情况单拿出来,形成一个大于零的条件。

那现在问题是我们怎么去解决这个方程,这个方程有太多的限定的条件,我们有没有好的办法呢? 我们要用的方法是cutting plane 方法。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

接下来我们就来介绍一下cutting plane的方法
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

如图所示,我们要对cost function进行优化,就是要在阴影部分的范围内进行优化。

李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
cutting plane的本质思想是这样的,虽然我们有很多限定条件,但是真正构成阴影部分的线就那么几条,我们就是想把这部分线给找出来。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用

这个是算法的详细描述。
用大白话来描述就是,我们先initialize N个空的集合,这个N对应的是样本的集合,这个N个集合分别代表N个限定条件。我们最开始是initialize 参数w(比如初始化化为零),给定了参数,我们就有了新的约束条件,我们在这些约束条件中寻找most violate的限定条件(怎么找,下面会详细谈一下),找出了most violate条件之后,更新集合,在这些条件下我们再求一次最优化w,更新了w之后,我们再寻找most violate的条件,如此迭代,一直到我们的集合不再更新为止。
现在我们来谈一下怎么去找most violate的条件的问题。
李宏毅老师Structured Learning课堂笔记 以及在 自然语言句法分析上的应用
本质的思想就是我们给定w 和柯西,我们寻找最违的限制条件,如图所示其中y是我们要求的变量,所以最终就变化上图中最后的式子。