0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习卷积神经网络和可视化学习

汽车玩家 来源:今日头条 作者:闻数起舞 2020-05-03 18:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

动机

与其他机器学习技术相比,深度学习的主要优势在于它能够自动学习输入数据的抽象表示。 但是,并非总是如此。 早在1969年,Minsky和Papert出版了一本书,该书(除其他事项外)证明了单层感知器(人工神经网络的祖先)无法解决XOR问题。 对于我们这些没有计算机科学背景的人,XOR问题的任务是接受两个二进制输入A和B,并且仅当A或B中只有一个为真时才返回true,因此名称为“ 异或”或XOR。 单层感知器无法解决此问题的原因是它们只能解析线性可分离的类。 如果要为XOR问题及其输出绘制可能的输入,则该空间应如下所示:

The world’s worst game of tic-tac-toe (source: wikimedia commons)

现在,您可以在此图像上绘制一条直线并将圆与十字分开吗? 剧透:您不能,感知器也不能。 幸运的是,勇敢的先驱者拥有将两个感知器结合在一起的见识,并且深度学习领域诞生了(或多或少)。 之所以可行,是因为神经网络的每一层都可以看作是前一层的嵌入。 尽管上图中的圆圈和十字可能无法以其原始形式线性分离,但可以通过简单的编码进行线性分离。 拍摄图像的左上角和右下角,并将它们保持在您的脑海中。 然后,借助您的想象力,将图像对折至第三维的一半,将右上角拖出屏幕,然后将其向下压回到左下角。 如果操作正确,它将看起来像这样:

If you look closely, you may notice I’m not an artist

现在,您可以在此图像上绘制一条直线并将圆与十字分开吗? 我衷心希望如此。 这种获取信息并将其编码为其他更有用形式的动作是神经网络擅长的主要任务。 实际上,训练神经网络不是为了具有预测能力,而是为了发现它们所获得的学习表现,已经成为深度学习研究的主要内容。

学会看

卷积神经网络(CNN)是将深度学习应用于图像数据的最受欢迎的体系结构。 简而言之,CNN可以学习许多过滤器,它们适用于图像的每个像素及其层。 通过将这些过滤器应用于图像以及重复进行下采样,神经网络将学会在其第一层中识别简单的低层特征,并在其最后一层中识别复杂的高层特征。 至少,这就是通常的解释方式。

Image Source: Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations, by Lee et al.

如您所见,模型学会了识别各种边缘,然后识别出面部特征,然后识别出整个面部(去除了许多中间层)。 如果您使用Google“卷积神经网络层可视化”,则会发现大量上述图片。 但是,我从未在训练过程中看到CNN图层的可视化,所以我想我会看到它们的外观。 在此探索中,我使用了常见的MNIST数据集,即一组60,000个黑白手绘数字,每个数字的高度和宽度为28像素。 我使用了一个简单的卷积模型,如下所示:

The network architecture, including 6 convolutional layers and 3 dense layers

可视化

对神经网络进行了五个时期的训练,最小批量为1024个图像,总共290个训练步骤。 在每个步骤之后,将一组预先选择的十个样本图像(每个数字之一)输入模型,并保存每个卷积层的激活。 尽管tanh近年来它不再流行,而是支持更易于训练的,但我还是决定将tanh用作卷积层中的激活函数。 这是因为tanh限制在-1和1之间,使其易于可视化。 将第一层的激活应用于红蓝色色图时,结果如下:

Conv1: The input images (top row) and the activations of the four channels in convolutional layer 1. Activations range from +1 (blue) to 0 (white) to -1 (red). Frame (top left) is the number of training steps applied.

Conv1似乎已学会识别第一和第二通道的笔划宽度,因为每个数字的内部为深红色,而外部为浅红色。在第三和第四通道中,似乎已经学会了边缘的概念,其中数字为蓝色,背景为粉红色,数字边缘为白色。然而,这些激活是深度学习规范所建议的一个长远目标,那就是每个通道都将学习一个清晰而独特的功能,例如垂直和水平边缘。 Conv1在很大程度上复制带有少量注释的原始输入。

Conv2: The same setup as Conv1.

与Conv1相似,Conv2也似乎正在再现原始输入。 通道1、2和4彼此几乎相同,并且与Conv1中看到的边缘突出显示行为几乎相同,通道3只是输入的模糊再现。

Conv3: The same setup as Conv1, except with eight channels instead of four. This layer has half the resolution as the original image, so activations were upscaled without interpolation for visualization.

在Conv3中,我们看到了可能是第一个真正了解的功能。在第六个通道中,在训练即将结束时,我们看到数字是蓝色的,大多数背景是粉红色的,而数字每个部分正下方的背景是红色。这表明该通道已学会识别水平边缘的底部。同样,第七个通道在每个数字上方都有红色数字,粉红色背景和白色水平边缘。但是,其他通道似乎只是原始图像的简单复制。

Conv4: The same setup as Conv3.

在Conv4中,我们看到了更清晰定义的功能。 特别是,我们看到了不同角度的边缘。 第一,第二和第六通道标识水平边缘的顶部。 第三,第七和第八通道标识对角线边缘。 其他两个通道是原始图像的粗略复制。

Conv5: The same setup as Conv1, except with sixteen channels instead of four. This layer has one-quarter the resolution of the original image, so activations were upscaled without interpolation for visualization.

