(5) 重复 (2) 以设定其他的梯度分数向量。我们基于一个随机噪声的图像开始,并对目标类(也就使用了上述的梯度分数向量进行逆传播的那一类)进行梯度上升操作,我们会生成一个图像,它能改进神经网络对目标类的激活状态。从数学上来说,令 I 代表一个图像,y 代表一个目标类,Sy(I) 则是神经网络赋给图像 I 在 y 类上的分数。我们希望解决如下的最优化问题:
也就是说,我们希望找到一个图像 I?,它能够最大化神经网络赋给 y 类的分数。在如上的等式中,R 是一个正则化项。正则化项改进了输出图像的可视化程度(参见 Simonyan 等人,Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps,ICLR Workshop 2014)。这个内容在去年完成,它论述了类的分数问题。但是,该技巧可以被应用到神经网络中的所有节点上。我们从某个随机图像开始正向传播,直到到达了我们想要研究以及可视化的层为止。对该层中的任一神经节点,重复该步骤(即设定其他梯度分数为 0、目标对象梯度值为 1、在图像上反向传播),以检查哪种图像会最大程度地激活神经网络中的神经节点。注意,这些技巧中都有正则化项,以避免对抗的图像。不同的正则化方案侧重图像的不同方面,以判断我们认为的「正常的」图像。所以,它们会对这些试验的结果有很大影响。 ii. 特征反演(Feature Inversion) 另一个可以探讨的问题是:给定一个卷积神经网络的「编码」(特征代表,可以理解为是神经网络中某一层的输出值),能否根据其重构原来图像?如下的技巧就试图实现这一功能。它分为三步: (1) 向网络中传入一些输入图像; (2) 忽略输入图像; (3) 在某些层对输入进行反向传播,直到在网络中找到这样的层,能够生成与输入图像相同的「编码」(在这一层学到的特征表示)的图像。 从数学上看,令 I 代表一个输入图像,φl(I) 为卷积神经网络 φ 中的激活层 l。我们希望解决如下优化问题:
也就是说,我们希望找到一个图像 I?,它与图像 I 在神经网络 φ 中的 l 层有相似的特征表示。其中 ||.||2 是代表 L2 范数,R 是正则项(可能是隐式的)。 概括来说,我在这里的想法是,要储存一个图像,只需存储图像的「编码」就行了。我们可以根据上述方法使用这些「编码」来重构图像(尽管有损失)(参见 Yosinski 等人,"Understanding Neural Networks Through DeepVisualization",ICML 2015 Deep Learning Workshop)。 总的来说,这项技术允许我们看到,atv,图像是如何通过一组特定「编码」(特征代表)在神经网络上被恢复的。 VIII. 卷积网络中的对抗图像 对抗图像,是对原有图像加入很小的扰动而构成的图像;这些扰动由数据集的数据构成,被特意设定为最坏情况。由此,神经网络会错误地给这个新形成的图像很高的概率。在实践中,我们可以取任一被正确标记的传入神经网络的图像,并基于其它对抗图像对其添加扰动值。
我们无意探讨过深的数学细节,但这种情况发生的原因是因为神经网络常有很高的维度,因此,它有着内在的线性本质。直觉上说,我们考虑如下的线性例子:令 x 为一输入图像,w 为该模型的权重值,则获得输出的运算就是 x 和 w 之间的内积,即 wTx。如果我们以 η 来轻微地对输入进行扰动,我们则得到 x¯ = x + η。那么,输出就便成了 x¯ = wT x + wTη。这种对抗扰动导致激活值增长了 wTη。进而,我们可以在某些关于 η 的限制条件下(通常是正则化约束)最大化该项以引起模型中的问题。但是,随着问题维度的不断增加,我们可以在满足正则化条件的情况下,对 η 向量施加很多小的扰动。这些细微的变化加在一起,最终会对输出造成很大的变化。 另一种考察不同模型间对抗图像的方法,是将他们视为对抗扰动在模型权重向量下高度对齐的结果。这是因为如上解释中所说的内容:这些小的改变迫使该线性模型专注某一个信号,该信号和模型的权重值最相近;即便其它 (从正确图像中得来的) 信号有更大的振幅也是如此。 IX. Deep Dream 实验
图注:Deep Dream GitHub:https://github.com/google/deepdream (责任编辑:本港台直播) |