Note for Understanding Neural Networks Through Deep Visualization

2023-05-16

Note for Understanding Neural Networks Through Deep Visualization

Abstract

近年来,在训练大型深度神经网络方面取得了巨大进展,其中包括训练卷积神经网络识别自然图像。 然而,我们对这些模型如何工作的理解,特别是他们在中间层执行的计算,已经落后了。通过开发更好的可视化和解释神经网络的工具,这一领域的进展将进一步加速。 我们在这里介绍两种工具。 第一种是在处理图像或视频时,将训练过的每个图层上产生的激活可视化的工具。我们发现,随着用户输入的改变,通过查看实时的激活值有助于理解卷积网络的工作原理。 第二种工具通过图像空间中的正则化,可视化DNN每一层的特征。在这里我们介绍几种新的正则化方法,这些方法结合起来可以产生更清晰,更可理解的可视化图像。 这两种工具都是开源的。

简单说:
可视化工作分为两大类,一类是非参数化方法:这种方法不分析卷积核具体的参数,而是先选取图片库,然后将图片在已有模型中进行一次前向传播,对某个卷积核,我们使用对其响应最大的图片块来对之可视化;而另一类方法着重分析卷积核中的参数,使用参数重构出图像。

1. Introduction

过去几年在训练强大的深度神经网络模型方面取得了巨大的进步,这些模型在各种具有挑战性的机器学习任务中正在接近甚至超越人类能力。 一个标志性的例子是训练深度卷积神经网络AlexNet,分类自然图像。 该领域大放异彩受益于GPU强大的计算能力,更好的训练技巧(dropout),更好的激活单元(ReLU), 和较大的标记数据集(ImageNet)。

虽然我们对如何创建高性能架构和学习算法的知识有了相当大的改进,但我们对这些大型神经模型如何运作的理解却落后了。 神经网络一直被称为“黑盒子”,因为很难准确理解一个具有大量神经元相互作用、非线性变换的神经网络,训练之后会有什么功能。大型现代神经网络由于其规模更难研究。例如,了解广泛使用的AlexNet DNN需要理解6000万训练过的网络参数。

理解神经网络学习到了什么本身就很有趣,并且这也是进一步改善模型的关键途径:理解当前模型学习到的知识,才可以提出使它们变得更好的方法。 例如,使用反卷积技术,可视化DNN隐藏单元学习到的特征,提出了使用较小的卷积核的结构。这一改进(ZFNet),取得了2013年ImageNet的最佳水平。

本文提供了两种可视化的工具,这两种工具都是开源的,以便科学家和从业人员可以将它们与自己的DNN集成从而更好地理解DNN。第一种工具是交互式的软件,它根据用户提供的图像或视频,让它们通过DNN后,绘制出每一层上产生的激活。第二个工具可以更好地显示由DNN每层的单个神经元计算出的学习特征。观察已经学习到的特征对于理解当前的DNN如何工作以及如何改进它们很重要。

过去的研究大致分为两个不同的阵营:以数据集为中心和以网络为中心。前者需要一个训练好的DNN并在该网络上进行前向运算;后者只需要一个训练好的DNN。以数据集为中心的方法从训练或测试集挑选图像,让这些图像通过DNN网络,DNN网络的每个单元都会产生高或低的激活值。

以网络为中心的方法直接调查网络,而不需要数据集中的任何数据。典型代表是ZFNet的反卷积方法。例如2009年Visualizing higher-layer features of a deep network一文中,通过使特定单元产生高的激活值来合成图像。从初始输入x=x0x=x0开始,计算在某个单元ii处由该输入引起的激活ai(x)ai(x)。然后沿着梯度∂ai(x)/∂x∂ai(x)/∂x的方向在输入空间中步进迭代,使得单元ii产生的激活值越来越高,最终的x∗x∗被认为是该单元ii正在寻找的答案(最希望看到的特征)。在输入空间是图像的情况下,可以直接显示x∗x∗来解释。其他人也纷纷效仿,使用梯度来查找能使输出单元产生更高激活的图像或更低激活的图像。这些基于梯度的方法在简单性上很有吸引力,但优化过程倾向于生成与自然图像不相似的图像。(高激活产生的图像可能无法辨认)。但是如果能够适当地调整优化,可以用这种方法获得一些有用的可视化。2013年Deep inside convolutional networks: Visualising image classification models and saliency maps一文中,利用L2正则化生成了略微可辨别的图像。本文基于前人的基础研究提供了三种正则化的形式,这些正则化生成的图像比以前的方法更容易识别。

2. 实时卷积激活的可视化

