锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

斯坦福NLP名课带学详解 | CS224n 第8讲 - 机器翻译、seq2seq与注意力机制(NLP通关指南·完结)

时间:2023-04-24 00:07:01 yt一体化液位变送器

ShowMeAI研究中心

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


ShowMeAI为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的所有课件都完成了中文翻译和注释,并制作成了GIF动图!


本讲内容的深入总结教程可以在这里 查看。视频、课件等资料的获取方式见文末


引言

本文涵盖了内容

  • 引入新任务:机器翻译
  • 引入新的神经结构:sequence-to-sequence
    • 机器翻译是 sequence-to-sequence 主要用例
  • 引入新的神经技术:注意力
    • sequence-to-sequence 通过 attention 得到提升

1.机器翻译与SMT(统计机器翻译)

1.1 Pre-neural Machine Translation

1.2 机器翻译

机器翻译(MT)是句子 x x x 从一种语言(源语言)转换成另一种语言(目标语言)的句子 y y y 的任务。

1.3 1950s:早期机器翻译

机器翻译研究始于20世纪50年代初。

  • 俄语 → 英语(促进冷战)
  • 系统主要是基于规则使用双语词典,俄语单词映射到相应的英语部分

1.4 1990s-2010s:统计机器翻译

  • 核心想法:从数据中学习概率模型

  • 假设我们在翻译法语 → 英语

  • 给定法语句子 x x x,我们想找到它最好的英语句子 y y y

a r g m a x y P ( y ∣ x ) argmax_yP(y \mid x) argmaxyP(yx)

  • 使用Bayes规则将其分解为两个组件从而分别学习

a r g m a x y P ( x ∣ y ) P ( y ) argmax_yP(x \mid y) P(y) argmaxyP(xy)P(y)

  • P ( x ∣ y ) P(x \mid y) P(xy)Translation Model / 翻译模型

    • 分析单词和短语应该如何翻译(逼真)
    • 从并行数据中学习
  • P ( y ) P(y) P(y)Language Model / 语言模型

    • 模型如何写出好英语(流利)
    • 从单语数据中学习

1.5 1990s-2010s:统计机器翻译

  • 问题:如何学习翻译模型 P(x \mid y)?

  • 首先,需要大量的并行数据(例如成对的人工翻译的法语/英语句子)

1.6 SMT的学习对齐

  • 问题:如何从并行语料库中学习翻译模型 P ( x ∣ y ) P(x \mid y) P(xy)
  • 进一步分解:我们实际上想要考虑

P ( x , a ∣ y ) P(x,a \mid y) P(x,ay)

  • a a a 是对齐
  • 即法语句子 x x x 和英语句子 y y y 之间的单词级对应

1.7 对齐

Examples from: “The Mathematics of Statistical Machine Translation: Parameter Estimation", Brown et al, 1993. http://www.aclweb.org/anthology/J93-2003

  • 对齐是翻译句子中特定词语之间的对应关系
    • 注意:有些词没有对应词

1.8 对齐是复杂的

  • 对齐可以是多对一的

1.9 对齐是复杂的

  • 对齐可以是一对多的

1.10 对齐是复杂的

  • 有些词很丰富

  • 对齐可以是多对多(短语级)

  • 我们学习很多因素的组合,包括

    • 特定单词对齐的概率(也取决于发送位置)
    • 特定单词具有特定多词对应的概率(对应单词的数量)

1.11 SMT的学习对齐

1.12 SMT解码

Source: ”Statistical Machine Translation", Chapter 6, Koehn, 2009. https://www.cambridge.org/core/books/statistical-machine-translation/94EADF9F680558E13BE759997553CDE5

1.13 SMT解码

1.14 1990s-2010s:统计机器翻译

  • SMT是一个巨大的研究领域

  • 最好的系统非常复杂

    • 数以百计的重要细节我们还没有提到
    • 系统有许多独立设计子组件工程
    • 大量特征工程
      • 很多功能需要设计特性来获取特定的语言现象
    • 需要编译和维护额外的资源
      • 比如双语短语对应表
    • 需要大量的人力来维护
      • 对于每一对语言都需要重复操作

2.神经网络机器翻译

2.1 Neural Machine Translation

2.2 神经机器翻译(NMT)

2.3 神经机器翻译(NMT)

  • 神经机器翻译(NMT)是利用单个神经网络进行机器翻译的一种方法

  • 神经网络架构称为 sequence-to-sequence (又名seq2seq),它包含两个RNNs

2.4 神经机器翻译(NMT)

  • 编码器RNN生成源语句的编码

  • 源语句的编码为解码器RNN提供初始隐藏状态

  • 解码器RNN是一种以编码为条件生成目标句的语言模型

  • 注意:此图显示了测试时行为 → 解码器输出作为下一步的输入

2.5 Sequence-to-sequence是多功能的!

  • 序列到序列不仅仅对机器翻译有用

  • 许多NLP任务可以按照顺序进行表达

    • 摘要(长文本 → 短文本)
    • 对话(前一句话 → 下一句话)
    • 解析(输入文本 → 输出解析为序列)
    • 代码生成(自然语言 → Python代码)

2.6 神经机器翻译(NMT)

  • sequence-to-sequence 模型是条件语言模型的一个例子

    • 语言模型(Language Model),因为解码器正在预测目标句的下一个单词 y y y
    • 条件约束的(Conditional),因为预测也取决于源句 x x x
  • NMT直接计算 P ( y ∣ x ) P(y \mid x) P(yx)

P ( y ∣ x ) = P ( y 1 ∣ x ) P ( y 2 ∣ y 1 , x ) P ( y 3 ∣ y 1 , y 2 , x ) … P ( y T ∣ y 1 , … , y T − 1 , x ) P(y | x)=P\left(y_{1} | x\right) P\left(y_{2} | y_{1}, x\right) P\left(y_{3} | y_{1}, y_{2}, x\right) \ldots P\left(y_{T} | y_{1}, \ldots, y_{T-1}, x\right) P(yx)=P(y1x)P(y2y1,x)P(y3y1,y2,x)P(yTy1,,yT1,x)

  • 上式中最后一项为,给定到目前为止的目标词和源句 x x x,下一个目标词的概率

  • 问题:如何训练NMT系统?

  • 回答:找一个大的平行语料库

2.7 训练一个机器翻译系统

  • Seq2seq被优化为一个单一的系统。反向传播运行在“端到端”中

3.机器翻译解码

3.1 贪婪解码

  • 我们了解了如何生成(或“解码”)目标句,通过对解码器的每个步骤使用 argmax

  • 这是贪婪解码(每一步都取最可能的单词)

  • 这种方法有问题吗

3.2 贪婪解码的问题

  • 贪婪解码没有办法撤销决定

  • 如何修复?

3.3 穷举搜索解码

  • 理想情况下,我们想要找到一个(长度为 T T T )的翻译 y y y 使其最大化

  • 我们可以尝试计算所有可能的序列 y y y

    • 这意味着在解码器的每一步 t t t ,我们跟踪 V t V^t Vt个可能的部分翻译,其中 V V V 是 vocab 大小
    • 这种 O ( V T ) O(V^T) O(VT) 的复杂性太昂贵了!

3.4 集束搜索解码

  • 核心思想:在解码器的每一步,跟踪 k k k最可能的部分翻译(我们称之为假设[hypotheses ] )

    • k k k 是Beam的大小(实际中大约是5到10)
  • 假设 y 1 , … , y t y_1, \ldots,y_t y1,,yt 有一个分数,即它的对数概率

score ⁡ ( y 1 , … , y t ) = log ⁡ P L M ( y 1 , … , y t ∣ x ) = ∑ i = 1 t log ⁡ P LM ⁡ ( y i ∣ y 1 , … , y i − 1 , x ) \operatorname{score}\left(y_{1}, \ldots, y_{t}\right)=\log P_{\mathrm{LM}}\left(y_{1}, \ldots, y_{t} | x\right)=\sum_{i=1}^{t} \log P_{\operatorname{LM}}\left(y_{i} | y_{1}, \ldots, y_{i-1}, x\right) score(y1,,yt)=logPLM(y1,,ytx)=i=1tlogPLM(yiy1,,yi1,x)

  • 分数都是负数,分数越高越好

  • 我们寻找得分较高的假设,跟踪每一步的 top k 个部分翻译

  • 波束搜索 不一定能 找到最优解

  • 但比穷举搜索效率高得多

3.5 集束搜索解码:示例

  • Beam size = k = 2
  • 蓝色的数字是

score ⁡ ( y 1 , … , y t ) = ∑ i = 1 t log ⁡ P LM ⁡ ( y i ∣ y 1 , … , y i − 1 , x ) \operatorname{score}\left(y_{1}, \ldots, y_{t}\right)=\sum_{i=1}^{t} \log P_{\operatorname{LM}}\left(y_{i} | y_{1}, \ldots, y_{i-1}, x\right) score(y1,,yt)=i=1tlogPLM(yiy1,,yi1,x)

  • 计算下一个单词的概率分布
  • 取前 k k k 个单词并计算分数
    • 对于每一次的 k k k 个假设,找出最前面的 k k k 个单词并计算分数
    • k 2 k^2 k2 的假设中,保留 k k k 个最高的分值
      • t = 2 t = 2 t=2 时,保留分数最高的 hitwas
      • t = 3 t = 3 t=3 时,保留分数最高的 ame
      • t = 4 t = 4 t=4 时,保留分数最高的 piewith
      • t = 5 t = 5 t=5 时,保留分数最高的 aone
      • t = 6 t = 6 t=6 时,保留分数最高的 pie
  • 这是最高得分的假设
  • 回溯以获得完整的假设

3.6 集束搜索解码:停止判据

  • 在贪心解码中,我们通常解码到模型产生一个 令牌

    • 例如: he hit me with a pie
  • 在集束搜索解码中,不同的假设可能在不同的时间步长上产生 令牌

    • 当一个假设生成了 令牌,该假设完成
    • 把它放在一边,通过 Beam Search 继续探索其他假设
  • 通常我们继续进行 Beam Search ,直到

    • 我们到达时间步长 T T T (其中 T T T 是预定义截止点)
    • 我们至少有 n n n 个已完成的假设(其中 n n n 是预定义截止点)

3.7 集束搜索解码:完成

相关文章