浏览器上实现CNN可视化——清楚看到每一层卷积后的图

目录

    • 本文作用
    • CNN神经网络可视化工具1
    • 解释器学习笔记
    • CNN神经网络可视化工具2

本文作用

学习卷积神经网络时,我们只知道输入一张图片后,通过一顿操作,便可以提取图片中的特征,我们对于其内部的操作,只有理论了解,并没有做到眼见为实。这个CNN解释器让我们在浏览器上,便可以清楚看到每个神经元是如何产生,以及生成的图片长什么样

CNN神经网络可视化工具1

网址:https://poloclub.github.io/cnn-explainer/
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第1张图片
什么是卷积神经网络?
在机器学习中,分类器将类别标签分配给数据点。例如,图像分类器产生图像中存在哪些对象的类别标签(例如,鸟,飞机)。一个卷积神经网络,或CNN的简称,是一种类型的分类,在解决这个问题,其过人之处!

CNN是神经网络:一种用于识别数据模式的算法。通常,神经网络由神经元组成,这些神经元分层组织,每个神经元都有自己可学习的权重和偏见。让我们将CNN分解为其基本构建块。

甲张量可以被认为是一个n维矩阵。在上面的CNN中,张量将是3维的,输出层除外。
甲神经元可以被看作是发生在多个输入并且产生一个输出的功能。神经元的输出在上面表示为红色 → 蓝色 激活图。
阿层是简单地用相同的操作的神经元,包括相同超参数的集合。
内核权重和偏差(虽然每个神经元都唯一)在训练阶段进行了调整,并允许分类器适应所提供的问题和数据集。它们在可视化中以黄色 → 绿色发散色标进行编码。通过单击神经元或将鼠标悬停在卷积弹性解释视图中的内核/偏差上,可以在“ 交互式公式”视图中查看特定值。
CNN传达了一个可微分函数,该函数在输出层的可视化中表示为类分数。
如果您以前学习过神经网络,那么您可能对这些术语感到熟悉。那么,什么使CNN与众不同?CNN利用一种特殊类型的层,恰当地称为卷积层,使它们处于适当的位置以从图像和类似图像的数据中学习。关于图像数据,CNN可以用于许多不同的计算机视觉任务,例如图像处理,分类,分割和对象检测。

在CNN Explainer中,您可以看到如何使用简单的CNN进行图像分类。由于网络的简单性,它的性能并不完美,但这没关系!CNN Explainer中使用的网络架构Tiny VGG包含了当今最先进的CNN所使用的许多相同的层和操作,但是规模较小。这样,将更容易理解入门。

网络的每一层做什么?
让我们遍历网络中的每一层。在阅读时,单击并悬停在上面的可视化中,即可随意与上面的可视化进行交互。

输入层
输入层(最左边的层)代表输入到CNN中的图像。因为我们使用RGB图像作为输入,所以输入层具有三个通道,分别对应于该层中显示的红色,绿色和蓝色通道。单击网络详细信息图标上方的图标以显示详细信息(在此层以及其他层上)时,请使用色标。

卷积层
卷积层是CNN的基础,因为它们包含学习的内核(权重),这些内核提取出可将不同图像彼此区分开的特征-这就是我们想要的分类!与卷积层交互时,您会注意到先前各层与卷积层之间的链接。每个链接代表一个唯一的内核,该内核用于卷积操作以生成当前卷积神经元的输出或激活图。

卷积神经元执行具有唯一内核和上一层对应神经元输出的元素点积。这将产生与唯一内核一样多的中间结果。卷积神经元是所有中间结果与学习到的偏差相加的结果。

例如,让我们看一下上面的Tiny VGG架构中的第一个卷积层。请注意,此层中有10个神经元,但上一层中只有3个神经元。在Tiny VGG架构中,卷积层是完全连接的,这意味着每个神经元都与上一层中的每个其他神经元相连。着眼于第一卷积层最顶层的卷积神经元的输出,当我们将鼠标悬停在激活图上时,我们看到有3个唯一的内核。
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第2张图片
图1.将鼠标悬停在第一个卷积层上最顶层节点的激活图上时,您会看到应用了3个内核来生成此激活图。单击此激活图后,您可以看到每个唯一内核都发生了卷积操作。
这些内核的大小是由网络体系结构的设计人员指定的超参数。为了产生卷积神经元(激活图)的输出,我们必须与上一层的输出以及网络学习到的唯一内核一起执行元素逐点积。在TinyVGG中,点积运算使用的跨度为1,这意味着内核将每个点积移出1个像素,但这是网络架构设计人员可以调整以使其更适合其数据集的超参数。我们必须对所有3个内核执行此操作,这将产生3个中间结果。
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第3张图片
然后,执行包含所有3个中间结果以及网络已获学习的偏差的元素和。此后,所得的二维张量将是在第一卷积层中最顶层神经元的上方界面上可见的激活图。必须应用相同的操作来生成每个神经元的激活图。

