一、摘要
为了阐明神经网络高级(深层)卷积层中的知识表示,提出了一种将传统卷积神经网络(CNNs)变为可解释性CNN的方法。在此可解释性CNN中,深层卷积层中的每个卷积核代表一个特定的对象部分。我们的可解释CNNs使用与普通CNNs相同的训练数据,而不需要对对象部分或纹理进行额外的注释来进行监督。这说明在学习过程中,CNN自动给深层卷积层中的每个卷积核分配一个对象部分。我们可以将我们的方法应用于不同类型、不同结构的神经网络。在可解释性CNN中,显性的知识表示可以帮助人们理解CNN内部的逻辑,即CNN记忆了哪些模式(存在在卷积核中)来进行预测。实验表明,可解释CNN中的卷积核比传统CNN中的卷积核在语义上更有意义。
解释:在此可解释性CNN中,深层卷积层中的每个卷积核代表一个特定的对象部分。例如下图中只反应了猫的嘴这一部分,而下方图像则包括了猫的头,有的还包括了身体和手。好处:我们的可解释CNN中的过滤器是由某个特定部分激活的。这样我们就可以明确的在CNN中记忆哪些对象部分进行分类,不会产生歧义。
二、算法-前向
1、结构(黑线部分)
2、conv(从下到上) :卷积操作不解释
- 输出:M*N*N
3、ReLu
- 输入:M*N*N
- 输出:M*N*N
- 公式:max(0,输入)
4、Masks
- 掩码意义:表示一组训练图像,代表属于类别c的子集。对于任意一个卷积核构造n*n个模板,因为每个模板对应特征图x中每个被激活的位置的理想激活情况,每个模板与特征图x尺寸一致。负模板用于区分是否属于当前类别。
- 构造掩码:对于任意位置的模板以位置为中心按L1距离进行衰减,其值域为。对于负模板,为元素为的n*n矩阵。
5、Masked
- 计算公式:,此时的模板对应特征图中激活值最大的位置,表示此卷积核对这一特征征反映最激烈。
- 目的:去除或弱化特征图中的其他激活点。
- 实例:对于原始的特征图可能包含很多激活的位置(红点),选取的模板为理想的单一特征激活状态。第三行表示处理后的特征图,此时激活状态比较集中。
三、算法-后向
1、结构(红线部分)
2、Loss for filter
- 公式
- 解释:其本质是特征图与模板之间的互信息,最小化的目标是负X(feature map)和T(template)的互信息(希望互信息大,X和T相关性高),计算条件概率p(X|T)使用softmax转换的X和T的相似度(X和T的dot)。
- 推导:本文中的互信息公式MI的推导
3、反向conv(从上到下) :反向传播
- 公式:第二项为原始CNN的梯度求解,不做解释;第一项为模板与特征图间的损失
- 简化:随着训练,对于任意一个激活位置xij会与模板T对应,因此不必计算激活位置与所有模板的对应损失。这个公式使用了近似方法以减少计算量,这个公式保证当Image属于filter的目标类时,T会指定为某个模板,否则会分配给负模板。确定每个filter的目标类别:哪个类别的图激活filter最多,就给filter指定为哪个类别。
- 推导:
4、反向ReLu(从上到下) :反向传播不解释
四、理解Loss
这一节从filter的分类,和filter对模式定位两个方面分析上述公式时如何保证低熵的。在这里,我们将所有正模板的集合T+定义为一个单独的标签来表示类别c。我们使用负模板T-来表示其他类别。
- 公式:根据相对熵公式可知,第二项为类间相对熵(表T'与T+的关系),第三项为空间熵(表激活位置分布T+的熵)