放牧代码和思想
专注自然语言处理、机器学习算法
    愛しさ 優しさ すべて投げ出してもいい

CS224n笔记17 NLP存在的问题与未来的架构

目录

Models with a pointer/copying

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

hankcs.com 2017-07-13 下午7.09.38.png

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

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

hankcs.com 2017-07-13 下午7.14.02.png

但是Google最新的论文说他们线上的NMT都没有用到copy机制,因为深度神经网络中的attention不稳定云云。

另一个大显身手的领域是自动摘要,因为摘要中的稀有人名地名就是原文的词语。

词语之下:书写系统

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

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

hankcs.com 2017-07-13 下午7.24.06.png

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

hankcs.com 2017-07-13 下午8.05.11.png

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

hankcs.com 2017-07-13 下午8.10.22.png

形态学

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

hankcs.com 2017-07-13 下午8.12.45.png

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

hankcs.com 2017-07-13 下午8.13.36.png

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

hankcs.com 2017-07-13 下午8.18.01.png

Character-Level Models

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

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

2017-07-13_20-59-08.png

在更早的时候,还会用到CNN:

hankcs.com 2017-07-13 下午9.01.32.png

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

hankcs.com 2017-07-13 下午9.02.17.png

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

hankcs.com 2017-07-13 下午9.04.19.png

Sub-word NMT: two trends

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

Byte Pair Encoding

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

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

hankcs.com 2017-07-13 下午9.12.00.png

添加词表中最频繁的pair:

hankcs.com 2017-07-13 下午9.12.35.png

继续这一过程:

hankcs.com 2017-07-13 下午9.12.54.png

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

hankcs.com 2017-07-13 下午9.13.10.png

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

Wordpiece model

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

Hybrid NMT

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

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

2017-07-13_21-25-29.png

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

2017-07-13_21-27-09.png

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

2017-07-13_21-29-39.png

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

hankcs.com 2017-07-13 下午9.32.42.png

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

hankcs.com 2017-07-13 下午9.33.34.png

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n笔记17 NLP存在的问题与未来的架构

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    感谢感谢博主!!
    英文还是不好,看这课的video看得很懵很懵
    多亏您的博文

    zy7年前 (2017-08-27)回复

我的作品

HanLP自然语言处理包《自然语言处理入门》