乐趣区

关于自然语言处理:斯坦福NLP课程-第12讲-NLP子词模型

作者:韩信子 @ShowMeAI,路遥 @ShowMeAI,奇异果 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/36
本文地址:http://www.showmeai.tech/article-detail/249
申明:版权所有,转载请分割平台与作者并注明出处
珍藏 ShowMeAI 查看更多精彩内容



ShowMeAI 为 斯坦福 CS224n《自然语言解决与深度学习 (Natural Language Processing with Deep Learning)》课程的全副课件,做了 中文翻译和正文 ,并制作成了 GIF 动图!视频和课件等材料的获取形式见 文末


引言

授课打算

  • A tiny bit of linguistics / 语法学基础知识
  • Purely character-level models / 基于字符粒度的模型
  • Subword-models: Byte Pair Encoding and friends / 子词模型
  • Hybrid character and word level models / 混合字符与词粒度的模型
  • fastText / fastText 模型

1. 语法学基础知识

1.1 人类语言的声音:语音学和语音体系

  • 语音学 (honetics) 是音流无争议的 物理学

  • 语音体系 (Phonology) 假设了一组或多组独特的、分类的单元: 音素 (phoneme) 或者是独特的特色

    • 这兴许是一种广泛的类型学,但却是一种非凡的语言实现
    • 分类感知的最佳例子就是语音体系

      • 音位差别放大
      • 音素之间的放大

1.2 词法:词类

  • 传统上,词素 (morphemes) 是最小的语义单位

$$
\left[\left[\text {un}\left[[\text { fortun}(\mathrm{e})]_{\text { Root}} \text {ate}\right]_{\text { STEM}}\right]_{\text { STEM}} \text {ly}\right]_{\text { WORD}}
$$

  • 深度学习:形态学钻研较少;递归神经网络的一种尝试是 (Luong, Socher, & Manning 2013)

    • 解决更大词汇量的一种可能办法:大多数看不见的单词是新的状态(或数字)

  • 声音自身在语言中没有意义
  • parts of words 是音素的下一级的形态学,是具备意义的最低级别

  • 一个简略的代替办法是应用字符 n-grams

    • Wickelphones (Rumelhart & McClelland 1986)
    • Microsoft’s DSSM (Huang, He, Gao, Deng, Acero, & Hect2013)
  • 应用卷积层的相干想法

  • 能更容易地施展词素的许多长处吗?

1.3 书写零碎中的单词

  • 书写零碎在表白单词的形式上差别有大有小

  • 没有分词 (没有在单词间搁置空格)

    • 例如中文

  • 大部分的单词都是离开的:由单词组成了句子

    • 附着词

      • 离开的
      • 间断的
    • 复合名词

      • 离开的
      • 间断的

1.4 比单词粒度更细的模型

  • 须要解决数量很大的凋谢词汇:微小的、有限的单词空间

    • 丰盛的状态
    • 音译 (特地是名字,在翻译中基本上是音译)
    • 非正式的拼写

1.5 字符级模型

  • 词嵌入能够由字符嵌入组成

    • 为未知单词生成嵌入
    • 类似的拼写共享类似的嵌入
    • 解决 OOV 问题
  • 间断语言能够作为字符解决:即所有的语言解决均建设在字符序列上,不思考 word-level

  • 这两种办法都被证实是十分胜利的!

    • 有点令人诧异的是:个别意义上,音素 / 字母不是一个语义单元:但深度学习模型形成了 group
    • 深度学习模型能够存储和构建来自多个字母组的含意示意,以模仿语素和更大单位的意义,汇总造成语义

1.6 单词之下:书写零碎

  • 大多数深度学习 NLP 的工作,都是从语言的书面形式开始的:这是一种容易解决的、现成的数据
  • 然而人类语言书写零碎不是一回事!各种语言的字符是不同的!

2. 基于字符粒度的模型

2.1 纯字符级模型

  • 上节课,咱们看到了一个很好的用于句子分类的纯字符级模型的例子

    • 十分深的卷积网络用于文本分类
    • Conneau, Schwenk, Lecun, Barrault.EACL 2017

  • 弱小的后果通过深度卷积重叠

