11.10 更多应用
由于章节所限,我们不能一一介绍卷积神经网络的所有应用。但是卷积神经网络几乎可以解决所有的图像问题,下边我们再来简要看几种应用。
11.10.1 人脸识别
人脸识别的核心思想是让神经网络学习如何将人脸图像转换为一个紧凑且具有判别性的数字向量(称为特征向量或嵌入向量),使得同一个人的不同照片对应的向量非常相似,而不同人的照片对应的向量差异很大。我们让卷积神经网络最后一层的神经元的输出作为一个人脸照片的特征向量。
训练时,每组训练数据包含一个基准人脸照片(anchor),同一个人的另一张照片(positive),不同人的照片(negative)。损失函数让anchor生成的向量和positive生成向量尽可能的接近,而anchor和negative向量的距离尽可能的远。
11.10.2 风格迁移
风格迁移像是给图片加一个滤镜,改变图片的风格。你需要提供两个图片,一个是内容图片,一个是风格图片。神经网络的任务是将风格图片里的风格迁移到内容图片中。
风格迁移的基本思想是,神经网络浅层学习到的是纹理,线条等细节信息,深层学习到的是高级的语义信息。风格迁移的网络是拿一个预训练好的的卷积神经网络。比如在ImageNet上训练好的VGGNet,它的各层已经可以很好的提取图片特征了。在训练时并不更改网络参数,而是修改内容图片(输入图片的RGB值在反向传播时被修改)。
保持语义 修改的原理是选取网络深层的某一层,要求生成图片这一层激活值尽可能和内容图片一致,这样保证图片的语义信息不变。
迁移风格 抽样网络浅层,深层等不同的几个层,要求生成图片在这几层各个通道之间的特征图的相关性尽可能和风格图片保持一致。为什么特征通道的相关性就能代表风格呢?假设一个通道识别的是斜的线条,另一通道识别黄色。那这两个通道同时被激活或者同时被抑制,相关性高,表明图片中的风格总是容易出现黄色的斜线条。如果生成图片网络各层通道相关性与风格图片一致,则两个图片的风格就一致。
11.10.3 AlphaGo
Google在围棋AI,AlphaGo里也应用了卷积神经网络。仔细想来,围棋和图片一样都具有“局部性”和“平移不变性”。每一部分的棋和自己周围的棋关系最大,而且同样的模式,不论在棋盘哪个位置,解法都差不多。 所以Alpha Go将棋盘视为图像: 围棋棋盘是一个 19x19 的网格,每个交叉点可以处于三种状态之一:空、黑子、白子。AlphaGo 非常巧妙地将当前的棋盘状态视为一个 19x19 像素的“图像”。每个像素点的“颜色”代表了该点的状态。为了提供更多信息(如“气”、征子、打劫等局部特征),这个“图像”实际上有多个通道。例如:
通道1:当前位置是否有己方棋子。
通道2:当前位置是否有对方棋子。
通道3:当前位置是否是空的。
通道4:己方棋子有多少“气”。
通道5:对方棋子有多少“气”。
通道6:上次落子位置(针对打劫规则)。
等等...
这样,一个复杂的围棋局面就转化为一个多维张量(例如 19x19xN),非常适合作为 CNN 的输入。然后预测下一步的落子。
11.10.4 其他应用
卷积神经网络几乎解决了计算机视觉的所有问题,而且它还可以被应用到其他领域。就像应用在围棋领域一样。只要这个领域满足“局部性”和“平移不变性”就可以。比如我们可以利用卷积神经网络来进行城市规划,输入的每个通道可以是公路,人口,住宅,办公区,河流,绿化,医院,学校等信息,同时这些信息都具有“局部性”和“平移不变性”。