人们正在解决语言

深度学习填平了领域鸿沟,许多计算机视觉的泰斗级学者也开始研究起自然语言处理的各种任务。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 这里提到的自然语言理解、机器翻译都是较高层次、更难的任务,现有系统做得并不那么好。

未传承下来的志向

早期NLP学者拥有崇高的目标,希望让机器像人一样理解语言;但奈何数据和计算力都有限,使得成效甚微。Manning说今天我们有了海量的数据与强大的计算力,却往往自满于跑个LSTM,而不愿意挑战这个终极目标。

AI的师祖Norvig (1986)的Ph.D.论文The unified theory of inference中举了个例子,希望机器从一篇文章中理解如下信息:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 其中a和b即便是最前沿的技术也无法自动推断,因为在文本没有提到海与岛的关系,也没提到渔网,省略了太多背景知识。

所以Norvig认为,必须先建立一个包罗万象的知识库,才能进行自然语言理解。但最近二十年,没有知识库我们也完成了许多NLP任务,并且模型学到的“知识”是连续的表示,而不是“知识库”中的离散表示。

Norvig假想的系统中含有如下4种推断(inference):

  • Elaboration:连接两个实体,表示解释说明
  • Reference Resolution:就是指代相消
  • View Application:比喻、活用、习语
  • Concretization:具体化,一般化,比如TRAVELLING is an AUTOMOBILE is an instance of DRIVING

基础NLP:在进步

Norvig写博士论文的时候,连像样的句法分析器都没有,所有句子都是手工分析的。现在我们有了全自动的句法分析器

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 但现代NLP依然没有完成Norvig设想的宏伟目标——自动推断:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 也许是时候开始挑战这个宏伟目标了。

我们还需要什么?

现在BiLSTMs with attention已经统治了NLP领域,你可以在任何任务上应用它,得到超越其他方法的好成绩(就如同若干年前的CRF和SVM一样)

另外神经网络方法也带来了自然语言生成领域的文艺复兴(MT、QA、自动摘要……)

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 这些现代突破都没有采用Norvig假想的“知识库”。究竟是否需要一个显式的、localist(应该指的是领域相关的)语言与知识表示和推断机制,这是一个亟待探讨的科学问题。

虽然神经网络隐含了知识表达,我们也已经取得了如此多的成就,但我们建立和访问记忆或知识的手段依然十分原始。LSTM只是短时记忆,并不能与人类经年累月的经验与记忆相比。LSTM只是线性地扫描最近100个单词而已。

另外,现有模型也无法制定和执行目标或计划。这对对话系统而言非常重要,对话应当是有意义有目标的,而不是闲扯。

虽然句子级别的分析已经可以做到很清楚,句子之间的关系(顺承、原因、转折)则无法理顺。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 Recursive NN用于意识形态检测

作为语言学者,Manning还是很喜欢树形模型(赞成)。他的学生尝试用Recursive Neural Networks检测人们在政治上是保守的还是*激进的等等。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

这并不是句子级别或段落级别的分析,而是文章级别的分析。一些政治术语被复合起来检测最终的政治倾向(用不同颜色表示)。红色表示保守的:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 Tree recursive NNs

树形模型理论上很有吸引力,但非常慢,需要外部句法分析器(如果用内部的则更慢),而且也没有用到语言的线性结构。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 recurrent NN训练块:线性结构的模型适合batch训练,因为对每个训练实例,模型结构都是一样的。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 Tree recursive NN 结构每句都不相同 所以无法并行化 一个线程在训练某种结构的模型,其他线程得等它

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 The Shift-reduce Parser-Interpreter NN 移位规约解析器解释器神经网络 SPINN

为了提高tree模型的训练效率,人们活用Shift-reduce依存句法分析的思想,将模型的树形机构拆分为动作序列,得到了25倍的速度提升。这还产生了“线性”与“树形”模型的混血,可以离开外部句法分析器独立运行。

binary trees = transition sequence shift入栈,reduce合并。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 结构:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

模型与parser类似,有stack和buffer储存单词,tracking由LSTM负责track并决策动作,Tree RNN负责拼装成分的表达。LSTM还将上文的表示送给TreeRNN拼装,这似乎解决了树形模型无法捕捉语言的线性结构的问题。

实现stack:

由于反向传播要用,所以每个时刻的stack都要备份,这消耗了大量内存。朴素实现就是用个固定大小的多维数组存放,还需要移动大量内存。高效实现是每个句子一个stack,在每个时刻改动stack的head,记录head的指针。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 backpointer从右到左记录栈顶的元素。最重要的是,在reduce的时候,不删除array中的任何元素,而是将合并后的成分新增进去,同时更新backpointer。

应用了这种编程技巧之后,效率提升非常显著,直追线性模型:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

由于parse是个hard decision,这会导致损失函数不可导。所以训练的时候直接在已经做了句法分析的句子上训练,这样结构是固定的,就不需要做hard decision了。否则就需要用强化学习等复杂手段去work around。

根据文本描述的事实,推断与另一句话的关系(蕴含entailment,无关中立neutral,矛盾contradiction)。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 NLI with Tree-RNN sentence rep'ns

讲两句话送入SPINN组合,最终交给分类器:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 SNLI结果:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 线性模型和树形模型得分差不多,但结合了两者的SPINN得分显著提高。很遗憾最高分是由word level的attention model拿下的。

SPINN比LSTM更擅长否定和长句子:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 models with a pointer/copying

Richard介绍过Pointer Sentinel Mixture Models (Merity et al. 2017),这次讲讲另一种做法。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 与其把“指针”当成单词丢入softmax,不如先做个二分类决策,是要softmax已知词语,还是copy未知词语。这个决策可以做成不可导的hard choice,也可以做成概率形式的可导soft choice。

copy机制常用于生成语言的任务,比如在机器翻译上效果非常显著:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 词汇之下:书写系统

大多数NLP研究都是词语级别的,因为处理简单,数据多。

但人类语言的书写系统并不是天下大同,有音位书写法,也有音节书写法,还有两者的混合:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 有些语言没有词语边界,除了著名的中文之外,还有古希腊语。有些语言的分隔符又过多,比如法语每个附着词素都分割开了。有些语言的复合词会把其中的词语都连着写,比如德语。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

就算决定用词语做语言模型,也需要处理非常大的词表。因为有些词语里面有形态变化,人们也会自己创造多种拼写,再加上人名之类总在动态变化的词语,简直是无穷无尽。在人名翻译的时候,最好是翻译成发音相似的,这也不适合用词语级别来做。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 形态学 Morphology

传统语言学上词语最小语义单元是词素,在英文中特别明显:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 深度学习中研究较少,比如Luong, Socher, & Manning 2013:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 如果不用词素的话,可以用character n-gram,经常用CNN隐式地学习。实践中收获会很大。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 字符级模型

通过字符embedding来合成词语embedding,理论上完美地解决OOV问题。Manning说他作为语言学家,最初非常怀疑字符模型的表示能力,但LSTM这类强大的模型证实了字符embedding也能包含丰富的语义。

最干净的版本是,Bi-LSTM双向读取字符的embedding,利用隐藏状态作为词语的embedding,通过训练语言模型得到字符embedding。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

更早的时候,会使用CNN

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 上次spotlight讲到了一个很复杂的Highway-LSTM

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 类似CMU的做法,将LSTM合成字符embedding得到的word embedding送入word2vec,同时学习两者的embedding:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 sub-word NMT :two trends

在NMT中利用小于词语的颗粒度,有两种流派。一种使用相同的seq2seq框架,但是使用更细颗粒度的输入。另一种则是混合词语与字符两种颗粒度的输入。

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 Byte Pair Encoding

原本作为压缩算法被发明,目标是找出一种码表,将最频繁的bype pair压缩替换为一个新的byte。

活用到字符上,可以压缩词表。具体做法是从字符开始

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 添加词表中最频繁的pair:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 直到增长到希望的词表大小,比如3万:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 最终词表混合了字符、词素和词语,在部分语言中赢得了WMT2016的第一名。

Word piece model

Google NMT用到了类似的变种,只不过不再贪心选择,而是以最大化语言模型的对数似然来选择合并。

Hybrid NMT

另一种流派希望结合word level的效率character level的效果,在NMT那课简单提了一下。

通过将OOV以LSTM编码,<unk>作为占位符送入另一个LSTM解码,其他单词原样输入编码解码,得到了这种混血模型:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 在两个level都有自己的柱搜索:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 在一些变形很多的语言(捷克语)上效果显著:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 word level无法应对复杂的变形,就算是copy,也只能copy人名,无法将一种语言的变形词语copy成另一种语言:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

 Hybrid则可以生成对应语言的变形:

斯坦福CS224n NLP课程【十七】——NLP的问题和可能性架构

分类:

技术点:

相关文章: