循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记

Sequence to sequence model

前面已经提到在机器翻译等应用场合需要对应一个序列输入,给予一个序列的输出,此时对应的 RNN 架构为 many-to-many RNN,并且此时输入和输出均为多个,且不需要相等。对应输入序列部分称为编码器,而对应输出部分则成为解码器。当给予网络足够多的输入,输出对时,网络可以通过训练达到较好的翻译效果。

Many-to-many RNN with different input and output length

类似的还可以采用 CNN 架构的基础上将输出层之前的全连接层传递给 RNN,实现图片的自动标题添加。

机器翻译中的最优解

机器翻译的架构与普通的语言模型架构相比就是多了编码器部分。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第1张图片
Machine translation as building a conditional model

在机器翻译过程中,为了得到最好的翻译结果,需要设定一个目标函数来评价结果的好坏,此时我们可以选择如下这个函数:

  • argmax ∏P(yt|x, y1, ... , yt-1), 其中 t = 1, 2, ... , Ty

Beam Search

基于普通的 RNN,GRUs,LSTM 架构的网络对于既定的输入给出下一个最可能的单词是非常容易的,但如果希望输出一个序列的结果,则需要在网络架构的基础上添加更加优化的搜索算法。在一般性的训练中,网络会被给予正确的输入/输出对,使得网络获知输入和输出之间的临近关系。更进一步地,可以通过将前一个输出结果作为后一个输出的输入来生成一个新的序列,但这种方式的问题在于如果第一个输出的结果就是错误的,那么网络后续生成的结果很可能是毫无意义的序列,由于在每一步都是将输出结果作为极大似然估计值,这种操作方式成为 greedy search。

与其只依赖一个序列的结果,Beam Search 使得网络可以同时考虑多个序列的生成结果,并将这个数量定义为 B,在此基础上在第二步运行贪心算法,并最终挑选出相应 B 个最大概率的结果,再依次类推。在下图中 B 选择的是 3,第二步输出的最大概率为 in september, jane is 以及 jane visits,因此网络会自动的根据概率拒绝之前将 september 作为第一个输入的情况。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第2张图片
Beam search with beam width of 3

Beam search 的优化

上面提到的这个目标函数在实际运算时是多个小数乘法,此时很容易由于多次连乘而造成下溢,因此可以通过对这个连乘函数取对数得到如下的目标函数:

  • argmax ΣlogP(y|x, y<1>, ... , y), 其中 t = 1, 2, ... , Ty

进一步地,这个函数由于结果是一个负数,且句子越长其负数越小,因而如果直接应用算法会倾向于较短的句子,为此可以对于长度做一个标准化:

  • argmax ΣlogP(y|x, y<1>, ... , y) / Ty, 其中 t = 1, 2, ... , Ty

在实际应用中还可以对 Ty 这个数值进行弱化,而将分母设置成 Tyα,这个 α 可以视作一个超参数,且一般令 α = 0.7

在实际的生产环境中,随着 B 的数量的增加,算法的计算量也随之增加,一般选择 10 以上以实现较好的效果,但这个取值也不是越大越好。

Beam Search 误差分析

当进行误差分析时我们需要了解 Beam Search 算法和 RNN 架构对于误差的贡献程度,以确定改进的方向。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第3张图片
Error analysis on beam search

基于上面这个判断逻辑,可以通过对于验证集中的数据进行统计,进而确定二者对于误差的贡献率。

Bleu Score

在实现机器翻译时,很可能算法给出的多个结果都是可以接受的,此时如何选择其中的一个作为最终的结果就需要设置一个可以由算法来自动实现评价的 Bleu 评分,这里 Bleu 是 Bilingual evaluation understudy,代表对于人类评分的一个替代。最直观的理解 Bleu评分是在实际训练中会将人类的翻译结果作为验证集的一部分,进而对于机器翻译中与人类翻译相似度,例如词汇的重合度,最高的结果将获得更高的 Bleu 评分。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第4张图片
single word Bleu evaluation

在评价翻译的准确度时,仅仅针对单个词汇是不够的,因此在实际应用中还可以针对多个词汇的组合进行评价:

图中的 countclip 统计的是词汇组合在两个参考翻译中各自出现的次数的最大值,例如对于 on the 在两个参考翻译中都出现了 1 次,因此最大值是 1。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第5张图片
2 gram Bleu

一般性地,n-gram 的 Bleu 评分的计算形式如下:

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第6张图片
Bleu score evaluation

最终在计算多个 grams 的评分的基础上累计计算总的评分值:

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第7张图片
Bleu in practice

这个算法的优点在于其可以提供一个单一的、客观的评价指标来自动化的实现评估,其更伟大之处在于这个算法的实现已经开源,因此可以直接应用在生产环境中。

Attention 模型

前面所述的 sequence-to-sequence 模型都是针对编码器-解码器形式的网络,这种网络架构对于较长的序列的记忆(编码)和生成(解码)能力较差,究其原因是其要求网络记忆较长的序列,而人类的实际翻译工作中也不是记忆完整的句子,而是逐个部分的去分割操作, Attention 模型灵感源自于此。

循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记_第8张图片
image.png

参考阅读

  1. Neural Machine Translation

  2. Beam search introduction

  3. Attention and Augmented Recurrent Neural Networks

你可能感兴趣的:(循环神经网络-第三周-吴恩达 Deep Learning Specialization 学习笔记)