深度学习基础—Seq2Seq模型

1.Seq2Seq模型

假设我们进行机器翻译任务,输入一个法语句子:"Jane visite I'Afrique en septembre.",将它翻译成一个英语:"Jane is visiting Africa in September."。

seq2seq模型有编码器和解码器组成,编码器是RNN网络,可以是GRU单元,也可以是LSTM,如上编号1 所示。编码器接受所有词向量后,得到一个输出向量,将输出向量输入到解码器中。

解码器每次输出一个翻译后的单词,一直到输出序列的结尾或者句子结尾标记。解码器的结构和编码器不太一样,它把每次生成的标记都传递到下一个单元中来进行预测,就像之前用语言模型合成文本时一样。

深度学习基础---序列采样https://blog.csdn.net/sniper_fandc/article/details/143457214?fromshare=blogdetail&sharetype=blogdetail&sharerId=143457214&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

类似翻译任务,我们也可以用相似的结构做图片描述任务。假设输入猫咪图片,经过预训练的AlexNet网络(上图编号2)作为编码器,让其学习图片的编码,去掉最后的softmax单元(编号3),AlexNet网络会输出一个4096维的特征向量。接着把这个向量输入到RNN中(编号4),RNN要做的就是生成图像的描述,和seq2seq解码器的结构相似,最终可以输出图片的描述。

网络的结构已经了解,但是网络如何根据结果优化参数呢?也就是生成的翻译或描述的句子,怎么能确定这个句子就是我们最希望得到的?

2.选择最可能的句子

用绿色(编号2)表示encoder网络,用紫色(编号3)表示decoder网络。decoder网络和编号4的语言模型几乎一模一样,机器翻译模型其实和语言模型非常相似,不同在于语言模型总是以零向量开始,而encoder网络会计算出一系列向量来表示输入的句子。decoder网络就可以以encoder网络的输出开始,而不是以零向量开始,所以它叫做条件语言模型(conditional language model)。相比语言模型,输出任意句子的概率,翻译模型会输出句子的英文翻译。

现在我们可能得到4条翻译后的语句,如上图所示。显然,第一个句子最好,但是并不是从得到的分布中进行随机取样,而是要找到一个英语句子使得条件概率最大化,即上图编号1的公式。现在我们希望找到一种算法,可以使条件概率最大化,那是否可以使用贪心算法呢?

假设贪心算法挑选出了"Jane is"作为前两个词,因为在英语中going更加常见,于是对于法语句子来说"Jane is going"相比"Jane is visiting"会有更高的概率作为翻译,但在模型中这不是一个最好的选择。

而且,词典中单词有很多,词组也有很多,但是我们不能去计算每一种组合的可能性,因为这样的组合数是指数级的。因此我们会采用近似的搜索算法,也就是下一篇博客的集束搜索。

相关推荐
Kai HVZ5 分钟前
《计算机视觉》——图像拼接
人工智能·计算机视觉
楼台的春风16 分钟前
图像金字塔
图像处理·人工智能·opencv·算法·计算机视觉·matlab·嵌入式
数学人学c语言1 小时前
记录torch运行的bug
python·深度学习·bug
UQI-LIUWJ1 小时前
论文笔记:Scaling Sentence Embeddings with Large Language Models
论文阅读·人工智能·语言模型
阿正的梦工坊2 小时前
PyTorch torch.logsumexp 详解:数学原理、应用场景与性能优化(中英双语)
人工智能·pytorch·python
iracole3 小时前
深度学习训练camp:第R4周: Pytorch实现:LSTM-火灾温度预测
人工智能·pytorch·python·深度学习·lstm
做怪小疯子3 小时前
跟着李沐老师学习深度学习(十六)
人工智能·深度学习·学习
啥都鼓捣的小yao3 小时前
课程1. 深度学习简介
人工智能·python·深度学习
tianyunlinger3 小时前
BAG: Body-Aligned 3D Wearable Asset Generation
人工智能·笔记·3d
浮生如梦_3 小时前
手眼标定3D空间位姿变换
人工智能·计算机视觉·3d·视觉检测·人机交互