2.2 字符级别输入输出的机器翻译零碎

  • 最后,成果 令人不称心

    • (Vilaret al., 2007; Neubiget al., 2013)

  • 只有 decoder (初步胜利)

    • (JunyoungChung, KyunghyunCho, YoshuaBengio. arXiv 2016).

  • 而后,呈现了 还不错 的后果

    • (Wang Ling, Isabel Trancoso, Chris Dyer, Alan Black, arXiv 2015)
    • (Thang Luong, Christopher Manning, ACL 2016)
    • (Marta R. Costa-Jussà, José A. R. Fonollosa, ACL 2016)

2.3 English-Czech WMT 2015 Results

  • Luong 和 Manning 测试了一个纯字符级 seq2seq (LSTM) NMT 零碎作为基线
  • 它在单词级基线上运行得很好

    • 对于 UNK,是用 single word translation 或者 copy stuff from the source

  • 字符级的 model 成果更好了,然而太慢了

    • 然而运行须要 3 周的工夫来训练,运行时没那么快
    • 如果放进了 LSTM 中,序列长度变为以前的数倍 (大概七倍)

2.4 无显式宰割的齐全字符级神经机器翻译

  • Jason Lee, KyunghyunCho, Thomas Hoffmann. 2017.
  • 编码器如下
  • 解码器是一个字符级的 GRU

2.5 #论文解读# Stronger character results with depth in LSTM seq2seq model

  • Revisiting Character-Based Neural Machine Translation with Capacity and Compression. 2018. Cherry, Foster, Bapna, Firat, Macherey, Google AI

  • 在 LSTM-seq2seq 模型中,随着深度的减少,特色越强
  • 捷克语 这样的简单语言中,字符级模型的 成果晋升 较为显著,然而在 英语和法语 等语言中则 收效甚微

    • 模型较小时,word-level 更佳
    • 模型较大时,character-level 更佳

3. 子词模型

3.1 子词模式:两种趋势

  • 与 word 级模型 雷同 的架构

    • 然而应用更小的单元:word pieces
    • [Sennrich, Haddow, Birch, ACL’16a], [Chung, Cho, Bengio, ACL’16].

  • 混合架构

    • 主模型应用单词,其余应用字符级
    • [Costa-Jussà& Fonollosa, ACL’16], [Luong & Manning, ACL’16].

3.2 字节对编码 /BPE

  • 最后的 压缩算法

    • 最频繁的字节 → 一个新的字节。

  • 用字符 ngram 替换字节(实际上,有些人曾经用字节做了一些乏味的事件)

  • Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural Machine Translation of Rare Words with SubwordUnits. ACL 2016.

    • https://arxiv.org/abs/1508.07909
    • https://github.com/rsennrich/…
    • https://github.com/EdinburghN…

  • 分词 (word segmentation) 算法

    • 尽管做得很简略,有点像是自下而上的短序列聚类

  • 将数据中的所有的 Unicode 字符组成一个 unigram 的词典
  • 最常见的 ngram pairs 视为 一个新的 ngram

  • BPE 并未深度学习的无关算法,但已成为规范且胜利示意 pieces of words 的办法,能够取得一个无限的词典与有限且无效的词汇表。

  • 有一个指标词汇量,当你达到它的时候就进行
  • 做确定性的最长分词宰割
  • 宰割只在某些先前标记器 (通常 MT 应用的 Moses tokenizer) 标识的单词中进行
  • 主动 为零碎增加词汇

    • 不再是基于传统形式的 strongly word

  • 2016 年 WMT 排名第一!依然广泛应用于 2018 年 WMT
  • https://github.com/rsennrich/…

3.3 Wordpiece / Sentencepiece 模型

  • 谷歌 NMT (GNMT) 应用了它的一个变体

    • V1: wordpiece model
    • V2: sentencepiece model

  • 不应用字符的 n-gram count,而是应用贪婪近似来最大化语言模型的对数似然函数值,抉择对应的 pieces

    • 增加最大限度地缩小困惑的 n-gram

  • Wordpiece 模型标记外部单词

  • Sentencepiece 模型应用原始文本

    • 空格被保留为非凡标记(_),并失常分组
    • 能够通过将片段连接起来并将它们从新编码到空格中,从而在开端将内容反转

  • https://github.com/google/sen…
  • https://arxiv.org/pdf/1804.10…

  • BERT 应用了 wordpiece 模型的一个变体

    • (绝对) 在词汇表中的常用词

      • at, fairfax, 1910s
    • 其余单词由 wordpieces 组成

      • hypatia = h ##yp ##ati ##a

  • 如果你在一个基于单词的模型中应用 BERT,你必须解决这个

3.4 字符级构建单词级

  • Learning Character-level Representations for Part-ofSpeech Tagging (Dos Santos and Zadrozny 2014)

  • 对字符进行卷积以生成单词嵌入
  • 为 PoS 标签应用固定窗口的词嵌入

3.5 基于字符的 LSTM 构建单词示意

  • Bi-LSTM 构建单词示意

3.6 #论文解读# Character-Aware Neural Language Models

  • 一个更简单 / 精细的办法

  • 动机

    • 派生一个弱小的、强壮的语言模型,该模型在多种语言中都无效
    • 编码子单词关联性:eventful, eventfully, uneventful…
    • 解决现有模型的常见字问题
    • 用更少的参数取得可比拟的表白性

  • 字符级别嵌入输出
  • CNN+ 高速网络 +LSTM

  • 字符级别输出 + 卷积解决
  • Max-over-time 池化

  • N-gram 语法交互模型
  • 在传递原始信息的同时利用转换
  • 性能相似于 LSTM 内存单元

  • 应用层次化 Softmax 解决大的输入词汇表
  • 应用 truncated backprop through time 进行训练

  • 本文对应用词嵌入作为神经语言建模输出的必要性提出了质疑
  • 字符级的 CNNs + Highway Network 能够提取丰盛的语义和构造信息
  • 要害思维:您能够构建 building blocks 来取得细致入微且功能强大的模型!

4. 混合字符与词粒度的模型

4.1 混合 NMT

  • 混合高效构造

    • 翻译大部分是 单词 级别的
    • 只在须要的时候进入 字符 级别

  • 应用一个复制机制,试图填充常见的单词,产生了超过 2 个点的 BLEU 的改良

  • 单词级别 (4 层)
  • End-to-end training 8-stacking LSTM layers:端到端训练 8 层 LSTM

4.2 二级解码

  • 单词级别的集束搜寻
  • 字符级别的集束搜寻 (遇到 <UNK>) 时

补充解说

  • 混合模型与字符级模型相比

    • 纯正的字符级模型可能十分无效地应用字符序列作为条件上下文
    • 混合模型尽管提供了字符级的隐层示意,但并没有取得比单词级别更低的示意

4.3 English – Czech Results

  • 应用 WMT’15 数据进行训练 (12M 句子对)

    • 新闻测试 2015

  • 30 倍数据
  • 3 个零碎
  • 大型词汇 + 复制机制

  • 达到先进的成果!

4.4 Sample English-czech translations

  • 翻译成果很好!

  • 基于字符:谬误的名称翻译
  • 基于单词:对齐不正确
  • 基于字符的混合:diagnóze 的正确翻译
  • 基于单词:特色复制失败

  • 混合:正确,11-year-old-jedenactileta
  • 谬误:Shani Bartova

4.5 单词嵌入中的字符利用

  • 一种用于单词嵌入和单词形态学的联结模型(Cao and Rei 2016)

    • 与 w2v 指标雷同,但应用字符
    • 双向 LSTM 计算单词示意
    • 模型试图捕捉形态学
    • 模型能够推断单词的词根

5.fastText 模型

  • 用子单词信息丰盛单词向量
    Bojanowski, Grave, Joulinand Mikolov. FAIR. 2016.

    • https://arxiv.org/pdf/1607.04…
    • https://fasttext.cc

  • 指标:下一代高效的相似于 word2vecd 的单词示意库,但更适宜于具备大量形态学的常见单词和语言
  • 带有字符 n-grams 的 w2v 的 skip-gram 模型的扩大

  • 将单词示意为用边界符号和整词裁减的字符 n-grams