Conv5进行了大幅下采样,分辨率仅为7x7像素,但似乎具有有意义的特征提取。 在训练的最早步骤中,每个通道都是粉红色的,几乎没有任何信息。 到了步骤70,该层已学会产生模糊地类似于输入的斑点。 但是,在训练结束时,通道之间已经明显地区分开,并且在激活方面显示出急剧的变化。 由于分辨率低和我们称之为独立功能的纠结,目前尚不清楚在这里学到了哪些功能,但是很显然,这里的每个通道都有一些有用的功能。

Conv6: The gif was too large for Medium, so these are the activations after training has completed.

不幸的是,Conv6文件太大,没有上传动图。与Conv5相似,学习到的功能清晰可见,但是几乎无法分辨出它们实际对应的含义。

Accuracy and loss (categorical_crossentropy) during training

得到教训

那么这个故事的寓意是什么?我建议有三个。

首先,深度学习成果很少像教科书所建议的那样清晰。许多教科书,包括深度学习(Goodfellow等人),都将低级卷积层比作Gabor滤镜和其他手工制作计算机视觉滤镜。尽管该模型在测试数据上的准确性达到了95%以上,但是就特征提取而言,前四个卷积层所做的很少。当然,对于一个非常简单的任务来说,这是一个非常简单的模型,而且为一个更艰巨的任务而训练的更复杂的模型可能至少学到了一些有用的低级功能,但是通常采用深度学习的方式进行教学(在我的经验)表明,即使对于简单的任务,特征的优化和提取也是不可避免的;显然不是这样。

第二个教训是,学习的功能不太可能是人类可能会选择的直观,独立的特质。 Conv5和Conv6清楚地学到了一些东西,并且原始图像的编码方式使得网络的密集层可以按数字类型对它们进行分类,但是他们学会了检测的内容并不能立即显而易见。 这是深度学习中的一个常见问题,尤其是在生成建模中,模型可能会学习将两个或多个看似无关的特质嵌入为单个功能。

这是第三课,这是我作为数据科学家在工作中每天都想起的一课,那就是可视化所有内容。 我参加了这个项目,期望写一篇非常不同的文章。 我很高兴展示从低级边缘检测到高级循环和旋转的网络学习和优化功能。 取而代之的是,我发现一个懒散的漫步,直到第11个小时才具有完善的功能。 最值得注意的是,我惊讶地发现,一旦各层学会了输入的某种表示形式,它们在训练过程中几乎就不会改变。 可视化增强了我对卷积神经网络训练的理解。 希望您也从这里学到了一些东西。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123911
  • 卷积神经网络

    关注

    4

    文章

    371

    浏览量

    12717
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自动驾驶中常提的卷积神经网络是个啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是一种专门用来处理网格状数据(比如图像)的深度
    的头像 发表于 11-19 18:15 1836次阅读
    自动驾驶中常提的<b class='flag-5'>卷积</b><b class='flag-5'>神经网络</b>是个啥?

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题。当x&gt;0 时,梯度恒为1,无梯度耗散问题,收敛快;当x&lt;0 时,该层的输出为0。 CNN
    发表于 10-29 07:49

    NMSIS神经网络库使用介绍

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   神经网络池化函数   Softmax 函数   神经网络支持功能
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    模型。 我们使用MNIST数据集,训练一个卷积神经网络(CNN)模型,用于手写数字识别。一旦模型被训练并保存,就可以用于对新图像进行推理和预测。要使用生成的模型进行推理,可以按照以下步骤进行操作: 1.
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    读取。接下来需要使用扩展指令,完成神经网络的部署,此处仅对第一层卷积+池化的部署进行说明,其余层与之类似。 1.使用 Custom_Dtrans 指令,将权重数据、输入数据导入硬件加速器内。对于权重
    发表于 10-20 08:00

    如何在机器视觉中部署深度学习神经网络

    图 1:基于深度学习的目标检测可定位已训练的目标类别,并通过矩形框(边界框)对其进行标识。 在讨论人工智能(AI)或深度学习时,经常会出现“神经网络
    的头像 发表于 09-10 17:38 693次阅读
    如何在机器视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>神经网络</b>

    结构可视化:利用数据编辑器剖析数据内在架构​

    动路径,为数据驱动的决策提供坚实基础。借助数据编辑器,企业还能更便捷地对可视化呈现的数据进行编辑、调整,以满足不同分析场景的需求,进一步优化数据管理流程。 以神经网络可视化展示为例,在深度
    的头像 发表于 05-07 18:42 412次阅读

    BP神经网络卷积神经网络的比较

    BP神经网络卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈
    的头像 发表于 02-12 15:53 1311次阅读

    如何优化BP神经网络学习

    优化BP神经网络学习率是提高模型训练效率和性能的关键步骤。以下是一些优化BP神经网络学习率的方法: 一、理解学习率的重要性
    的头像 发表于 02-12 15:51 1426次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1591次阅读

    什么是BP神经网络的反向传播算法

    神经网络(即反向传播神经网络)的核心,它建立在梯度下降法的基础上,是一种适合于多层神经元网络学习算法。该算法通过计算每层网络的误差,并将这
    的头像 发表于 02-12 15:18 1278次阅读

    BP神经网络深度学习的关系

    BP神经网络深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播
    的头像 发表于 02-12 15:15 1341次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个
    的头像 发表于 01-23 13:52 846次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工
    的头像 发表于 01-09 10:24 2256次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度
    的头像 发表于 12-30 09:16 1982次阅读
    传统机器<b class='flag-5'>学习</b>方法和应用指导