在Tensorflow中使用Deep Learning构建图像标题生成器(1)
图像字幕模型体系结构介绍
结合CNN和LSTM
2014年,谷歌的研究人员发布了一篇文章“ 显示和告知:神经图像字幕生成器”。当时,这种架构在MSCOCO数据集上是最先进的。它利用CNN + LSTM将图像作为输入并输出标题。
使用CNN进行图像嵌入
卷积神经网络可用于创建密集的特征向量。这种密集的矢量也称为嵌入,可用作其他算法或网络的特征输入。
对于图像标题模型,此嵌入变为图像的密集表示,并将用作LSTM的初始状态。
LSTM
LSTM是一种经常用于时间相关性问题的递归神经网络结构。它能够成功捕获关于先前状态的信息,以更好地通过其存储单元状态通知当前预测。
LSTM由三个主要部分组成:a forget gate, input gate, and output gate。这些门中的每一个都负责更改单元内存状态的更新。
用图像作为初始状态进行预测
在句子语言模型中,LSTM预测句子中的下一个单词。同样,在字符语言模型中,考虑到先前看到的字符的上下文,LSTM试图预测下一个字符。
在图像标题模型中,您将创建图像的嵌入。然后这个嵌入将作为初始状态被馈送到LSTM中。这成为语言模型的第一个先前状态,影响下一个预测的单词。
在每个时间步,LSTM考虑先前的细胞状态并输出序列中最可能的下一个值的预测。重复此过程直到结束令牌被采样,表示字幕结束。
字幕作为搜索问题
生成标题可被视为图搜索问题。这里,节点是单词。边缘是从一个节点移动到另一个节点的概率。寻找最佳路径涉及最大化句子的总概率。
抽样和选择最可能的下一个值是生成标题的贪婪方法。它在计算上是有效的,但可能导致次优结果。
给定所有可能的单词,计算所有可能的句子并确定最佳句子在计算上或空间上效率都不高。这排除了使用诸如深度优先搜索或宽度优先搜索的搜索算法来找到最佳路径。
束搜索
束搜索是一种广度优先的搜索算法,可以探索最有前景的节点。它会生成所有可能的下一个路径,每次迭代只保留前N个最佳候选路径。
由于要扩展的节点数量是固定的,因此该算法具有节省空间的特点,并且允许比最佳优先搜索更多的潜在候选项。
评论
到目前为止,你已经学会了如何创建一个模型架构来生成一个句子,给定一个图像。这是通过利用CNN创建密集嵌入并将其作为初始状态馈送到LSTM来完成的。另外,你已经学会了如何用波束搜索生成更好的句子。
在下一节中,您将学习如何从Tensorflow中的预训练模型生成字幕。