可视化神经网络的一些方法
2016-12-21 18:11
225 查看
原文为http://cs231n.github.io/understanding-cnn/
可视化CNN学到的东西
有一些方法可以用来理解和可视化CNN, 作为对深度学习不可解释的论述的反击。
1. 可视化激活值和第一层卷积的权重
最直接的可视化方法就是展示在前向传播(forward pass)网络中的激活值(activation)
对于带relu的网络,激活值的map在开始的层会密集,之后逐渐稀疏。
一个陷阱是你可以注意到一些map,他们对于不同输入,永远响应是全零图。(换句话说,他们对于网络没有贡献)
他们成为了dead filter,这可能是由于高的learning rate导致的。
第二个方法是可视化网络中的权重。 通常第一个conv的filter是最容易解释的,但也是可以可视化其他filter。
在well-trained的网络中filter往往记忆了一些好看和平滑的filter,如果出现了noise 的可视化结果可能你网络没有train足够,
或者正则项太小了(weight decay),导致过拟合了。
2.找图片中 激活值最大的区域
另一个可视化技巧是 拿一堆图片把它们前馈到网络中,找到图片中哪一部分激活值最大。
然后我们可以画出图片。看看对应的receptive field。
(接受域:这个值之前从那些区域的值计算得到的。比方你一次3*3卷积得到一个value,这个value的接受域是3*3
如果3*3中每个值,是由再之前原图3*3得到的,我们不考虑overlap的话,这个value在原图的接受域就是9*9)
3. 用tSNE来embedding
convent是把图片慢慢变成一个表达(这个表达最后可以用线性分类器分类)的过程。
我们可以把图像embedding到2维表达,然后用二维画到图上表达相似的关系。
在这些embedding 到2维方法中,比较有名的方法是tSNE产生视觉上pleasing的结果。
首先,产生一个embedding,我们需要用一些图片通过CNN(比如Alexnet,最后fc 4096维的结果)
我们把他扔到tSNE中每张图得到对应的一个2维向量。然后我们可以把这个2维向量看成坐标,扔到grid里。
4. 遮挡图片的一部份
假设Convnet识别出了一条狗。那么会不会是狗的背景,让cnn识别出狗,而不是狗本身呢?
一种方法是 遮挡图片的一部分 然后看狗那一类的激活值。
按照我们所想,如果遮住狗的话,那判断为狗的激活值应该显著下降。
可视化CNN学到的东西
有一些方法可以用来理解和可视化CNN, 作为对深度学习不可解释的论述的反击。
1. 可视化激活值和第一层卷积的权重
最直接的可视化方法就是展示在前向传播(forward pass)网络中的激活值(activation)
对于带relu的网络,激活值的map在开始的层会密集,之后逐渐稀疏。
一个陷阱是你可以注意到一些map,他们对于不同输入,永远响应是全零图。(换句话说,他们对于网络没有贡献)
他们成为了dead filter,这可能是由于高的learning rate导致的。
第二个方法是可视化网络中的权重。 通常第一个conv的filter是最容易解释的,但也是可以可视化其他filter。
在well-trained的网络中filter往往记忆了一些好看和平滑的filter,如果出现了noise 的可视化结果可能你网络没有train足够,
或者正则项太小了(weight decay),导致过拟合了。
2.找图片中 激活值最大的区域
另一个可视化技巧是 拿一堆图片把它们前馈到网络中,找到图片中哪一部分激活值最大。
然后我们可以画出图片。看看对应的receptive field。
(接受域:这个值之前从那些区域的值计算得到的。比方你一次3*3卷积得到一个value,这个value的接受域是3*3
如果3*3中每个值,是由再之前原图3*3得到的,我们不考虑overlap的话,这个value在原图的接受域就是9*9)
3. 用tSNE来embedding
convent是把图片慢慢变成一个表达(这个表达最后可以用线性分类器分类)的过程。
我们可以把图像embedding到2维表达,然后用二维画到图上表达相似的关系。
在这些embedding 到2维方法中,比较有名的方法是tSNE产生视觉上pleasing的结果。
首先,产生一个embedding,我们需要用一些图片通过CNN(比如Alexnet,最后fc 4096维的结果)
我们把他扔到tSNE中每张图得到对应的一个2维向量。然后我们可以把这个2维向量看成坐标,扔到grid里。
4. 遮挡图片的一部份
假设Convnet识别出了一条狗。那么会不会是狗的背景,让cnn识别出狗,而不是狗本身呢?
一种方法是 遮挡图片的一部分 然后看狗那一类的激活值。
按照我们所想,如果遮住狗的话,那判断为狗的激活值应该显著下降。
相关文章推荐
- ubuntu下Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法
- windows 下Keras中神经网络可视化模块安装配置方法
- 提高IOCP 效率的一些方法,技巧 (来自WINDOWS 网络编程第二版)
- 提高IOCP 效率的一些方法,技巧 (来自WINDOWS 网络编程第二版)
- 网络中arp中毒的一些解决方法
- 新版Matlab中神经网络训练函数Newff的使用方法
- 多层神经网络优化难题与解决方法
- 介绍一些在网络编程中常用的工具方法
- 个人对sparse在神经网络学习中的一些理解
- 神经网络与机器学习 第一讲(3)——一些简单的神经元模型
- 无法访问.您可能没有权限使用网络资源.局域网无法访问共享,局域网无法访问打印机的一些方法
- 数学建模高级方法(七):自组织竞争神经网络
- 网络服务器设计的模型及一些设计方法(转)
- 局域网中网络邻居响应慢的一些解决方法
- 提高IOCP 效率的一些方法,技巧 (来自WINDOWS 网络编程第二版)
- 神经网络路径匹配实现GPS轨迹交友的系统及方法
- 神经网络预测的一些的思考
- 提高IOCP 效率的一些方法,技巧 (来自WINDOWS 网络编程第二版)
- linux系统的网络设置的方法和一些参数
- 无法访问.您可能没有权限使用网络资源.局域网无法访问共享,局域网无法访问打印机的一些方法