一个学校的作业,这里我用自己的话解释了一下这个领域的一些工作,是一个简单的总结,给对这个领域不是很了解,但是有一定机器学习基础的读者。说了很多方法,这些方法都是有据可依的,引用自下面的论文,
可以自己查询后去跑一下对应的程序。
从hinton提出浅层神经网络开始,机器学习和人工智能的研究方向就从原本的潜能学习,传统机器学习,转向了深度神经网络……尽管存在着反对的声音,这个领域也尚有很多争议,但是深度神经网络的确在许多方面颠覆了以往的机器学习,例如语音识别,图像处理等等。在当前的人工智能+互联网的浪潮下,抓紧机遇给予个人以发展,迎时代之新需求,也算是一条比较光明的道路。
其中近两年来发展的比较好的就有Image Caption领域。一切要从计算机视觉,深度学习和在图像分类中的案例学习开始。虽然机器与图片信息之间存在着语义鸿沟,而且二维的图像使得图中原本的事物就已经丢失了许多信息,但是目前的许多图像理解的方法已经初见成效。
对于人类来说,我们能感知到远近、深浅、悲欢,这类空间、时间、情绪信息,然而对计算机来说,它所能做的从以前还只是感知到边缘的一些曲线,到现在的使用CNN提取出一些低抽象,高抽象的信息和特征,虽然尚且不够,但对于理解信息来说,已经有了一定的帮助。
一个重要的问题是,计算机若要“理解”图像,那么,图像分类,也就是,图中有什么成了一个很重要的问题,在这方面,深度学习已经是非常重要甚至是唯一的方法了。我们从基于样板的图像理解说起。
基于样板的图像理解通过“填空”[1]的方式来完成简单的图像理解任务。在小学的时候,我们其实也像计算机一样做过类似的训练。基于样板的方法可以生成在语法上正确的说明文字。然而,样板都是提前定义好的,而且不能生成长度可变的解释。还有人提出了基于检索的图像理解。这样的理解实际上是从一些已经存在的说明文字池中找出一个最合适的。所以,可以猜到,对于某些不一样的图,得到的文字描述总是不那么贴切,而且是重复的。这个方法并不能生成针对某个图片具体的准确的描述。
编码-解码架构[4]则有了很大进步。它将图像信息进行卷积特征提升,然后由RNN获得对图像的注意来进行一个字一个字地生成。NIC(神经网络图像理解)[2]方法就是用CNN来当编码器,对图像进行预训练分类,然后使用最后的隐层作为对生成句子的RNN(LSTM)解码器的输入,解码器的记忆里存储了长时和短时视觉和语言的信息。但是这种方法也有一些缺点,比如:通过观察它的代价函数可知,它是通过最大化图像正确解释的条件概率来进行训练的,而在梯度上有冠词,介词的干扰,还有一些无法通过梯度传达的词等等。
从而根据上述缺点,引入了Neural talk[3]的方法。它把语言模型作为一个丰富(足够大)的标签空间,并且对图像区域生成描述。再引入了Attention机制,根据注意的区域来生成对应的单词。然而缺点也是明显的,当词汇是语言模型生成的时候,图片的注意力并不知道该放在哪里,于是出现了注意力漂移的现象,什么时候应该是语言模型生成的,什么时候是图像生成的,我们并不知道。
针对它的这个缺点,不仅要知道“看哪里”,还要知道“什么时候看”。来自非视觉的单词的梯度会误导和消除总体的在生产理解文本过程中的视觉信号信息,所以我们需要自适应的注意力机制和引入视觉哨兵[5](可以理解为解码器已经知道关于图像的隐层表达),检查什么时候该是什么部分起作用。第二种处理关于“什么时候看”的方法利用了“填空”[6]的技巧,它给图片中的物体和对象留了一些插槽,然后让网络根据图片中的信息进行填空,这样减少了对语言模型的依赖,然而格式固定,又绕回到了之前的问题[8]。
上述方法都是基于整体的,不重叠部分的,硬边缘的处理,也就是说,即使图片里没有“看”到具体的这个东西,但是网络还是会强制给一个标注区域。然而现实世界中,我们观察事物实际上是有重叠的,软边缘的。这就引出了自底向上的注意力机制[7],它使用了FRCNN(非极大值区域),支持可重叠的区域。到了这里,终于有了一点真的智能的感觉了,从图中也可以看出,结构非常复杂,但是效果很好。
如果能从图中提取到更好的特征,那么效果也会有一定的提升[10]。所以人们又从另一个方向开始努力,对编码器进行改进。例如基于单词检测的方法[12],从图中检测到目标,得到一些单词,然后根据单词生成句子,对这些句子进行排名。有正袋和负袋之分,这是一种弱监督的多实例学习,其中完全无语言模型,只基于最大化交叉熵去测试袋中是否含有单词w,鼓励用到所有的避免重复的单词。
虽然上述方法已经能从小学低级别的填空,选最合适的描述图片的句子,进化到小学高级别可以比较正确、准确地描述图片了。然而人们仍然不满足于此,作为人类,不同的人有不同的思维,他们对同一张图片也有不同的描述方式,然而机器相对而言就很死板,这都是因为它们采用了BLEU[11](词间距)的方法去评价,从词典采样去拟合,其实也可以算是某种程度上的八股文,或者已经知道了评价标准的某种“作弊”。于是,人们针对生成提高句子的保真度,自然度,多样性的问题,又提出了用条件GAN(CGAN)结合图像信息和噪声,去生成更自然灵活的句子。首先这里的条件GAN是由于图像信息的限制,又由于文本模型无法直接按照梯度传导到LSTM中,所以需要使用一个策略梯度,将强化学习的奖励转化为策略梯度,才能进行反向传播。这里的G比起E来说更难以训练,虽然他们都是一样的对称的结构,但是word是离散的梯度,难以处理,需要用到一些例如MC Search(蒙特卡洛搜索),策略梯度的方法进行处理。这是由生成器和判别器的特性决定的,实际上判别器进行判别时,生成器只有半句话生成,所以需要蒙特卡洛方法进行虚拟补全,补全后再进行判别。这样基于部分句子就能进行评价了。策略梯度则使得离散的词向量可以进行梯度传导。
上面这些方法大都是有监督学习,“看图说话”。然而,人们的野心是没有止境的,自从GAN方法被应用于图像理解,又有人提出了无监督的图像理解[14]。其主要结构其实与上面的GAN结构非常相似,而且仍旧是用CNN把图像编码,然后丢到LSTM网络里面去逐字生成单词,在t时刻,句子从St到Pt在语料库里采样,获得对抗奖励,用对抗奖励去进行重构损失。其中,生成器应该受到语料库的指导,同时又不太一样,使用了强化学习的方法进行训练。对根据语言模型生成的内容和根据图片生成的内容和原文进行对比,产生对抗损失,要确保围绕图像来生成语言。它的缺点也是很显然的:1.不稳定,需要初始化,是基于概念的图像检测。2.语料库和和生成图的语料不一致,也就是说,比如语料库里没有dog这个词,图里有狗,图的语料库里有狗这个词,生成模型永远也无法理解dog是什么,他们之间存在沟壑。3.语料库与图像库应该尽量重复。
学会看图说一句话后,又朝着新的进展:学会看图写文章。这就更进一步了。要写多少句子,围绕什么话题,都是需要关注的。基于等级的循环神经网络就给出了一种方法。它分解图像为一些探测到的对象,然后在这些区域上综合特征去生成一个总的代表表达了这图的语义,把这些特征向量作为等级的循环神经网络的输入组合为两级:句循环神经网和词循环神经网络。
此外还有一些基于医学的生成医药报告等等的应用……
2.该领域所面临的主要挑战分析
在某些需要比较固定格式的领域,机器生成能很好地代替人类,比如医学报告,通知文书等等。未来,随着图像理解技术的成熟,可以发展到视频理解,根据短视频写新闻报道等等。目前,针对编码器的改进尚未完全,用条件GAN生成句子也存在很多问题,比如:梯度传导问题的解决,自由度过高,语义鸿沟等等……有待进一步解决和提升。视频图像理解中的摄像机位置变动,空间信息理解,都有很多需要改进的地方。图像理解目前上述的方法实际上很大程度上依赖于语言,一些动词,比如fly,ride都是语言模型生成的。如何学习这些关系?目前已经有人提出了组合映射到另一空间的方法,但是它也有比如概率小的、但也可能发生的事件训练不到的问题等等……
尽管距离真正的人工智能还非常遥远,但是我们至少在不断向前;比起无望的等待,做好面前能做的事才是正确的选择。有一句话说,人工智能是“光照到哪里,我们就在哪里找钥匙”。目前也的确只能这样。
3.潜在的解决方案分析与讨论
1.更好的编码器:目前使用得比较多的CNN特征提取,还可以设计更好的编码器。
2.强化学习的应用:目前也有人提出了一些强化学习方法,和自然语言结合,用自然语言改进基于强化学习的图像字幕。
3.迁移学习的应用:只听到老师在提到语料库和图库对应的时候提到过,但是并不非常了解……大概就是学习了一个模型,把它的一些参数改改,还能用到另一个模型上。
4.无监督学习:虽然训练困难,但是更灵活。
4. 该领域未来发展趋势预判
总体方向:
从有监督到半监督到无监督。
从具体概念学习到抽象概念学习:如从学习图中有猫,狗,到学习图中有骑,划(船)等更加抽象的概念。
从分离到端到端。例如编码器——解码器:图片输入到编码器,而后提取特征,经过多层网络的训练等等,输出结果。
从死板到灵活,更注重多样化。例如CGAN的应用,判别标准的变化等等。
从特殊到一般:从小数量集到大数量级。
从看图填空、选择句子到看图说话,到看图写短文。任务复杂度提升。
5.主要参考文献
[1] 2013-BabyTalk- Understanding and Generating Simple Image
Descriptions(PAMI)[2] Show and Tell- A Neural Image Caption Generator(google)
[3] Show, Attend and Tell- Neural Image Caption Generation with
Visual Attention[4] Long-term Recurrent Convolutional Networks for Visual Recognition
and Description- Video caption[5] Knowing When to Look- Adaptive Attention via A Visual Sentinel
for Image Captioning[6] Neural Baby Talk 2018
[7] Bottom-Up and Top-Down Attention for Image Captioning and Visual
Question Answering[8] Deep Visual-Semantic Alignments for Generating Image Descriptions
李飞飞-RCNN[9] A Hierarchical Approach for Generating Descriptive Image
Paragraphs[10] 2018(CVPR) Convolutional Image Captioning
[11] BLEU
[12] Improving Image-Sentence Embeddings Using Large Weakly Annotated
Photo Collections[13] Unpaired_Image_Captioning_ECCV_2018_paper
[14] Unsupervised Image Captioning