Show and Tell: A Neural Image Caption Generator论文阅读笔记-----2015年发表

1 总结

文章内容

提出一个基于深度循环架构(deep recurrent architecture )的生成模型。这个模型结合了计算机视觉和机器翻译的最新进展。能够生成描述图像的自然句子。
模型训练的目标:通过最大化目标描述句子在给定训练图像下出现的概率来优化模型。换句话说,模型的目标是学会根据给定的图像生成与之相关的正确描述。通过最大化目标描述句子的概率,模型可以更好地学习到图像和描述之间的联系。具体来说,模型会根据已有的图像和对应的目标描述句子来学习概率分布,以便在输入新图像时,能够生成最符合图像内容的描述句子。通过训练,模型可以逐渐提高生成正确描述句子的能力。

达到的成就(评价指标):

  • 此前在Pascal数据集上效果最好的BLEU-1分数是25,此模型达到了59,人类表现是69
  • 在Flickr30k上的BLEU-1分数从56提高到了66。
  • 在SBU上,从19提高到了28.
  • 在最新的COCO数据集上,BLEU-4分数达到了27.7,是目前最好的结果。

解决的问题

给定一个图片,能够生产描述图像的自然句子(Image Caption).

存在的问题/可以改进之处

模型分数在现在不算高。
图像特征仅仅只在开始的时候以bias的形式传入RNN,只关注了全局特征,模型也是学习到了一种模板然后再往里面进行填词等等。(基于CNN模型提取特征,LSTM用于接收全局特征信息)
作者希望未来可以实现无监督的Image Caption,输入一堆不相关的图片和文本,模型可以自主学习。

阅读此论文需要关注的终点

这篇论文中的深度循环架构是什么?

2 论文介绍

2.1 介绍

  • 帮助视障人士更好地理解网络上的内容。
  • 图像描述的难点:首先,图像描述不仅必须捕获图像中的对象,还得表达这些对象之间的关系以及他们的属性和涉及的活动。其次,还必须表达语义知识,因此需要语言模型。
  • 以前对于图像描述任务的尝试,基本是将子问题的现有解决算法缝在一起。
  • 此论文想提出一个单一联合模型:
    • 输入为图像I
    • 输出是目标单词序列S = {S1, S2, . . .},每个单词St来自给定的字典,它充分地描述了图像。
    • 目标函数是最大化似然函数P(S|I),是指希望这个模型在输入图片后,能够输出最可能的单词序列来描述这张图片,即在训练时,模型能够输出P(S|I)的最大值。其中,S是由单词构成的描述序列,I是输入的图片。
  • 此文的灵感来自于当时机器翻译的最新进展:
    • 通过最大化P(T|S)将源语言编写的语句S转换为目标语言的翻译T
    • 思路:“编码器”RNN读取源语句,并将其转换为长度固定的特征向量,而这些特征向量又被用作生成目标句子的“解码器”RNN的初始隐藏层状态。最后使用“解码器”RNN来生成目标语句。然后用CNN代替编码器的RNN。
    • 编码器的目的在于抽象特征为固定长度向量,而CNN已被证实具有描述图像特征的功能,因此可以余弦训练图片分类模型。
    • CNN可以通过将输入图像嵌入到固定长度的向量中来生成输入图像的丰富表示,从而使该表示适用于各种视觉任务。
    • CNN作为图像编码器进行图像分类任务预训练,使用最后一个隐藏层作为生成句子的RNN解码器的输入。
  • 在这里插入图片描述本文的贡献:
  • 提出了一个解决图像描述任务的端对端系统,是一个完全可以使用随机梯度下降进行训练的神经网络;
  • 结合了当时CV和NLP领域最先进的子网络模型;
  • 在数据集上达到了出色的效果。

2.2模型

