当前位置:   article > 正文

6_机器翻译与Seq2Seq模型_machine translation by seq2seq model

machine translation by seq2seq model

一、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之后要建立两个字典,一个英语字典,一个德语字典。

image-20210402105925904

分词方法有两种:

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

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

image-20210402110257825

1.2.2 Build Dictionary(建造字典)

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

image-20210402112250160

1.2.3 问题

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

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

image-20210402111235940

  • 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的输入

image-20210402113858566

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 ”

image-20210402115840486

  • 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,希望输出的预测尽量接近标签,也就是停止符,然后再做反向传播,更新模型参数。

image-20210402122115294

1.4.2 Seq2Seq Model in Keras

image-20210402122351886

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

image-20210402123700351

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

二、Summary(总结)

image-20210402131741068

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

三、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.

image-20210402132705123

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只有一个。

image-20210402135436621

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/372491?site
推荐阅读
相关标签
  

闽ICP备14008679号