浏览器上如何实现CNN可视化

74次阅读
没有评论

共计 4997 个字符,预计需要花费 13 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关浏览器上如何实现 CNN 可视化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

本文作用

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

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

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

了解超参数
浏览器上如何实现 CNN 可视化
当内核扩展到激活图之外时,通常需要填充。填充可以在激活图的边界处保存数据,从而获得更好的性能,并且可以帮助保留输入的空间大小,从而使体系结构设计人员可以构建性能更高,更流畅的网络。存在许多填充技术,但是最常用的方法是零填充,因为它的性能,简单性和计算效率高。该技术涉及在输入的边缘周围对称地添加零。许多高性能的 CNN(例如 AlexNet)都采用了这种方法。
内核大小,通常也称为过滤器大小,是指输入上滑动窗口的尺寸。选择此超参数会对图像分类任务产生重大影响。例如,较小的内核大小能够从输入中提取大量包含高度局部特征的信息。如您在上面的可视化中所看到的,较小的内核尺寸也导致较小的层尺寸减小,这允许更深的体系结构。相反,较大的内核会提取较少的信息,这会导致层尺寸的减小更快,从而常常导致性能下降。大内核更适合提取更大的特征。最终,选择合适的内核大小将取决于您的任务和数据集,但是通常,越来越多的图层一起学习越来越复杂的功能!
大步走指示内核一次应移动多少像素。例如,如上面的卷积层示例所述,Tiny VGG 对其卷积层使用步幅为 1,这意味着在输入的 3 ×3 窗口上执行点积以产生输出值,然后将其移至每进行一次后续操作,就增加一个像素。跨度对 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 可视化
汇聚层
在不同的 CNN 架构中,池化层的类型很多,但是它们的目的都是要逐渐减小网络的空间范围,从而减少网络的参数和总体计算。上面的 Tiny VGG 架构中使用的池类型为 Max-Pooling。

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

在上面的 Tiny VGG 体系结构中,池化层使用 2 ×2 内核,步幅为 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 可视化
浏览器上如何实现 CNN 可视化

CNN 神经网络可视化工具 2

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

https://dgschwend.github.io/netscope/quickstart.html浏览器上如何实现 CNN 可视化

上述就是丸趣 TV 小编为大家分享的浏览器上如何实现 CNN 可视化了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4997字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)