CNN神经网络系统的黑与白.docx
《CNN神经网络系统的黑与白.docx》由会员分享,可在线阅读,更多相关《CNN神经网络系统的黑与白.docx(7页珍藏版)》请在冰豆网上搜索。
CNN神经网络系统的黑与白
CNN神经网络系统的“黑”与“白“
▌前言
o关于神经网络内部的知识表达,深究下去是个很复杂的问题,我很难给出一个面面俱到的答案。
所以在这篇知乎里,我从自己两篇AAAI2018的论文说起,只是希望提出问题,抛砖引玉。
o文题中的“黑”与“白”指的是神经网络的black-box的知识表达和我希望的white-box的可解释性模型。
作为博后研究员,我在UCLA带领几个学生探索一种语义层面可解释的神经网络特征表达,或者把black-box网络特征表达转化成white-box图模型。
o文章第一部分主要介绍了神经网络特征表达中可能存在的bias,第二部分,我讨论了如何把一个训练好的神经网络的特征表达转化成一个可解释性的图模型。
▌Potentialrepresentationbias
近年来神经网络已经充分显示出强大的flexibility和classificationaccuracy。
那么,在测试样本上的很高的精确度,能否证明模型表达的正确性呢?
这难道这不是不言而喻的吗?
"ExaminingCNNRepresentationswithrespecttoDatasetBias"inAAAI2018一文分析了ConvolutionalNetwork中可能的biasedrepresentations。
比如在上图中,我们用一个ConvolutionalNetwork去判断一个人是否涂了口红(口红这一属性的分类正确率应该在90%以上)。
然而,当我们人为遮住嘴巴的部分或者ps上另一张嘴时,我们发现神经网络的分类值并没有出现预想中的大幅度的变化。
进一步,当我们把某个conv-layer上的对口红属性敏感的featuremap区域显示出来,我们发现Network其实很大程度上在用眼睛和鼻子区域的特征对口红属性进行判断。
因为在训练样本中,口红往往与精致打扮的眼睛、眉毛、鼻子同时出现,而神经网络使用了co-appearing,butunreliablecontexts去建模对应的属性。
当然了,很多contextualinformation是有意义的,甚至是必不可少的,而另一部分contexts是有问题的。
因为测试样本往往具有与训练数据相似的datacollectionbias,所以在测试样本上的高正确率无法反应这种representationbias。
怎样在少量人工标注的前提下,自动分辨correct和biasedrepresentations?
“ExaminingCNNRepresentationswithrespecttoDatasetBias”一文提出了一种间接检测representationbias的方法。
我们仅仅需要标注一些ground-truth属性关系,比如口红属性与头发颜色没有关系,而是否涂口红与“浓妆艳摸”属性有正相关性,与“男性”属性有负相关性(属性层面的标注数量一般远远少于训练样本数量)。
然后,我们提取神经网络中每个属性与中层conv-layer的featuremaps上触发单元的对应关系。
进一步,基于这种对应关系,我们可以计算出各个属性在神经网络中层表达上的相关性(哪些属性相互正相关,负相关,或不相关)。
这样我们可以通过计算KLdivergenceof标注的ground-truth属性关系和算法挖掘出来的属性关系,来判断biasedrepresentations。
这些biasedrepresentations,包括blindspots(网络没有学习到一些本应改建模的特征)和failuremodes(在哪类样本上可能做出错误的判断)。
▌DisentanglingCNNrepresentationsintographicalmodels
其实在black-box表达中,之前提到的representationbias是很难避免的。
相比之下,传统的white-box图模型往往不存在这样的问题。
因为传统图模型中,每个节点本身往往具有某种语义。
即使模型学到了某种biasedrepresentations,图模型本身的语义结构也会帮助人们很快找到表达的错误。
甚至很多情况下,图模型的结构就是人为手动设定的,这种设计保证了特征的正确性。
但是让人尴尬的是,恰恰是神经网络black-box表达保证了特征提取的flexibility和信息表达的效率(见informationbottleneck理论)。
那么,我们在white-box表达和模型的performance上如何取舍呢?
没有答案。
对于工业界来说,这个问题很简单,毋庸置疑算法的效果决定一切。
然而对于学术研究来说,梦想总是还要有的。
如何能够找到一种white-box的表达方式,同时又具有神经网络表达的flexibility和信息效率,这是一个很难的问题。
很多人说这是不可能的,给出不少理由,而且很多理由是很有道理的。
但是做研究就是要发现新的问题、找到新的解法,如果遇到困难就一帮子打死,那还是不要做研究了。
目前我们团队提出了几个想法,但是距问题的彻底解决还离得很远。
"InterpretingCNNKnowledgeviaanExplanatoryGraph"inAAAI,2018一文提出了用一个graphicalmodel,namelyexplanatorygraph去解释一个Pre-trainedConvolutionalNetwork的conv-layers上的中层表达结构(semantichierarchyhiddeninsideapre-trainedCNN)。
上图充分显示了一个神经网络某个高层conv-layer的混乱的知识表达。
图中,我们列出了四个不同的filters,在不同图像上的featuremap的触发分布状态。
我们可以看到,同一个filter,在第一幅图上被尾巴和脚触发,在第二张图像上却表示了头部。
这样,giventhefeaturemapofaspecificfilterofacertainconv-layer,我们很难从featuremap上看出来每个触发单元所表示的objectparts。
我们要做的工作就是把高层conv-layer中这种混杂的表达拆分开来,表示成一个个子pattern。
o这个filter到底表示了多少种不同的patternsofobjectparts?
o哪些filters的哪些patterns是同时触发的?
o这些同时触发的patterns具有怎样的空间结构呢?
o进一步,Givenafeaturemap,请告诉我每个神经触发的背后对应哪个objectpart?
如上图所示:
o一个explanatorygraph有很多层,分别对应ConvolutionalNetwork的不同conv-layer。
o神经网络的某个conv-layer的某个filter,可能建模了不同objectparts的特征。
算法自动disentanglethemixtureofpatternsfromeachfilter,然后用不同的node去表示这个filter上对应的不同的parts。
oexplanatorygraph中每一个node,表示某个特定的objectpart。
只要这个node被触发,那么代表这个这个node对应的filter检测到了这个objectpart。
这个node需要在空间上去鲁棒物体的shapedeformation或pose的变化,在不同物体上把对应的part检测出来。
oexplanatorygraph中每一条edge,表示相邻两个conv-layer上的两个node/pattern的co-activation关系和空间关系。
o我们可以认为这个explanatorygraph是对神经网络各个conv-layer层的featuremap信息的高度压缩。
一个神经网络有很多conv-layer,每个conv-layer有几百个filter,每个filter输出一个很大的featuremap。
我们把这千千万万个featuremaps上的千千万万输出单元的信息,用几千个nodes表达出来。
即,这些featuremaps表达了那些partpatterns(nodes)?
这些partpatterns分别对应了featuremap的哪些区域?
o一个explanatorygraph的每一层有几千个nodes,这些nodes可以看作一个字典。
任意给定一张输入图像,神经网络可能仅仅触发了explanatorygraph中的一小部分nodes。
上图显示了利用每个graphnode在各个图像上做inference的结果。
每个node只对应一个featuremap上的某个activationpeak,而在不同图像上这个peak往往对应相同的语义。
比如第一个node,表示头部,第二个node表示脚部。
算法:
简单的来说,我们假设每个filter包含了N个patterns(nodes),就像GMM一样,我们用mixtureofpatterns去拟合对应的featuremaps。
同时我们要建模不同conv-layer间patterns的空间关系。
即,本conv-layer层的patterns的位置不但要充分的拟合出当前的featuremap形状,而且要与上一层相关的patterns保持特定的空间关系。
算法的核心就是去学习patterns之间的相关性,去学习每个pattern与上层patterns的空间关系。
我们用这种空间关系去disentanglefeaturemapsofconv-layers。
算法本身很简单。
我们从标准GMM公式中衍生出三、四个新公式,去建模pattern的空间关系。
这里我就不赘述算法细节了。
这个算法隐含了某个前提假设。
即,如果一个pattern可以在上一个conv-layer找到数十个共同触发的patterns,并且这些patterns在各个图像中都保持稳定的空间关系。
那么这一组patterns往往都表示某种特定的objectpart。
▪Evaluationmetric
我们希望把ConvolutionalNetwork转化成一个interpretablegraphicalmodel,那么如何去评价一个特征表达的interpretability是一个很重要的问题。
周博磊在CVPR17提出了一种评价方法。
我们在AAAI18中提出了另一种评价标准,即locationinstability,用来评价某个object-partpattern的interpretability。
我们假设,如果一个pattern在各个图像中,都表示相同的objectpart,那么这个pattern在不同图像上的检测位置与物体上某些ground-truthlandmarks的相对距离应该保持相对稳定。
比如,这个pattern总是被身体和尾巴的连接处触发,那么在不同图像上,pattern的检测位置和尾尖landmark的相对距离应该保持相对稳定(我不考虑蛇等特殊物体类别)。
这样,我们就可以用这些相对距离在不同图像上的标准差,去评价这个pattern的locationinstability。
我们可以设定多个landmarks,计算得到关于各个landmark的locationinstability的平均值。
实验中Nodesintheexplanatorygraph的locationinstability远远低于各个baselines。
▪Potentialapplications
Explanatorygraph可以作为一个事先训练好的视觉字典。
当我们成功训练了一个神经网络去做某个类别的分类时,我们相信这个神经网络的conv-layers已经建模了大量的objectpart特征。
我们的explanatorygraph就是把这些混杂在一起的特征表达,一一拆分出来。
每个node表示了千百个同类物体的共有的part特征,所以这些node有很高的transferability。
这些nodes可以用在one/multi-shotpartlocalization上。
当我标注一个boundingboxofanobjectpart,我可以用这一个boundingbox从explanatorygraph中提取数百个相关的node去表示这个part,从而在新的图像中去定位这个objectpart。
比起传统的方法,我们的方法降低了约1/3 localizationerrors。