文章目录

  • 一、Sequence-to-Sequence Model (Seq2Seq)
    • 1.1 Machine Translation Data(机器翻译数据)
    • 1.2 Tokenization & Build Dictionary(分词和建造字典)
      • 1.2.1 Tokenization(分词)
      • 1.2.2 Build Dictionary(建造字典)
      • 1.2.3 问题
    • 1.3 One-Hot Encoding
    • 1.4 Training the Seq2Seq Model(训练Seq2Seq模型)
      • 1.4.1 Seq2Seq Model
      • 1.4.2 Seq2Seq Model in Keras
    • 1.5 Inference Using the Seq2Seq Model(使用Seq2Seq模型进行推理)
  • 二、Summary(总结)
  • 三、How to Improve?(怎样改进Seq2Seq)
    • 3.1 Bi-LSTM instead of LSTM (Encoder only!)
    • 3.2 Word-Level Tokenization
    • 3.3 Multi-Task Learning(多任务学习)
    • 3.4 Attention! (Next lecture.)(注意力机制,机器翻译方法最好)

一、Sequence-to-Sequence Model (Seq2Seq)

机器翻译:多对多的问题,输入和输出的长度都不固定

1.1 Machine Translation Data(机器翻译数据)

Tab-delimited Bilingual Sentence Pairs: http://www.manythings.org/anki/

选择German-English文件,打开文件,左边英语句子,右边德语句子,一个英语句子对应多个德语句子,给定一句英语如果翻译对应其中一个德语句子,那么翻译正确。

  • Preprocessing: to lower case, remove punctuation, etc.(预处理:把大写变小写,去掉标点符号等)

1.2 Tokenization & Build Dictionary(分词和建造字典)

1.2.1 Tokenization(分词)

  • Tokenization :把一句话变成很多个单词或者很多个字符。
  • 做Tokenization 要用两个不同的Tokenizer(分词器),英语用一个,德语用一个。
  • Tokenization之后要建立两个字典,一个英语字典,一个德语字典。

分词方法有两种:

  1. Tokenization in the char-level.(把一句话分割成很多字符)
  2. Tokenization in the word-level.(把一句话分割成很多单词)

本节为了为了方便,使用Tokenization in the char-level.

1.2.2 Build Dictionary(建造字典)

  • 任务:把英语翻译成德语。
  • 在德语字典里面,把不常用的字符删掉,只保留26个字母和一个空格符号。
  • 在德语的字典里面加上两个符号,一个是起始符(start sign),一个是终止符(stop sign),用“\t”作为起始符,“\n”作为终止符,什么字符做起始符和终止符都行,别和字典里面已经存在的字符重复即可

1.2.3 问题

  • Question: Why 2 different tokenizers and dictionaries?
  • Answer: In the char-level, languages have different alphabets/chars.(在字符层面上,不同的语言通常有不同的字母/字符)

两种语言的字符是不同的,因此需要两种不同的Tokenizer(分词器),各有各的字母表

  • Question: Why 2 different tokenizers and dictionaries?
  • Answer: In the word-level, languages have different vocabulary.(在单词层面上,不同的语言具有不同的词汇)

不同的语言有不同的分词方法

1.3 One-Hot Encoding

  • 一句话先变成字符列表,然后用字典把字符映射成数字,这样一来一个语言(英语/德语)变成sequence(序列)。
  • 然后把每一个数字用one-hot向量表示。
  • 做完One-Hot Encoding,每个字符用一个向量表示,每句话用一个矩阵表示
  • 这个矩阵就是RNN的输入

1.4 Training the Seq2Seq Model(训练Seq2Seq模型)

