看图说话
简介
看图说话,即自动描述图片的内容,有很多的应用,例如帮助盲人更好的理解网上图片的内容。许多之前的想法是把已有的子问题结合起来,而本文用一种端到端的方法、用一种简单的模型,最大化似然函数然产生图片的描述。
基础模型
RNN
为t时刻隐藏层状态,为t时刻输入,则
LSTM
包括三个门,sigmoid输出,范围0~1,输入全为t时刻输入x和t-1时刻隐藏层的状态;一个控制遗忘, 一个决定加入信息量, 当前记忆, 第三个们决定输出信息; 最终, softmax输出ht 即为输出。
我们知道,CNN由于其稀疏连接和权值共享两大特点广泛应用于图片的表示,我们可以将输入图片通过CNN嵌入到一个定长向量中。
而在seq2seq模型中,RNN在自然语言处理如翻译上有良好的表现。其包括一个encoder,将源语句转化为定长向量,以及一个decoder,以该定长向量的隐藏层状态作为输入,产生目标语句。
一个自然的想法就算是用已经在图片分类任务上训练好的CNN作为encoder表示图片,RNN产生语句。
相关工作
如果这个看图说话有人研究,最naive的思想就是手工搭建一个基于规则的系统,但这种系统往往是局限的,如仅在交通信号、体育等方面。
接下来,当图片的识别已经成熟,就可以将得到的信息带入模板,得到描述。
还有一部分,希望将图片和描述映射到同一空间(space),对于图片检索其最近的语句。这种检索式的方法很显然不可能产生原创的描述,即产生不了之前未见过场景的正确描述。
当然也有神经网络方面的工作,如输入图片,用一个神经网络预测下一个词,最近也有用RNN去预测下一个词的,还有用神经网络将图片和语句嵌入到同一空间。
但是,作者所用的神经网络更强大,更直接,自然效果更好。
模型
设 为模型参数,S为描述,I为输入图片,我们想最大似然,即
S可表示为, 从而上式变为
模型为CNN 加 LSTM,称为NIC;训练使用迁移学习的技巧,使用已经训练好的CNN,将CNN的输出当作 输入LSTM。
采样(sample)是按一定概率选择输出值,beamsearch是每次根绝top-k大的之前的信息,输入模型,选出结果中top-k大的结果。
实验
评价指标
1. 人工打分1-4,取平均
2. BLEU, METEOR, CIDER
3. ranking metrics: recall@k, median rank
数据集
训练细节
CNN初始化为已有模型参数,如imagenet;采用现有的word embedding,但结果没有提升,因此最后没有用。
产生多样化的结果
即考虑原创性,取top-k生成的语句,k越大,原创性语句越多。
rank结果
rank结果证明该模型同样适用于rank
人类评测
证明了BLEU区分不出人的描述和模型的描述。
嵌入分析
虽然此前如没有用,但学到的嵌入反映了词之间的关联。