在高人的指点之下准备开始海量读论文,计划本系列完成ACL,EMNLP,NAACL最近五年来的全部论文。希望有所收获,啦啦啦!
1. Learning Ensembled for Structured Prediction Rules
1.1 -1st PASS
①论文类型
啧啧,第一篇论文就不是熟悉的领域。这篇论文提出了新的算法,并且对老算法进行了调研和比较。
②问题领域
这篇论文是针对集成学习提出的新算法。试图通过新的算法,将集成学习能够应用到新的研究潮流中。
③假设正确性讨论
该论文最重要的假设就是将一类任务统一看做是结构化输出的任务,集成学习仅仅针对这个结构化的输出结果,而和前面的模型训练过程无关。这个假设大大的简化了集成学习的难度。有了这个前提,统一的集成学习的框架将会成为可能。其实这个假设可以进行一下扩展,我们知道啊,在现在的问题中,比如序列标注,我们高大上的训练模型不仅仅可以给出标注的结果,甚至是可以给出标注的概率的。那么我们如果采用论文中的假设的话,就没有办法充分利用这一部分信息咯。
另外一个假设是输出的整体损失是子结构的损失之和。这个假设在大多数结构化输出的任务中都是成立的。
还有一个隐藏的假设,就是我们用于集成学习的模型(专家)是各有所长的。每个人对于某一个子结构的预测能力是不一样的。这个假设就要求我们在构造这些专家的时候尽量采用不同的模型,模型的差距越大越好。
还有一个小假设吧,就是每个输出的子结构的个数都是一样的。这个呢是为了方便说明问题才做这样的假设的,完全可以采用不等长的子结构。算法的过程是完全一样的。
④主要贡献
本文的基本思想是:在当今的研究潮流中,预测问题的结果已经不再是原本的分类或者回归问题了。而是更多的涉及到结构化的结果,比如语音识别和序列标注等等。以序列标注为例,我们如今面临的任务是给整个序列每个基本单元都贴上标签。
想象一下,如果我们采用原本的集成学习的方法,把这个问题当做分类问题,那么预测空间将会非常庞大。集成策略如果采用传统的“投票”的方式的话,训练5个模型,每个模型对这个序列进行一下标注,然后把标注的结果进行投票。这是没有意义的,因为从结果来说,很有可能最终每个模型都给出了不同的标注方案,一人一票,没有意义。但是,同时我们注意到,每个模型虽然标注的结果都不一样,但是每个模型的标注都是有意义的,就像5个专家,说的虽然不一定一致吧,但是各有各的道理,所以急需一种新的算法能够将集成学习应用到这类新问题上来,将每个“专家”的意见取其精华去其糟粕。
在这样的背景下,这篇论文提出了新的算法,主要具有以下几个贡献:
1.归一处理。将不同的任务泛化成同样的抽象任务,该论文在不了解任何任务背景的情况下建立起一套统一的集成学习框架,因此可以说是彻底的任务无关的。以前的随机森林等方法,都是只能针对特定的任务,或者说是特定的学习模型,在该论文提出的方法中将不存在这种限制。
2.充分利用子结构信息的集成。正如前面提到的,这篇论文充分利用了结构化的输出中的子结构的信息,即从各个专家的话中获取有用的信息进行集成,而不是像传统的方法一样进行粗粒度的简单集成。同时,区别贪心算法,贪心算法并没有办法保证整个序列的最优性。
3.非基于概率的。传统的集成学习大多是基于概率的模型,而一旦基于概率,该模型将会变得非常复杂。在该论文中并没有任何和概率相关的内容。
1.2 -2nd PASS
啊哈哈哈。。。这个图叫“线上学习”(on-line)哎。。差点被忽悠了!这个模型的大概意思呢是很简单的。我们认为呀,每个专家对不同的子结构的预测能力是不一样的,那么就各司其职呗。我们从这些专家的话中综合出来一个path_expert
.举例来说,有五个专家,有六个子结构,每个专家都对序列做了标注,那么就会最多可以出现6的5次方
种不同的标注方法(说是最多因为可能存在意见相同的时候),然后根据损失函数进行选择一个就好啦。文章中还提到啦,这样的模型能够做到综合各个专家的意见,而不是最后就是选了某一个人的意见作为判别啦。
这个方法简单吧。但是效率低哇!怎么办??论文提出了batch
方法,包括基于WMWP
和基于FPL
方法的两种方案。其中前者是该论文的研究重点。
基于WMWP
的方法呢也很简单。既然不能遍历的话就引入概率呗。这就简单啦。按照指定的概率选择path_expert
作为最终的标注序列。可以看出来啦,这里最关键的就是这个概率啦。不说也知道,这个概率一定和预测的好坏程度成正比 咯。猜的越好我们就优先按这个来,损失越小就是猜的越好。但是这样的话效率没有提高,这时使用了关键的转换,序列的损失是单个子结构损失之和。所以我们只需要计算有限数量的单个损失,然后把每个序列的损失加出来就行了。这样就从指数复杂度O(n2)
变成了线性复杂度O(n)
。
1.3 -3rd PASS
这个算法可以说是很简单啦,具体的思维重现结果如下。需要注意,算法输入是黑箱训练模型提供的标注,输出是集成之后的序列标注。