1.4.1 Seq2Seq Model

  • Seq2Seq Model:有一个Encoder(编码器)和一个Decoder(解码器)
  • Encoder(编码器):是一个LSTM或者其它的RNN模型,用来从输入的英语句子中提取特征。Encoder的最后一个状态就是从输入的句子中提取的特征,包含这句话的信息。Encoder其余的状态没有用,都被丢弃。Encoder的输出是LSTM最后的状态h和最后的传输带C,—–>(h,c)
  • Decoder(解码器):用来生成德语。这个本质是文本生成器。Decoder的初始状态是Encoder的最后一个状态,通过Encoder最后一个状态,Decoder得知输入的英语句子是“ go away ”

  • Decoder是LSTM模型:每次接收一个输入,然后输出对下一个字符的预测。第一个输入必须是起始符,然后Decoder会输出一个概率分布,计作向量P。把起始符后面的第一字符“m”,对其做one-hot encoding作为标签y,用标签y和预测p的CrossEntropy作为损失函数,我们希望预测P尽量接近y,所以损失函数越小越好,有了损失函数,可以反向传播计算梯度,梯度会从损失函数传到Decoder,然后再从Decoder一直传到Encoder,然后用梯度下降来更新Encoder和Decoder的模型参数让损失函数减小。
  • 接下来是输入两个字符,起始符和字母“m”,Decoder会输出对下一个字符的预测,计作向量P。
  • 接下来是输入三个字符,不断重复,直到这句德语的最后一个字符。
  • 最后一轮,把整句德语作为Decoder输入,所以用停止符的ont-hot向量作为便签y,希望输出的预测尽量接近标签,也就是停止符,然后再做反向传播,更新模型参数。

1.4.2 Seq2Seq Model in Keras

1.5 Inference Using the Seq2Seq Model(使用Seq2Seq模型进行推理)

假如抽样得到了终止符,终止文本生成,返回这个生成的序列。

二、Summary(总结)

假如抽样得到了终止符,终止文本生成,返回这个生成的序列。

三、How to Improve?(怎样改进Seq2Seq)

3.1 Bi-LSTM instead of LSTM (Encoder only!)

  • Encoder’s final states (ht, and Ct) have all the information of the English sentence.(Encoder的最后一个状态是整句话的概要,理想情况下Encoder的最后一个状态包含整句话的完整信息)
  • If the sentence is long, the final states have forgotten early inputs.(如果句子足够长,LSTM就会遗忘,假如英语里面的有些句子被遗忘,Decoder不会有英语句子的完整信息,Decoder生成的德语会有些遗漏)
  • Bi-LSTM (left-to-right and right-to-left) has longer memory.

Decoder必须是单向的,它是一个文本生成器,必须按顺序生成文本,因此Decoder不能用双向LSTM。

3.2 Word-Level Tokenization

  • Word-level tokenization instead of char-level.

    • The average length of English words is 4.5 letters.(英文平均每个单词有4.5个字母)
    • The sequences will be 4.5x shorter. (输入的序列将短4.5倍)
    • Shorter sequence —> less likely to forget. (序列更短,更不容易遗忘)
  • But you will need a large dataset! (但是,你需要更大的数据集)

    • of (frequently used) chars is ~102 —> one-hot suffices.
    • of (frequently used) words is ~104 —> must use embedding.
    • Embedding Layer has many parameters —> overfitting!( Embedding层 的参数数量太大,没有办法很好的训练,会有过拟合的问题)或者进行预训练来改进

3.3 Multi-Task Learning(多任务学习)

  • 把英语翻译成德语是一个任务,还可以多添加几个任务:比如把英语句子翻译成英语句子本身,添加一个Decoder,根据(h,c)生成英语句子,这样一来Encoder只有一个,而训练数据多了一倍,所以Encoder可以被训练的更好。

  • Even if you want to translate English to German, you can use all the datasets:(还可以利用英语翻译成其它语言)

  • 但是Encoder只有一个。

3.4 Attention! (Next lecture.)(注意力机制,机器翻译方法最好)

