每次写博客,都是我最开心的时候,因为每次决定写博客都是我觉得学到了非常重要的知识点。这篇博客,我会来谈论一下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 的框架
如图所说,我们给一函数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 的时候,我们主要要解决这三