ACL 2017文章精读(四)
2017年 8月 6号我们在这里对ACL 2017文章Learning to Skim Text进行一个简单的分析解读。
这篇文章的作者群来自Google。这篇文章是第一作者来自卡内基梅隆大学的Adams Wei Yu在Google实习的时候做的工作。第三作者的Quoc V. Le曾是Alex Smola和Andrew Ng的高徒,在Google工作期间有很多著名的工作,比如Sequence to Sequence Model来做机器翻译(Machine Translation)等。
这篇文章想要解决的的问题叫做“Skim Text”。简单说来,就是在文字处理的时候,略过不重要的部分,对重要的部分进行记忆和阅读。也就是说,要教会模型知道在哪里需要略过不读,哪里需要重新开始阅读的能力。略过阅读的另外一个好处则是对文字整体的处理速度明显提高,而且很有可能还会带来质量上的提升(因为处理的噪声信息少了、垃圾信息少了)。
具体说来,这篇文章是希望在LSTM的基础上加入“跳转”功能,从而使得这个时序模型能够有能力判读是否要略过一部分的文字信息。简单说来,作者们是这么对LSTM进行改进的。首先,有一个参数R来确定要读多少文字。然后模型从一个0到K的基于Multinomial分布的这一个跳转机制中决定当前需要往后跳多少文字(可以是0,也就是说不跳转)。这个是否跳转的这一个步骤所需要的Multinomial分布,则也要基于当期那LSTM的隐参数信息(Hidden State)。跳转决定以后,根据这个跳转信息,模型会看一下是否已经达到最大的跳转限制N。,如果没有则往后跳转。当所有的这些步骤都走完,达到一个序列(往往是一个句子)的结尾的时候,最后的隐参数信息会用来对最终需要的目标(比如分类标签)进行预测。
这篇文章的另外一个创新点,也就是引入了强化学习(Reinforcement Learning)到模型的训练中。最终从隐参数到目标标签(Label)的这一步往往采用的是Cross Entropy的优化目标函数。这一个选择很直观,也是一个标准的步骤。然而,如何训练跳转的Multinomial分布,因为其离散(Discrete)特质,则成为文章的难点。原因是Cross Entropy无法直接应用到离散数据上。那么,这篇文章采取的思路是把这个问题构造成为强化学习的例子,从而使用最近的一些强化学习思路来把这个离散信息转化为连续信息。具体说来,就是采用了Policy Gradient的办法,在每次跳转正确的时候,得到一个为+1的反馈,反之则是-1。这样就把问题抓换成为了学习跳转策略的强化学习模式。文章采用了REINFORCE的算法来对这里的离散信息做处理。从而把Policy Gradient的计算转换为了一个近似逼近。这样,最终的目标函数来自于三个部分,第一个部分是Cross Entropy,第二个部分是Policy Gradient的逼近,第三个部分则是一个Variance Reduction的控制项(为了优化更加有效)。整个目标函数就可以完整得被优化了。
文章在好多种实验类型上做了实验,主要比较的就是没有跳转信息的标准的LSTM。其实总体上来说,很多任务(Task)依然比较机械和人工。比如最后的用一堆句子,来预测中间可能会出现的某个词的情况,这样的任务其实并不是很现实。但是,文章中提到了一个人工(Synthetic)的任务还蛮有意思,那就是从一个数组中,根据下标为0的数作为提示来跳转取得相应的数作为输出这么一个任务。这个任务可以说是充分的展示了LSTM这类模型,以及文章提出的模型的魅力:第一,可以非常好的处理这样的非线性时序信息,第二,文章提出的模型比普通的LSTM快不少,并且准确度也提升很多。
总体说来,这篇文章非常值得对时序模型有兴趣的读者精读。文章的“Related Work”部分也很精彩,对相关研究有兴趣的朋友可以参考这部分看看最近都有哪些工作很类似。