6_机器翻译与Seq2Seq模型相关推荐

  1. RNN模型与NLP应用:机器翻译与Seq2Seq模型-7/9

    目录 一.前言 二.Seq2Seq模型的搭建 三.Seq2Seq模型的预测 四.Seq2Seq的改进 五.总结 六.参考连接 一.前言 Seq2Seq模型把英语翻译成德语 我们可以注意到机器翻译是一个 ...

  2. seq2seq模型_直观理解并使用Tensorflow实现Seq2Seq模型的注意机制

    采用带注意机制的序列序列结构进行英印地语神经机器翻译 Seq2seq模型构成了机器翻译.图像和视频字幕.文本摘要.聊天机器人以及任何你可能想到的包括从一个数据序列到另一个数据序列转换的任务的基础.如果 ...

  3. 可视化神经机器翻译模型(基于注意力机制的Seq2seq模型)

    可视化神经机器翻译模型(基于注意力机制的Seq2seq模型)   序列到序列模型是深度学习模型,在机器翻译.文本摘要和图像字幕等任务中取得了很大的成功.谷歌翻译在2016年底开始在生产中使用这样的模型 ...

  4. 使用seq2seq模型进行机器翻译的方法不同

    自然语言处理| 深度学习 (Natural language processing | Deep learning) Machine translation is a computational li ...

  5. TensorFlow学习之LSTM ---机器翻译(Seq2Seq + Attention模型)

    一.理论知识 Seq2Seq模型的基本思想:使用一个循环神经网络读取输入句子,将这个句子的信息压缩到一个固定维度的编码中:再使用另一个循环神经网络读取这个编码,将其"解压"为目标语 ...

  6. 机器翻译Seq2Seq模型的启发-人工神经网络系统-诞生

    该模型采用了将信息通过某种编码 ,而后通过一个循环神经网络模型解码来实现语言的翻译, 那么我们如果把有的信息都看作是人类的信息,而机器训练需要的数据不是直接的信息,是神经网络的信息,也就是说某个模型的 ...

  7. 开源 | IBM、哈佛共同研发:Seq2Seq模型可视化工具

    作者 | Ben Dickson 译者 | 刘旭坤 编辑 | Jane 出品 | AI科技大本营 近年来随着深度学习和神经网络技术的发展,机器翻译也取得了长足的进步.神经网络结构越来越复杂,但我们始终 ...

  8. 深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大...

    from:https://baijiahao.baidu.com/s?id=1584177164196579663&wfr=spider&for=pc seq2seq模型是以编码(En ...

  9. seq2seq模型_Pytorch学习记录-Seq2Seq模型对比

    Pytorch学习记录-torchtext和Pytorch的实例4 0. PyTorch Seq2Seq项目介绍 在完成基本的torchtext之后,找到了这个教程,<基于Pytorch和tor ...

最新文章

  1. Linux破解系统管理员密码
  2. jee-weapp是一套基于jfinal,dubbo微服务开发的微信小程序商城项目,首次开放全部拼团前后台源码
  3. 【lucene】lucene自定义评分
  4. 存储图片到第三方云服务器
  5. Atitit.手机验证码的破解---伪随机数
  6. intel网卡win10 修改mac
  7. IDEA如何导入项目
  8. java二路归并排序算法_二路归并排序的java实现
  9. Computer Networking——transport layer QA
  10. 转:MySQL 的 my.cnf 文件(解决 5.7.18 下没有 my-default.cnf )
  11. 微信连wifi 电脑怎么连接到服务器,微信连wifi怎么用 微信连Wi-Fi开通使用教程-电脑教程...
  12. c语言捕鱼达人源码,用捕鱼达人去理解C中的多线程.doc
  13. 用python实现bt下载_Python边学边用--BT客户端实现之(一)BitTorrent文件解析
  14. cdoj1087 基爷的中位数 二分
  15. 采购申请、采购订单、供应商
  16. qq浏览器HTML5在哪,qq浏览器wifi助手功能在哪里?
  17. Arduino蜂鸣器与按键的结合
  18. python中int和input的区别_python中input()与raw_input()的区别分析
  19. 从零开始运营微信公众号
  20. Android 技术选型

热门文章

  1. C语言课后习题(39)
  2. MySQL关于时间设置的注意事项
  3. 抢鲜体验:openGauss 安装编译过程要点及问题解决
  4. 4场直播丨站撸Oracle、MySQL、医疗、航空
  5. 离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!
  6. 双11享Go了吗?2017阿里双11在线峰会续写科技盛宴!
  7. 鲲鹏基础软件开发赛道openLooKeng赛题火热报名中,数十万大奖等您来收割
  8. 掌握了开源框架还不够,你更需要掌握源代码
  9. 想了解Webpack,看这篇就够了
  10. 【Python3网络爬虫开发实战】1.3.1-lxml的安装