八、神经网络(下)
8.4 深度学习的应用案例
前面,作为使用深度学习的例子,我们主要讨论了手写数字识别的图像类别分类问题(称为“物体识别”)。不过,深度学习并不局限于物体识别,还可以应用于各种各样的问题。此外,在图像、语音、自然语言等各个不同的领域,深度学习都展现了优异的性能。本节将以计算机视觉这个领域为中心,介绍几个深度学习能做的事情
8.4.1 物体检测
物体检测是从图像中确定物体的位置,并进行分类的问题。之前介绍的物体识别是以整个图像为对象的,但是物体检测需要从图像中确定类别的位置,而且还有可能存在多个物体。
对于这样的物体检测问题,人们提出了多个基于CNN的方法。这些方法展示了非常优异的性能,并且证明了在物体检测的问题上,深度学习是非常有效的。
在使用CNN进行物体检测的方法中,有一个叫作R-CNN的有名的方法。图8-18显示了R-CNN的处理流
注意图中的“2.Extract region proposals”(候选区域的提取)和“3.Compute CNN features”(CNN特征的计算)的处理部分。这里,首先(以某种方法)找出形似物体的区域,然后对提取出的区域应用CNN进行分类。 R-CNN中会将图像变形为正方形,或者在分类时使用SVM(支持向量机), 实际的处理流会稍微复杂一些,不过从宏观上看,也是由刚才的两个处理(候选区域的提取和CNN特征的计算)构成的。
在R-CNN的前半部分的处理——候选区域的提取(发现形似目标物体的处理)中,可以使用计算机视觉领域积累的各种各样的方法。R-CNN的论文中使用了一种被称为Selective Search的方法,最近还提出了一种基于CNN来进行候选区域提取的Faster R-CNN方法。Faster R-CNN用一个CNN来完成所有处理,使得高速处理成为可能。
8.4.2 图像分割
图像分割是指在像素水平上对图像进行分类。如图8-19所示,使用以像素为单位对各个对象分别着色的监督数据进行学习。然后,在推理时,对输入图像的所有像素进行分类。
之前实现的神经网络是对图像整体进行了分类,要将它落实到像素水平的话,该怎么做呢?
要基于神经网络进行图像分割,最简单的方法是以所有像素为对象,对每个像素执行推理处理。比如,准备一个对某个矩形区域中心的像素进行分类的网络,以所有像素为对象执行推理处理。正如大家能想到的,这样的方法需要按照像素数量进行相应次forward处理,因而需要耗费大量的时间(正确地说,卷积运算中会发生重复计算很多区域的无意义的计算)。为了决这个无意义的计算问题,有人提出了一个名为FCN(Fully Convolutional Network)[37]的方法。该方法通过一次forward处理,对所有像素进行分类(图 8-20)。
FCN的字面意思是“全部由卷积层构成的网络”。相对于一般的CNN包含全连接层,FCN将全连接层替换成发挥相同作用的卷积层。
如图8-20所示,FCN的特征在于最后导入了扩大空间大小的处理。基于这个处理,变小了的中间数据可以一下子扩大到和输入图像一样的大小。 FCN最后进行的扩大处理是基于双线性插值法的扩大(双线性插值扩大)。
8.4.3 图像标题的生成
给出一个图像后,会像图8-21一样自动生成表示该图像内容的文本。比如,左上角的第一幅图像生成了文本“A person riding a motorcycle on a dirt road.”(在没有铺装的道路上骑摩托车的人),而且这个文本只从该图像自动生成。文本的内容和图像确实是一致的。并且,令人惊讶的是,除了“骑摩托车”之外,连“没有铺装的道路”都被正确理解了。
一个基于深度学习生成图像标题的代表性方法是被称为NIC(Neural Image Caption)的模型。如图8-22所示,NIC由深层的CNN和处理自然语言的RNN(Recurrent Neural Network)构成。RNN是呈递归式连接的网络,经常被用于自然语言、时间序列数据等连续性的数据上。
NIC基于CNN从图像中提取特征,并将这个特征传给RNN。RNN以CNN提取出的特征为初始值,递归地生成文本。我们将组合图像和自然语言等多种信息进行的处理称为多模态处理。
8.5 深度学习的未来
8.5.1 图像风格变换
如图8-23所示,如果指定将梵高的绘画风格应用于内容图像,深度学习就会按照指示绘制出新的画作。
8.5.2 图像的生成
刚才的图像风格变换的例子在生成新的图像时输入了两个图像。不同于这种研究,现在有一种研究是生成新的图像时不需要任何图像(虽然需要事先使用大量的图像进行学习,但在“画”新图像时不需要任何图像)。比如,基于深度学习,可以实现从零生成“卧室”的图像。图8-24中展示的图像是基 于 DCGAN(Deep Convolutional Generative Adversarial Network) 方法生成的卧室图像的例子
图8-24的图像可能看上去像是真的照片,但其实这些图像都是基于DCGAN新生成的图像。也就是说,DCGAN生成的图像是谁都没有见过的图像(学习数据中没有的图像),是从零生成的新图像。
DCGAN中使用了深度学习,其技术要点是使用了Generator(生成者)和Discriminator(识别者)这两个神经网络。Generator生成近似真品的图像,Discriminator判别它是不是真图像(是Generator生成的图像还是实际拍摄的图像)。像这样,通过让两者以竞争的方式学习,Generator会学习到更加精妙的图像作假技术,Discriminator则会成长为能以更高精度辨别真假的鉴定师。两者互相切磋、共同成长,这是GAN(Generative Adversaria Network)这个技术的有趣之处。
之前我们见到的机器学习问题都是被称为监督学习(supervised learning)的问题。这类问题就像手写数字识别一样,使用的是图像数据和教师标签成对给出的数据集。不过这里讨论的问题,并没有给出监督数据,只给了大量的图像(图像的集合),这样的问题称为无监督学习(unsupervised learning)。无监督学习虽然是很早之前就开始研究的领域(Deep Belief Network、Deep Boltzmann Machine 等很有名),但最近似乎并不是很活跃。今后,随着使用深度学习的DCGAN等方法受到关注,无监督学习有望得到进一步发展。
8.5.3 自动驾驶
最近,在识别周围环境的技术中,深度学习的力量备受期待。比如,基于CNN的神经网络SegNet[42],可以像图8-25那样高精度地识别行驶环境。
图8-25中对输入图像进行了分割(像素水平的判别)。观察结果可知,在某种程度上正确地识别了道路、建筑物、人行道、树木、车辆等。今后若能基于深度学习使这种技术进一步实现高精度化、高速化的话,自动驾驶的实用化可能也就没那么遥远了。
8.5.4 Deep Q-Network(强化学习)
就像人类通过摸索试验来学习一样(比如骑自行车),让计算机也在摸索试验的过程中自主学习,这称为强化学习(reinforcement learning)。强化学习和有“教师”在身边教的“监督学习”有所不同。
强化学习的基本框架是,代理(Agent)根据环境选择行动,然后通过这个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是决定代理的行动方针,以获得更好的报酬
图8-26中展示了强化学习的基本框架。这里需要注意的是,报酬并不是确定的,只是“预期报酬”。
在使用了深度学习的强化学习方法中,有一个叫作Deep Q-Network(通称DQN),该方法基于被称为Q学习的强化学习算法。这里省略Q学习的细节,不过在Q学习中,为了确定最合适的行动,需要确定一个被称为最优行动价值函数的函数。为了近似这个函数,DQN使用了深度学习(CNN)。
之前在学习电子游戏时,一般是把游戏的状态(人物的地点等)事先提取出来,作为数据给模型。但是,在DQN中,如图8-27所示,输入数据只有电子游戏的图像。这是DQN值得大书特书的地方,可以说大幅提高了DQN的实用性。为什么呢?因为这样就无需根据每个游戏改变设置,只要给DQN游戏图像就可以了。实际上,DQN 可以用相同的结构学习《吃豆人》、Atari等很多游戏,甚至在很多游戏中取得了超过人类的成绩。
8.6 小结
- 对于大多数的问题,都可以期待通过加深网络来提高性能。
- 在最近的图像识别大赛ILSVRC中,基于深度学习的方法独占鳌头,使用的网络也在深化。
- VGG、GoogLeNet、ResNet等是几个著名的网络。
- 基于GPU、分布式学习、位数精度的缩减,可以实现深度学习的高速化。
- 深度学习(神经网络)不仅可以用于物体识别,还可以用于物体检测、图像分割。
- 深度学习的应用包括图像标题的生成、图像的生成、强化学习等。最近,深度学习在自动驾驶上的应用也备受期待。