一、卷积神经网络首层与末层输出的可视化与理解
1. 首层的输出
首层输出的可视化及解释已在第二课中阐述,概述而言,其反应了图像中的边、角、纹理等基础结构特征。
2. 末层输出
卷积神经网络的最后一层输出,为图像的最终用于分类的特征。对于这些特征的解读可从如下角度进行。
- 按照最近邻方法,找出特征相互接近的图片,则可发现特征相近的图片的视觉感受也相近。(呃,这应该归在"显然可见"系列。)
- 使用主成分分析法进行降维展示。一个更优秀的降维方法是
t-SNE
。课程中展示的方法是:使用t-SNE
将用于图片分类的4096维的特征降维成2维,然后按照这二维特征显示的位置,放置原始图片,观察这些图片的空间分布。
二、中间层的输出的可视化与理解
1. 最大化激活函数来解释各神经元的功能
选取所输出特征的某一通道,记录使得该通道的输出值最大的那组图片,通过该组图片推测这一通道所表述的图片特征。
2. 图片遮盖方法
选取图片中某部分,使用像素均值替代该部分,然后输出该图片的正确类别的概率随被遮挡的部分的移动而变化的热力图,以此推断图片中的哪些部分对分类结果的影响最为显著。
3. 显著图
考察对图片的求导结果,其表征着图片中的各个像素发生变化后,最终分类结果会发生什么程度的改变。更直白地说,对图片各个像素求导的结果,反应了图片中各个像素对分类结果的影响程度。
4. 梯度上升法
初始化图片为0,定义损失函数为某类别的得分。针对图像,使用梯度上升法,最大化该损失函数,则会生成最符合该类别的图像。为使得所获得图像更符合自然图像的视觉效果,则在损失函数中加上描述图像光滑程度的正则项。最终,优化目标为
arg
max
I
S
c
(
I
)
−
λ
∥
I
∥
2
2
\arg \max _I S_c(I) - \lambda \|I\|_2^2
argImaxSc(I)−λ∥I∥22
其中某类别
c
c
c的得分
S
c
(
I
)
S_c(I)
Sc(I)可替换为中间层某个神经元的输出,
λ
∥
I
∥
2
2
\lambda\|I\|_2^2
λ∥I∥22为正则项。
-
“愚弄分类网络”
这种方法的一个有趣的应用是产生"愚弄分类网络"的图片。即从任意图片开始,使用梯度上升方法最大化该图片在某一分类上的得分,从而使得分类网络将之判别为该类别。这种做法正是生成对抗网络的基础。
-
特征反演
另一个有趣的应用是生成符合某一特征的图片。如给定一个用于描述图像某类特征的向量 ϕ 0 \phi_0 ϕ0,期望生成一张特征接近 ϕ 0 \phi_0 ϕ0的图片 x x x,该问题可抽象为如下表达:
x ∗ = arg min x ∈ R H × W × C l ( ϕ ( x ) , ϕ 0 ) + λ R ( x ) x^* = \arg\min_{x\in R^{H\times W \times C}} l(\phi(x),\phi_0) + \lambda \mathcal{R}(x) x∗=argx∈RH×W×Cminl(ϕ(x),ϕ0)+λR(x)
其中 ϕ ( x ) \phi(x) ϕ(x)表示图像 x x x的该类特征, l ( ϕ ( x ) , ϕ 0 ) l(\phi(x), \phi_0) l(ϕ(x),ϕ0)为特征之间的差异的某种度量, λ R ( x ) \lambda\mathcal{R}(x) λR(x)为正则项系数。从这一数学表达上来看,该问题正和梯度上升算法相契。-
纹理合成
这种方法的一种应用场合是生成某种纹理 x x x的图片。其做法是:由卷积神经网络,获取纹理样板图片 x x x的特征描述矩阵 F 0 ∈ R C × H × W F_0 \in R^{C\times H\times W} F0∈RC×H×W,然后由之计算
Gram
矩阵 ϕ 0 \phi_0 ϕ0(一个类似于协方差系数的矩阵,描述了特征之间的关联程度,计算复杂度较小),然后利用上述处理方法进行特征反演。 -
风格迁移
将纹理合成以及特征反演结合起来,就可以实现风格迁移。关于风格迁移的研究,还涉及其高效实现[1]和单个网络—多类风格[2]等内容。
-
[1]: Johnson, Alahi, and Fei-Fei, “Perceptual Losses for Real-Time Style Transfer and Super-Resolution”, ECCV 2016.
[2]: Dumoulin, Shlens, and Kudlur, “A Learned Representation for Artistic Style”, ICLR 2017.