CS231n 笔记 神经网络可视化上

目录

问题引出

可视化模型学到了什么

可视化卷积核

 可视化最后一层的特征

近邻法

维度压缩

可视化激活值

理解输入图片像素

识别重要的像素

maximally activating patches

遮挡实验

​Saliency Map

通过Guided backprop生成图片

通过梯度上升可视化特征

Adversarial perturbations



问题引出

人们经常把CNN看做黑箱,所以CNN到底干了些什么


可视化模型学到了什么

可视化卷积核

通过可视化卷积核,知道卷积核在寻找什么。让模板向量和另一个向量相乘,得到标量结果,当这两个向量匹配(match up)的时候,结果最大化(比如,让一个向量与自己相乘,结果最大)。

比如,将AlexNet中第一层64个尺寸为3*11*11的卷积核展示位64个11*11、3通道的图片。

可以看到,几个模型中第一层卷积核都在寻找有向边(oriented edge)

中中间层权重的可读性比较差。下面的中间层是将每一个卷积核(16*7*7)展开成16个图片,看不出来这些权重在寻找什么特征。因为这些权重是与第一层的输出相连,而不是直接与图片相连,所以我们看到的是第一层什么样的特征能让第二层最大激活,然而第一层卷积特征在图片上的展示是不好解读的

 可视化最后一层的特征

近邻法

将一些图片送入CNN,收集他们在最后一层的4096维特征向量,用L2近邻法将这些特征向量与第一列(红线左侧)测试图片的特征向量比较,红线右侧是得到的近邻。观察第二行的大象,红线右侧第三个大象位于右侧,而测试图片位于左侧,按道理讲他们的像素几乎完全不同(almost entirely different),但是特征向量差别不大,据此Justin认为特征向量捕捉的是图片的语义内容

维度压缩

mnist数据集图片尺寸28*28,运用t-SNE将28*28维的原始像素特征空间压缩成2维,可以看到下图中的自然集群,这些集群对应了mnist数据集中的数据

 将大量图片送入CNN,收集他们的4096维特征向量,通过t-SNE降维把4096维特征空间压缩到2维特征空间

可视化激活值

 

AlexNet第五层的激活结果是13*13*256向量,其中一个GUP给出的结果是13*13*128向量,将这些向量可视化为128张图片(因为只有1个通道,所以图是灰色的)。测试图下面的那个图片是右边绿色框内图片的放大,可以看到该层激活量的一个slice(即feature map)正在寻找类似人脸的东西

 

 Yosinski et al, “Understanding Neural Networks Through Deep Visualization”, ICML DL Workshop 2014
 

理解输入图片像素

识别重要的像素

maximally activating patches

图像中什么样的块可以最大限度地激活不同的神经元。取AlexNet中第五层卷积层的第17个通道,将大量图片送入AlexNet,记录下每个图片在该通道的值,找到该通道中被激活程度最大的neuron(即该feature map / channel中的一个标量),记录下输入图片中对应于该neuron的感受野(即图片中的一块图像)。由于卷积的性质,一个通道中的神经元(标量)共享权重,换句话说,一个通道由且只由一个卷积核产生,于是通过上面的操作,可以知道这个卷积核在寻找什么特征。

比如下图中的第一行对应于某个卷积核,说明网络中特定层的该卷积核寻找的是输入图像中蓝色的圆形物体。底部的几行对应于同一神经网络的较高层中最大化激活了neuron的图像块,因为他们来自于较高层,所以具有更大的感受野,可以感受到输入图像中更大的图像块,可以发现他们在寻找输入图像中较大的结构

遮挡实验

输入图像中的哪个部分导致CNN做出分类决定。在图像中遮挡某个区域,然后替换成图像值的平均像素值,送入CNN,得到预测概率

将遮挡住的区域多换几个位置(划过整个图片),绘制热力图heat map,热力图显示了预测概率与遮挡区域的关系。概率下降越大,说明遮挡的区域越重要。红色是低预测概率,黄色是高预测概率


Saliency Map

计算分类得分关于输入图片每个像素的梯度。图片中每一个像素的扰动,对该分类得分的影响有多大。能看到下图中小狗的轮廓。

 

在语义分割中可以用到Saliency Map,尤其是在没有标签的情况下。可以细分出图像汇总的对象,不过效果与有监督学习的情况相比,要差的多

通过Guided backprop生成图片

选取网络中间层的neuron(maximally activating patches选取的是中间层的一个channel),计算它关于输入图片像素的梯度,得到输入图像的哪个部分会影响该neuron的得分。计算的时候可以采用 Saliency Map。在方向传播的时候对算法进行微调,只传播正梯度,不传播负梯度。

这种方式更容易得到更清晰(cleaner)、更好(nicer)的图像,该图像说明哪些像素影响了那个特定的神经元。下图分别展示了maximally activating patches和Guided backprop 的结果。第一行右边显示了圆形区域对神经元的影响,和左边一样。

 

通过梯度上升可视化特征

 什么样的输入会激活特定neuron:权重保持固定,合成图片,来最大化某个中间层neuron对某个分类的得分。需要正则项防止生成的图片像素过拟合,让生成的图片自然些

计算过程

 右边是生成的图像

 使用Gaussian blur,得到的图片更平滑

 

 使用相同的方法使特定中间层中的neuron最大化激活,从而知道该neuron在寻找什么

下图中八张图片都是杂货店,虽然第一排和第二排差别很大。在优化过程中考虑多模态multi modality,把这两种杂货店图像都模拟出来了

Adversarial perturbations

比如,选一个大象的图片,改变这张图片以让网络对考拉的得分最大化。涉及到对抗性机器学习,pytorch官网上有教程,讲的更为详细Adversarial Example Generation — PyTorch Tutorials 1.12.1+cu102 documentation

(1) Start from an arbitrary image
(2) Pick an arbitrary class
(3) Modify the image to maximize the class
(4) Repeat until network is fooled

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340