前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NLP系列笔记-机器翻译之Sequence-to-Sequence模型

NLP系列笔记-机器翻译之Sequence-to-Sequence模型

作者头像
marsggbo
发布2021-04-22 10:52:15
6470
发布2021-04-22 10:52:15
举报

目录

1. Tokenization & Build dictionary

token是“符号”的意思,那tokenization简单理解就是分词,比如 “我是中国人”可以分解成['我', '是', '中国人']。

假设我们需要把英语翻译成德语,那么我们首先要做的是对不同语种做tokenization(分词)。常用的分词做法是以“词”为单位,这里为方便介绍,就以字符为单位:

  • 英语有26个字母,考虑大小写的话就有52个字符。
  • 德语也有26个字母,还有4个特殊字符。

分词后就可以得到不同语种对应的字典,结果如下图所示。

注意不同语种之前分词的结果是不一样的,比如字符 a 在英文中的编号是1,而在德文中是3。另外因为现在的任务是讲英文翻译成德文,所以德文里额外添加了两个特殊符号: \t\n分别表示起始和结束符号,你也可以用其他特殊符号,只要不与其他符号重复就可以了。

Tokenization
Tokenization

2. One-hot Encoding

分词和构建字典后,我们需要把每个字符转化成one-hot格式,如下图示。所以,每个字符有相同长度的列向量表示,其中只有一个位置的值为1,其余位置均为0。一个词或者一句话由一个矩阵表示。

One-hot Encoding
One-hot Encoding

3. Seq2Seq

Seq2Seq由两部分组成:Encoder和Decoder。这两部分都是LSTM结构,下面分别介绍两个部分。

如果对LSTM不熟悉,可以看看最后给出的参考文献和下面两个示意图: LSTM结构示意图:

LSTM
LSTM

LSTM Cell结构示意图:

LSML Cell
LSML Cell

3.1 Encoder

Encoder主要用来对输入的英语句子进行特征提取,它最后的输出会作为输入传给Decoder。

如下图示,传入的是英文"go away"的one-hot编码,encoder会生成很多hidden states,只不过只会保留最后的hidden state (h, c)。

Encoder
Encoder

3.2 Decoder

拿到了Encoder的编码结果后,此时Decoder就会开始做预测。

Decoder首次预测
Decoder首次预测

Decoder最开始的输入是起始符号\t,初始状态是Encoder传入的(h,c),基于这些会输出预测概率向量 p,这和图像分类的softmax输出类似。真实的labely就是下一个字符m的one-hot编码,之后我们可以通过计算交叉熵来更新Encoder和Decoder的参数权重。

Decoder重复预测直到预测为终止符
Decoder重复预测直到预测为终止符

上面只是预测了一个字符,我们还需要不断预测。我们假设前一次预测的概率向量中概率最大的索引刚好就是m这个字符的索引, 即argmax(p)等于index(m),那么Decoder下一个输入值就是m的one-hot编码序列。Decoder按照前面介绍的方式不断做预测,直到预测的字符为终止符号\n

3.3 Inference

假设Seq2Seq模型训练好了,那它的inference流程是什么样的呢?

  • Step 1: 首先Decoder接收Encoder的输入
(h_0,c_0)

,输入为\t,其输出为

(h_1,c_1)

m

Seq2Seq Inference Step 1
Seq2Seq Inference Step 1
  • Step 2:之后Decoder的初始状态不再是Encoder的输出,而是上一时刻的
(h_1,c_1)

,其输入也变成了上一时刻预测的m

  • ... 重复上面的操作知道输出为\n就停止inference。
Seq2Seq Inference Step 2
Seq2Seq Inference Step 2

4. 总结

下面给出了利用Keras实现Seq2Seq的示意图,每次给Decoder传入新的输入,计算loss并更新Decoder和Encoder。

Seq2Seq in Keras
Seq2Seq in Keras

下图给出了Seq2Seq更加直观的网络结构示意图。

Seq2Seq Model
Seq2Seq Model

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Tokenization & Build dictionary
  • 2. One-hot Encoding
  • 3. Seq2Seq
    • 3.1 Encoder
      • 3.2 Decoder
        • 3.3 Inference
        • 4. 总结
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档