我们的第一个可视化方法非常简单:绘制图像或视频经过神经网络的前向计算在每个卷积层中神经元的激活值。 在全连接的神经网络中,神经单元的顺序是不相关的,因此这些矢量的图不具有空间信息性。然而,在卷积网络中,卷积核的使用方式会考虑到输入图像空间信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5O6KF3eK-1608473067063)(/Users/liyan/Library/Application Support/typora-user-images/image-20201220211527519.png)]

上图绘制出了输入图像经过conv5层后的激活值。 conv5层的大小为256×13×13,我们将其描述为256个13×13灰度图像。每个256张小图像包含了与输入数据在相同的x-y空间中的激活值。并且这256个图像被简单地划分成16×16网格。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNVPqMsg-1608473067065)(/Users/liyan/Library/Application Support/typora-user-images/image-20201220211955757.png)]

上图显示了一个conv5层上的第151通道的13×13激活的视图。该通道响应人脸和动物脸部。这个深度神经网络是在ImageNet上训练的,该网络中不包含脸部类,但包含许多带有脸部的图像。 但是该通道可以对人类和动物的脸部做出反应。

尽管这种可视化很容易实现,但我们发现它很有用,因为所有流经网络的数据都可以被可视化。 幕后没有任何神秘的事情发生。因为这个卷积网络只包含从输入到输出的单一路径,所以每一层都是一个bottleneck ,所有信息都必须通过这个bottleneck传递给分类决策。 迄今为止,我们已经从该工具中收集到了一些令人惊讶的发现:
**1.**在某些层面上的表示似乎是局部的。例如,我们可以在conv4和conv5上看到文本,鲜花,水果和脸部的检测器,而不是在所有图层上进行分布表示。
**2.**当直接使用来自Google Images 的照片文件进行分类时,分类通常是正确并且是高度自信的(对于正确分类的softmax概率接近1)。当使用来自网络摄像头的输入时,预测往往不能正确,因为训练集中没有相应的类别。训练集的1000个类虽然很多,但并不包含大多数常见的家庭用品。因此显示网络摄像头中的人时,如果这个人不在ImageNet类别内,输出就不会有很高的概率。这个概率向量是有噪声的,如果输入有微小变化,这个向量会产生显著的变化。绘制全连接层(fc6和fc7)也有类似情况发生。
**3.**最后三层对小的输入变化很敏感,大部分较低层是非常鲁棒的。 例如,当可视化conv5层时,通过移动摄像头前方的物体,可以找到许多面部,肩部等检测器。尽管1000个类别不包含明确标记的面部或肩部,但网络可以识别这些是因为它们是人的部位,识别整个人需要这些有用的局部信息,有了这些局部信息,将这些局部信息整合起来将有助于最终的分类决定。Conv5上第151通道是一个面部检测器,如上图所示的那样,它可以激活人脸、狮子脸、猫脸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Note for Understanding Neural Networks Through Deep Visualization 的相关文章

  • 【旋转框目标检测】2201_The KFIoU Loss For Rotated Object Detection

    paper with code paper code Jittor Code https github com Jittor JDet PyTorch Code https github com open mmlab mmrotate Te
  • 【论文阅读】Anchor3DLane: Learning to Regress 3D Anchors for Monocular 3D LaneDetection

    Anchor3DLane 针对单目的3D车道线检测去学习回归3D锚 摘要 xff1a 单目的3D车道线检测是一个非常具有挑战性的问题 xff0c 因为他缺少深度的信息 xff0c 3D车道线检测一个非常流行的方法是将前视图转换成鸟瞰图 xf
  • Xpdf-3 for MDK

    http www linuxfans org nuke modules php name 61 Site Downloads amp op 61 geninfo amp did 61 2385 Xpdf 3 for MDK 类别 其它软件
  • Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activa...

    Unable to resolve service for type 39 Microsoft Extensions Logging ILogger 39 while attempting to activate 39 xxxxx Cont
  • ChkBugReport工具for Android

    关于这个工具 xff0c 找到的资料都比较旧了 xff0c 貌似是索尼移动的开发人员开发的 xff0c 2014年左右的文章比较多 xff0c 应该是那个时候索尼移动还是比较鼎盛的时期吧 现在已经很少看到关于这个工具的文章了 xff0c G
  • iptables - administration tools for packet filtering and NAT

    2 iptables administration tools for packet filtering and NAT Linux Iptables Manual Incoming Traffic V 43 43 PREROUTING 4
  • 翻译-Frustum PointNets for 3D Object Detection from RGB-D Data

    Frustum PointNets for 3D Object Detection from RGB D Data 摘要介绍相关工作从RGB D数据中检测三维物体基于前视图图像的方法 xff1a 基于鸟瞰图的方法 基于3D的方法 点云的深度
  • BackgroundWorker

    BackgroundWorker的事件响应函数 private void backgroundWorker1 DoWork object sender DoWorkEventArgs e BackgroundWorker worker se
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa
  • python_error

    inspection info This inspection detects code which can not be normally reached 检验信息 本次检验检测到正常情况下无法达到的代码 inspection info
  • AI三大主义:符号主义、联结主义、行为主义

    一 符号主义 symbolicism 符号主义 symbolicism 逻辑主义 Logicism 心理学派 Psychlogism 计算机学派 Computerism 其原理主要为物理符号系统 即符号操作系统 假设和有限合理性原理 早期的
  • Go语言学习15-基本流程控制

    基本流程控制 流程控制对比 Go 和 C 基本流程控制 1 代码块和作用域 2 if 语句 3 switch语句 3 1 表达式switch语句 3 2 类型switch语句 4 for 语句 4 1 for 子句 4 2 range 子句
  • Ubuntu 使用笔记

    更新时间 2020 3 24 文章目录 一 安装 二 快捷键 三 常用命令 3 1 软件安装 3 2 程序编写 四 软件使用 1 终端使用 2 Vim编辑器 3 Linuxqq 4 基于wine 的软件下载 5 CAJViewer使用 6
  • 博士的归宿

    1 高校 2 央企的研究院 3 外企的研发机构
  • Ruby

    1 如何安装ralis 在线安装常常因为公司proxy server的原因产生连接问题 所以可以先到https rubygems org下载然后离线安装 gem install l rails2 3 5 gem
  • 当前的软件潮流

    1 以ERP为代表 注重业务逻辑 模式 数据存储 比较经典的书籍有Fowler的 lt 企业应用架构模式 gt 等 2 SaaS 一些通用型的企业需求越来越倾向于使用data center提供的服务 如CRM HCM human capit
  • 多线程 并发编程与异步方法

    1 Parallel Programming中的PLINQ Parallel Class与Task Parallelism的特点 并发编程的内容类似于Google的Map Reduce的算法 多线程的着眼点是线程的互斥 同步等 而并行编程的
  • tf1.x和tf2.x查看TFRecord数据的方法

    Tensorflow 1 x和Tensorflow 2 x读取tfrecord方法略有不同 下面分别记录两段代码 Tensorflow 1 x for example in tf python io tf record iterator p
  • 2013/1工作总结

    这个月抽时间看了C Primer一书 主要原因是没有基础知识直接看ATL的代码根本不可能 感想之一就是程序员也许必须学习一下C 只学习Java或者C 可能对语言的了解有限 造成对某些问题一直没有透彻的理解 当然了 最后发现还要好好学习理解编
  • Association Class VS Full Class

    详细分析请见 http etutorials org Programming UML Chapter 6 Class Diagrams Advanced Concepts Association Class 1 关联类的必要性 关联类隔离了