目标函数:最大化给定图像的正确描述的概率: 其中I是输入图像,S是正确的图像描述,θ是模型的参数。
在这里插入图片描述
S可以表示任意语句,它的长度是不确定的。
因此,使用链式法则对S0到Sn的联合概率建模。也就是应用链式法则对对数似然函数进行分解,句子S由N个词组成,每一个词对应于一个时刻t,故而有:
在这里插入图片描述为了方便起见,删掉了对θ的依赖。对于输入图像I,输出句子S的概率为每一时刻生成对应词St概率的乘积,如果取对数概率,则分解为每一时刻词对数概率的和。
训练中,(S|I)是一对样本对,使用随机梯度下降在整个训练集上优化对数概率之和,使其最大。
使用RNN对P(St|I,S0,S1,…,St-1)进行建模,0-t-1为止的可变词数由固定长度隐藏层或内存ht 表示。看到新的输入xt后,使用一个非线性函数f来更新该内存。
在这里插入图片描述
为了使上述RNN模型更具体,有两个重要的问题需要考虑:

  • f的确切形式是什么?(LSTM长短期记忆网络)
  • 如何将图像和单词作为输入xt表示?(使用CNN从图像提取特征,来表示图像)

2.3基于LSTM的句子生成器

在训练和设计RNN时,最常见的挑战是处理梯度消失和爆炸的问题,这也是选择f的重要考量,因此选择了LSTM长短期记忆网络。
在这里插入图片描述

  • LSTM的核心是一个记忆单元(memory cell)C,它对每个时间步(time step)中观察到的输入知识进行编码。记忆单元的行为由三个“门”控制,分别是输入门(input gate)、输出门(output gate)、遗忘门(forget gate)。它们由三个具有sigmoid激活函数的全连接层处理, 以计算输入门、遗忘门和输出门的值。 因此,这三个门的值都在(0,1)的范围内。图中带圆圈的σ表示带激活函数的全连接层。
  • 输入的数据:当前时间步和前一个时间步的隐状态作为数据。
    在这里插入图片描述这个定义没看懂

2.4训练

在这里插入图片描述

  • LSTM模型与CNN图像嵌入器和词嵌入相结合。蓝色对于与2.3第一个图的循环链接,所有LSTM共享相同的参数。
  • 将每个单词表示为维度等于词典大小one-hot向量St。(LSTM学习推荐去看李宏毅的视频)
  • S = (S0, . . . , SN )是描述图像的句子。S0表示一个特殊的开始词,Sn表示一个特殊的停止词。它指定句子的开始和结束。停止词表示LSTM发出一个句子已经生成结束的信号。图像和单词都映射到同一空间,图像使用CNN,单词使用词嵌入We。
  • 图像I仅仅在t=-1时输入一次,以告知LSTM有关图像内容的东西,凭经验验证,在每个时间步馈送图像作为额外输入会产生较差的结果,因为网络可以显式地利用图像中的噪声并且更容易过度拟合。
  • 通过预训练的InceptionNet提取图像的特征,然后将softmax前一层的数据作为图像编码过后的特征,传入LSTM。在这个图中少了一个图像嵌入矩阵,为了输入匹配,图像特征V还要乘以一个Wi,从而在维度上等于We*S。同样,图中在P1-Pn的位置少了一个输出变换矩阵Wo,要将中间变量转换成目标文字。
  • 采用对数损失函数:

在这里插入图片描述

  • 输出:第一个是采样,我们只是根据 p1 对第一个单词进行采样,然后提供相应的嵌入作为输入和样本 p2,继续这样,直到我们对特殊的句尾标记或某个最大长度进行采样。第二个是 BeamSearch:迭代地将截至时间 t 的 k 个最佳句子集合视为生成大小为 t + 1 的句子的候选者,并仅保留其中得到的最佳 k 个句子。
  • 本文的实验中采用BeamSearch的方法,beam大小为20。如果将beam大小取为1,结果会降低2个BLEU点数。

参考资料

https://blog.csdn.net/hongbin_xu/article/details/84793030
https://blog.csdn.net/m0_37731749/article/details/80520144

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值