开门见山。最近阅读了一篇论文,加上看了一些之前的工作。记录一下,CNN到底学到了什么东西,或者换句话讲。到底是什么样的特征在影响着CNN的性能?
先放论文:IMAGENET-TRAINED CNNS ARE BIASED TOWARDS TEXTURE; INCREASING SHAPE BIAS IMPROVES ACCURACY AND ROBUSTNESS
论文地址:https://openreview.net/pdf?id=Bygh9j09KX
JeremyRifkin在书《The end of Work》中写道,“时至今日,当科学家们探讨人工智能时,他们通常是在讲一门能执行人们所希望机器表现的智能艺术”。这是我比较喜欢的关于人工智能的定义。因为它避免了大谈特谈如今的人工智能技术离真正的智能化有多远。而是享受当下。不过,作为一名研究人员,我觉得揭开大脑的运作原理和创造真正的智能机器是非常重要的。目前深度学习主要做的研究是关于从数据中学到规则并将其自动化的一个过程。这已经带来了非常多的好处,举一个简单的例子。在医学领域引入深度学习技术,可以将许多诊断过程全自动化,因此可以让贫穷地区或国家的人们享受到顶级的治疗。
开篇完毕,现在进入正题。尽管深度学习技术的到来给人们的生活带来了更多的便利。但是神经网络看待和解释世界的方式仍然是一个黑盒子。因此我们需要尝试更好的理解它,以便我们对深度学习网络做出进一步的改进,以及尝试去解释某些深度学习行为。有两种主要的方法可以尝试理解神经网络。一种是在数据集中查找导致特征图有高激活响应值的图片,另一种是在随机的一张图片中,通过优化像素值来生成模式。接下来,通过一些例子来展示一下,CNN到底学到了什么?
特征可视化
这本书《Deep Learning with Python》里面讲了如何生成模式。包括滤波器是如何响应模式(纹理)等。接下来我们先观察一下这些模式。以VGG16为例。
第7层卷积(64,128)
图1:滤波器12,16,86,110(从左到右,从上到下)
第14层卷积(128,256)
图2:滤波器1, 6,31,32,54, 77(从左到右,从上到下)