$$
where =,where =<wh,whe,her,ere,re>,<where>
$$

  • 留神 \(<her>\)、\(<her\)是不同于 \(her\)的

    • 前缀、后缀和整个单词都是非凡的

  • 将 word 示意为这些示意的和。上下文单词得分为

$$
S(w, c)=\sum g \in G(w) \mathbf{Z}_{g}^{\mathrm{T}} \mathbf{V}_{C}
$$

  • 细节:与其共享所有 n-grams 的示意,不如应用 hashing trick 来领有固定数量的向量

  • 低频常见单词的差别收益

Suggested Readings

  • Character Level NMT
  • Byte Pair Encoding
  • Minh-Thang Luong and Christopher Manning
  • FastText 论文

6. 视频教程

能够点击 B 站 查看视频的【双语字幕】版本

7. 参考资料

  • 本讲带学的 在线阅翻页本
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程学习指南
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程大作业解析
  • 双语字幕视频】斯坦福 CS224n | 深度学习与自然语言解决(2019·全 20 讲)
  • Stanford 官网 | CS224n: Natural Language Processing with Deep Learning

ShowMeAI系列教程举荐

  • 大厂技术实现 | 举荐与广告计算解决方案
  • 大厂技术实现 | 计算机视觉解决方案
  • 大厂技术实现 | 自然语言解决行业解决方案
  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程 | 斯坦福 CS224n 课程 · 课程带学与全套笔记解读

NLP 系列教程文章

  • NLP 教程(1)- 词向量、SVD 合成与 Word2vec
  • NLP 教程(2)- GloVe 及词向量的训练与评估
  • NLP 教程(3)- 神经网络与反向流传
  • NLP 教程(4)- 句法分析与依存解析
  • NLP 教程(5)- 语言模型、RNN、GRU 与 LSTM
  • NLP 教程(6)- 神经机器翻译、seq2seq 与注意力机制
  • NLP 教程(7)- 问答零碎
  • NLP 教程(8)- NLP 中的卷积神经网络
  • NLP 教程(9)- 句法分析与树形递归神经网络

斯坦福 CS224n 课程带学详解

  • 斯坦福 NLP 课程 | 第 1 讲 – NLP 介绍与词向量初步
  • 斯坦福 NLP 课程 | 第 2 讲 – 词向量进阶
  • 斯坦福 NLP 课程 | 第 3 讲 – 神经网络常识回顾
  • 斯坦福 NLP 课程 | 第 4 讲 – 神经网络反向流传与计算图
  • 斯坦福 NLP 课程 | 第 5 讲 – 句法分析与依存解析
  • 斯坦福 NLP 课程 | 第 6 讲 – 循环神经网络与语言模型
  • 斯坦福 NLP 课程 | 第 7 讲 – 梯度隐没问题与 RNN 变种
  • 斯坦福 NLP 课程 | 第 8 讲 – 机器翻译、seq2seq 与注意力机制
  • 斯坦福 NLP 课程 | 第 9 讲 – cs224n 课程大我的项目实用技巧与教训
  • 斯坦福 NLP 课程 | 第 10 讲 – NLP 中的问答零碎
  • 斯坦福 NLP 课程 | 第 11 讲 – NLP 中的卷积神经网络
  • 斯坦福 NLP 课程 | 第 12 讲 – 子词模型
  • 斯坦福 NLP 课程 | 第 13 讲 – 基于上下文的表征与 NLP 预训练模型
  • 斯坦福 NLP 课程 | 第 14 讲 – Transformers 自注意力与生成模型
  • 斯坦福 NLP 课程 | 第 15 讲 – NLP 文本生成工作
  • 斯坦福 NLP 课程 | 第 16 讲 – 指代消解问题与神经网络办法
  • 斯坦福 NLP 课程 | 第 17 讲 – 多任务学习(以问答零碎为例)
  • 斯坦福 NLP 课程 | 第 18 讲 – 句法分析与树形递归神经网络
  • 斯坦福 NLP 课程 | 第 19 讲 – AI 平安偏见与偏心
  • 斯坦福 NLP 课程 | 第 20 讲 – NLP 与深度学习的将来

退出移动版