规避这个问题的一个可行的方法就是“束搜索(Beam Search)”。这个算法通过递归的方法在最多长度为t的句子里寻找k个最好的候选者来生成长度为t+1的句子,且每次循环都仅仅保留最好的那k个结果。这样就可以去探索一个更大的最佳的字幕空间,同时还能让推断在可控的计算规模内。在下图的例子里,算法维护了在每个垂直时间步骤里的一系列k=2的候选句子(用粗体字表示)。
图4 来源:Daniel Ricciardelli 局限和讨论 神经图片字幕生成器给出了一个有用的框架,能学习从图片到人能理解的图片字幕间的映射。通过训练大量的图片-字幕对,这个模型学会提取从视觉特征到相关语义信息的关系。 但是,对于一个静态图片,我们的字幕生成器是关注图片里有利于分类的特征,而这并不一定是有利于字幕生成的特征。为了改进每个特征里与字幕相关的信息量,我们可以把这个图片向量模型(这个用来编码特征的VGG-16模型)作为整个字幕生成模型的一部分。这就可以让我们能更精细地调优图片编码器来更好地承担字幕生成的角色。 而且,如果我们去仔细地观察生成的字幕,就会发现它们其实相当的模糊与普通化。用下面这个图片-字幕对为例:
图5. 来源:Raul Puri,图片来自MS COCO数据集 这个图片当然是“长颈鹿站立在树旁边”。但是如果看看其他的图片,我们就可能注意到它会对于任何有长颈鹿的图片都生成“长颈鹿站立在树旁边”,因为在训练集里,长颈鹿通常都出现在树的附近。 下一步工作 首先,如果你想改进这里介绍的模型,请阅读以下谷歌的开源“Show and Tell网络”。它可以用Inception-v3图片向量和MS COCO数据集来训练。 目前最前沿的图片字幕模型包含了一个视觉注意力机制。可以让模型在生产字幕时,发现图片里的引起兴趣的区域来有选择地关注图片内容。 同时,如果你有对最前沿的字幕生成器的实现感兴趣,请阅读这个论文《展示、关注和说出:使用视觉注意力的神经图片字幕生成》 注意:别忘了访问GitHub上与这篇文章对应的Python代码和iPython notebook。 这篇博文是O’Reilly和TensorFlow的合作产物。 作者介绍: Raul Puri Paul Puri是加州大学伯克利分校CO 2017届毕业的本科生研究人员。Raul已经对多个领域的研究项目做出了贡献,包括但不限于:机器人和自动化、计算机视觉、医疗成图、生物记忆设备等。不过所有这些研究工作都专注于机器学习和机器学习系统在安全、自主驾驶、自然语言处理、计算机视觉和机器人里面的应用。Raul也非常热情于通过教授应用机器学习概念课程来回馈社会。他还是多门伯克利分校机器学习课程的助教和讲师。 Daniel Ricciardelli (责任编辑:本港台直播) |