随机推荐

  • linux常用命令(Beginner note)

    命令 ls 列出所有文件及文件夹 ls 路径 xff1a 列出所给路径下的所有文件及文件夹 选项 xff1a xff08 可组合使用 xff0c 也可简写组合形式 xff0c 例 xff1a alh xff0c 无先后顺序 xff09 a
  • 利用JS-SDK微信分享接口调用(后端.NET)

    一直都想研究一下JS SDK微信分享的接口调用 xff0c 由于最近工作需要 xff0c 研究了一下 xff0c 目前只是实现了部分接口的调用 xff1b 其他接口调用也是类似的 xff1b 在开发之前 xff0c 需要提前准备一个微信公众
  • Linux文件查找find

    1 find查找概述 为什么要有文件查找 xff0c 因为很多时候我们可能会忘了某个文件所在的位置 xff0c 此时就需要通过find来查找 find命令可以根据不同的条件来进行查找文件 xff0c 例如 xff1a 文件名称 文件大小 文
  • Linux文件打包与压缩

    1 文件打包与压缩 1 什么是文件压缩 将多个文件或目录合并成为一个特殊的文件 比如 搬家 脑补画面 img 2 为什么要对文件进行压缩 xff1f 当我们在传输大量的文件时 xff0c 通常都会选择将该文件进行压缩 xff0c 然后在进行
  • 集中式版本管理SVN与分布式版本管理Git的区别

    集中式版本控制系统SVN CVS 先说集中式版本控制系统 xff0c 版本库是集中存放在中央服务器的 xff0c 而大家工作的时候 xff0c 用的都是自己的电脑 xff0c 所以要先从中央服务器取得最新的版本 xff0c 然后开始工作 x
  • chatgpt Linux 定时任务 清理rancher pod启动服务的日志文件 脚本

    Linux 定时任务执行命令 假设我们想要每隔X分钟 每隔X天 每天X点执行一个脚本文件 xff0c 可以使用 Linux 自带的 cron 工具来创建定时任务 清理步骤 您可以使用 Linux 自带的 cron 工具来创建定时任务 xff
  • Http协议的几种常见状态码

    在开发好了网站后 xff0c 用户通过URL对资源进行操作 xff0c 服务器端要告诉用户交互的结果 xff0c 比如新增资源是成功还是失败了 一个较好的办法就是遵循HTTP协议 xff0c 使用请求响应的HTTP状态码 xff08 Sta
  • 推荐画UML图以及流程图的在线网站Site

    记得当年学UML课程的时候 xff0c 当你还在为了安装Rose而发愁的时候 xff0c 人家都把作业给交了 xff0c 并且现在大多数UML课程都会让学生使用Rational Rose做画图练习 近来 xff0c 做毕业设计需要提供各种流
  • 浙大PTA平台上的题目题解

    记载一些题目的代码 xff0c 之后想要在b站讲题目 xff0c 到时候会把录的视频上传b站 不是大佬 xff0c 是蒟蒻 xff0c 大佬勿喷 xff0c 仅供参考 xff0c 欢迎大家star xff0c qwq 浙大版 C语言程序设计
  • git 入门教程

    想要将一个项目托管到github xff0c 需要进入项目所在文件夹进行git init命令初始化 Git提交代码的基本流程 xff1a 创建或修改 本地文件使用 git add 命令 xff0c 将创建或修改的文件添加到本地的暂存区 xf
  • 博客搬家

    谢谢大家对我的blog的支持 现在本科毕业 xff0c 准备读研 方向大概是机器学习这一块 又是一个新的开始 我想将我读研学习Python以及机器学习 深度学习 以及数据分析处理 大数据等学习教程放在新的blog上 xff1a blog 欢
  • Python多线程笔记(Python_MultiThread)

    4 MultiThreading 多线程 使用 xff1a a 什么是多线程 xff1f 简单明了 xff0c 让计算机在同一时间内同时运行多个程序 xff0c 并且每个程序的计算互不干扰 xff0c 我们称这样的操作为多线程运算 b ad
  • Python多进程笔记(Python_MultiProcess)

    1 MutiProcessing 多进程 使用 xff1a a 什么是多进程 xff1f 在上面我们使用多线程去分别处理不同的事情 xff0c 看起来 xff0c 多线程处理并不比单线程循环处理的效率看起来那么的高 多进程是在利用我们电脑C
  • Python自带的GUI(Tkinter)教程

    1 Python Tkinter xff08 GUI图形界面 xff09 xff1a a What s Tkinter Tkinter 是什么 xff1f Tkinter是Python自带的一个GUI库 xff0c 他可以将我们在comma
  • Python科学计算包NumPy教程

    在我的Github上有一份代码与教程结合的jupyter Notebook文件 xff0c 大家可以clone下来看一看 下面会用实例的方式给出一些examples xff1a Tutorial教程 官方中文文档 span class to
  • 区块链入门的几个概念

    区块链入门的几个简单概念 1 What s Block Chain 区块链是一门软件技术 xff0c 从本质上来看就像是一个分布式的DataBase xff0c 是一个去中心化 xff0c 分布式技术 由于是分布式的 xff0c 所以区块链
  • Mysql GROUP_CONCAT与CONCAT_WS配合使用单选、多选拼接

    举例1 可以使用IF函数将单选和多选的值分别拼接 xff0c 并在最后的结果中使用CONCAT WS函数将它们合并 xff1a idcolors11223344 551 2 362 3 4 5 我们想要的结果为1 2 3 4 5 下面开始测
  • A Survey on Concept Drift Adaptation Note

    A Survey on Concept Drift Adaptation Abstract Concept drift primarily refers to an online supervised learning scenario w
  • Learning under Concept Drift:A Review

    Learning under Concept Drift A Review Abstract Concept drift describes unforeseeable changes in the underlying distribut
  • Note for Understanding Neural Networks Through Deep Visualization

    Note for Understanding Neural Networks Through Deep Visualization Abstract 近年来 xff0c 在训练大型深度神经网络方面取得了巨大进展 xff0c 其中包括训练卷积