change_yourself

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

学习visualizing and understanding convolutional networks

 

    最近因为看Factors in Finetuning Deep Model for Object Detection with Long-tail Distribution时,文章中提到了关于类别数目不均,会使分类结果下降。文中研究了关于微调对结果的影响,文中神奇的一点就是用两百个类中数目相比要大的类去调整整个网络,得到的结果和用两百个类同时去调整的时候,效果差不多。因此同时,文中用了动物分类中两种鼠类,在特征层的可视化的结果图1用有数量差别的类去训练得到的是关于类别特征不全的特征eg 仅仅学到了关于松鼠的脑袋的轮廓。然而其他特征例如(耳朵的形状,尾巴,身体)都没学到。学到的特征的泛化性就减弱。相比之下另外的一点就用搜索树(cascaded hierarchical)图2,进行学习,通过这种方式学习可以改善让许多的特征在同一张特征图里表达由于样本数目的影响而带来的表达底效性。 同时这也包含这对知识的继承性。我认为这是最大的亮点。

                              

                              图 1

图 2

 

 前面这篇文章中提到了一些关于特征的可视化的东西,所以就决定拜读一下visualizing and understanding convolutional networks这篇文章的亮点还是挺多的,虽然第一遍没有读个所以然,但是多读几遍就体会更深了,读很多英语的论文都是这块的。文章中用了一个类似自编码结构的网络图形。形如图3.

这样做能使特征层学到的东西,重构回像素的空间中去。由此去判断是那些部位的像素值产生这样的feature。注意仅仅是作用于卷积层。通过visualiz在验证集的激活最大的9个map( the top

9 activations in a random subset of feature maps across the validation data)通过图3的方法实现,上面的过程自己的理解用lenet举例。

在每个输入的过程中,在sample之后有许多的map,选择包括两个方面,一个是输入的类别,另一个是输出的激活。选择之后得了一张重构和本身的图片。这样可以清楚的看出激活的作用的区域。

 

图中可以察觉到,层越高学到的东西越和类别相关,而底层则学习到一些与类别无关的东西。此外还有一张特征图反应了训练过程中,底层收敛得快,而高层则相对较慢。

看这张图时要横着看,分别是{1.2.5.10.20.30.40.60}次时迭代结果。ps 看上去是有这么一会事  哈哈

还有就是通过特征图去发现训练中的问题。

说明一下,一三是没有改进之前,使用的是步长为4,滤波器大小(11*11),和相比改进步长为2,滤波器小4时的时候,得的的特征图在直观上看起来是更平滑。最后一点就是利用遮盖特征部分,查看分类的效果的方法。去判断是否学到了和特征有关的东西。

从左到右,注意小方块在第一列中,掩饰住特征部分,第二列是第五层的特征激活,最后一张是特征重构。后面两张是蒙上之后后的类别。

 

 

 

posted on 2016-08-20 16:03  change_yourself  阅读(76)  评论(0)    收藏  举报