通过一些简单的数学运算,我们可以推断出在第一个卷积层中应用了3 x 10 = 30个唯一的内核,每个内核的大小为3x3。卷积层与上一层之间的连通性是构建网络体系结构时的设计决策,它将影响每个卷积层的内核数量。单击可视化文件以更好地了解卷积层背后的操作。看看是否可以遵循上面的示例!

了解超参数
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第4张图片
当内核扩展到激活图之外时,通常需要填充。填充可以在激活图的边界处保存数据,从而获得更好的性能,并且可以帮助保留输入的空间大小,从而使体系结构设计人员可以构建性能更高,更流畅的网络。存在许多填充技术,但是最常用的方法是零填充,因为它的性能,简单性和计算效率高。该技术涉及在输入的边缘周围对称地添加零。许多高性能的CNN(例如AlexNet)都采用了这种方法。
内核大小,通常也称为过滤器大小,是指输入上滑动窗口的尺寸。选择此超参数会对图像分类任务产生重大影响。例如,较小的内核大小能够从输入中提取大量包含高度局部特征的信息。如您在上面的可视化中所看到的,较小的内核尺寸也导致较小的层尺寸减小,这允许更深的体系结构。相反,较大的内核会提取较少的信息,这会导致层尺寸的减小更快,从而常常导致性能下降。大内核更适合提取更大的特征。最终,选择合适的内核大小将取决于您的任务和数据集,但是通常,越来越多的图层一起学习越来越复杂的功能!
大步走指示内核一次应移动多少像素。例如,如上面的卷积层示例所述,Tiny VGG对其卷积层使用步幅为1,这意味着在输入的3x3窗口上执行点积以产生输出值,然后将其移至每进行一次后续操作,就增加一个像素。跨度对CNN的影响类似于内核大小。随着步幅的减小,由于提取了更多的数据,因此可以了解更多的功能,这也导致了更大的输出层。相反,随着步幅的增加,这将导致特征提取更加受限,输出层尺寸更小。架构设计人员的职责之一是在实现CNN时确保内核对称地跨输入滑动。
激活功能
ReLU
神经网络在现代技术中极为盛行-因为它们是如此精确!当今性能最高的CNN包含大量荒谬的图层,这些图层能够学习越来越多的功能。这些突破性的CNN能够实现如此巨大的准确性的部分原因是因为它们的非线性。ReLU将急需的非线性应用到模型中。非线性是产生非线性决策边界所必需的,因此输出不能写为输入的线性组合。如果不存在非线性激活函数,那么深的CNN架构将演变为一个等效的卷积层,其性能几乎不一样。与其他非线性函数(例如Sigmoid)相反,ReLU激活函数专门用作非线性激活函数,因为从经验上已经观察到,使用ReLU的CNN的训练速度要快于它们的对应函数。

ReLU激活函数是一对一的数学运算:

关系图
图3.绘制的ReLU激活函数,忽略了所有负面数据。
此激活函数逐个应用于输入张量中的每个值。例如,如果将ReLU应用于值2.24,则结果将为2.24,因为2.24大于0。您可以通过单击上方网络中的ReLU神经元来观察如何应用此激活功能。在上面概述的网络体系结构中的每个卷积层之后执行整流线性激活功能(ReLU)。注意该层对整个网络中各种神经元的激活图的影响!

软最大
softmax操作的主要目的是:确保CNN输出的总和为1。因此,softmax操作可用于将模型输出缩放为概率。单击最后一层将显示网络中的softmax操作。请注意,展平后的对数如何不在零到一之间缩放。为了直观显示每个logit的影响(标量值未缩放),使用浅橙色 → 深橙色色标对它们进行编码。通过softmax函数后,每个类现在对应一个适当的概率!

