2017-12-05 | Paper Notes | UNLOCK

Paper Notes :Show and Tell A Neural Image Caption Generator

Fig1. 图像描述示例

Paper 1: Show and Tell: A Neural Image Caption Generator

本文[1]是Google的工作,介绍了一种end-to-end的方式来完成image caption 任务。借助于语言翻译的经验,翻译是将Source 语言转换到Target语言,类比于此,Image Caption可以看成是从image 到caption的一个翻译过程,因此建立优化目标,

优化目标

其中S={s1, s2, …, },S代表生成的sentence,有特定vocabulary中的词生成,theta是待优化的参数,I 是输入图像。
因此模型优化目的就是在输入特定图像I的情况下,找到一系列词,使得这些词构成一个sentence的概率最大。P(S|I)是所有词的join probability ,根据chain rule得到下式,

语言模型

模型总体架构如下图。

模型架构

在encoder 阶段,利用CNN网络学习出image的vector representation,之后送入decoder结合标注的sentence中的词序列来训练decoder。如下图所示:

网络

训练细节如下:

  • 对于标注的sentence,在首尾加上起止符号作为标记
  • 在encoder阶段,只用CNN network最后一层输出的vector representation作为image特征表示
  • decoder采用LSTM,
  • encoder阶段输出的image feature 只用来初始化LSTM hidden state,(文中提到,尝试将feature 与每个 time step 的输入St进行结合,发现效果并不好,反而会造成过拟合)
  • 每个time step 的词St 初始为one-hot表示,通过网络自主学习参数。(文中提到,尝试采用pre-trained word2vec进行初始化,实验结果并没有太大的提升,因此文中最后采用前面所说的方式)
  • 统计损失,如下图:

Loss

  • 采用SGD优化算法, 固定学习率, no momentum
  • LSTM memory size 和word embedding size设为512,(因此image feature 也必须转为相同的shape才能用来初始化hidden state)

Inference 阶段文中提到了两种方式:

  • Sampling, 采样,首先根据输入图像I ,LSTM输出一个词的概率p1,(LSTM输入词S的embedding 是随机初始化的结果),然后再计算出下一个词p2,依次往复,直到采样到结束符或者达到指定长度。
  • BeamSearch, 每个time step t都选择top k个最好的sentence,然后根据这些在t+1时间步生成k个概率最高的句子,最终选择概率最高的结果返回。

以上就是整个paper的主要思路,想对还是比较清晰简单。

评论加载中