您可能会想,标准归一化和softmax之间的区别是什么-毕竟,两者都会在0和1之间重新调整logit。请记住,反向传播是训练神经网络的关键方面-我们希望正确的答案具有最大的“信号”。 ” 通过使用softmax,我们可以有效地“逼近” argmax,同时获得微分。重新缩放不会使max的权重明显高于其他logit,而softmax的权重却不会。简而言之,softmax是一个“更软”的argmax-看看我们在那里做了什么?
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第5张图片
汇聚层
在不同的CNN架构中,池化层的类型很多,但是它们的目的都是要逐渐减小网络的空间范围,从而减少网络的参数和总体计算。上面的Tiny VGG架构中使用的池类型为Max-Pooling。

最大池操作需要在体系结构设计期间选择内核大小和步幅。一旦选定,该操作将以指定的步幅在输入上滑动内核,同时仅从输入中选择每个内核切片上的最大值以产生输出值。通过单击上方网络中的合并神经元,可以查看此过程。

在上面的Tiny VGG体系结构中,池化层使用2x2内核,步幅为2。使用这些规范进行此操作将导致75%的激活被丢弃。通过丢弃如此多的值,Tiny VGG的计算效率更高,并且避免了过拟合。

展平层
该层将网络中的三维层转换为一维向量,以适合全连接层的输入以进行分类。例如,将一个5x5x2张量转换为大小为50的向量。网络的先前卷积层从输入图像中提取了特征,但是现在该对这些特征进行分类了。我们使用softmax函数对这些功能进行分类,这需要一维输入。这就是为什么需要平坦层的原因。可以通过单击任何输出类来查看此层。

互动功能
通过选择上传图片图标以了解您的图像如何分为10类来上传自己的图像。通过分析整个网络中的神经元,您可以了解激活图和提取的特征。
更改激活图色标,以通过调整更好地了解不同抽象级别的激活的影响热图。
单击网络详细信息图标图标,了解网络详细信息,例如图层尺寸和色标。
通过单击播放图标按钮来模拟网络操作,或者通过将鼠标悬停在输入或输出的各个部分上来了解映射和基础操作,从而与Interactive Formula View中的图层切片进行交互。
通过单击信息图标“ 交互式公式视图”以了解文章中的图层详细信息,以了解图层功能。
影片教学
CNN解释器简介 (0:00-0:22)
概述 (0:27-0:37)
卷积弹性解释视图 (0:37-0:46)
卷积,ReLU和池化交互式公式视图 (0:46-1:21)
展平弹性说明视图 (1:22-1:41)
Softmax 交互式公式视图 (1:41-2:02)
吸引学习经验:理解分类 (2:06-2:28)
互动教程文章 (2:29-2:54)
CNN解释器如何实施?
CNN Explainer使用TensorFlow.js(一个浏览器内GPU加速的深度学习库)加载经过预训练的模型以进行可视化。整个交互式系统使用Svelte作为框架并使用D3.js进行可视化,并以Javascript编写。您只需要一个网络浏览器就可以立即开始学习CNN!

谁开发了CNN Explainer?
CNN解释器由 Jay Wang, Robert Turko, Omar Shaikh, Haekyu Park, Nilaksh Das, Fred Hohman, Minsuk Kahng和 Polo Chau创建,这是佐治亚理工学院与俄勒冈州立大学进行研究合作的结果。我们感谢Anmol Chhabria,Kaan Sancak,Kantwon Rogers和乔治亚州技术可视化实验室的支持和建设性的反馈。NSF赠款IIS-1563816,CNS-1704701,NASA NSTRF,DARPA GARD以及来自英特尔,NVIDIA,Google和Amazon的礼物均部分支持了这项工作。

解释器学习笔记

浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第6张图片
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第7张图片

CNN神经网络可视化工具2

该在线网络工具提供10多种经典网络的可视化文件,如AlexNet、GoogLeNet、YOLO、ResNet系列和Inception系列等。可以清楚看到每层的参数。

https://dgschwend.github.io/netscope/quickstart.html浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第8张图片

申明:

  1. 因为这个CNN可视化过程只能在PC端查看,所以翻译后可以随时手机观看。
  2. 因为CNN很抽象,分享出来希望大家对CNN有个可视化的了解
  3. 本文不涉及盈利,侵删。

碰巧,如果你看到了这篇文章,并且觉得有用的话 那就给个三连吧!
浏览器上实现CNN可视化——清楚看到每一层卷积后的图_第9张图片

你可能感兴趣的:(深度学习)