Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何通过剃度上升实现可视化卷积核?

如何通过剃度上升实现可视化卷积核?

作者头像
AI研习社
发布于 2018-03-19 02:56:51
发布于 2018-03-19 02:56:51
6780
举报
文章被收录于专栏:AI研习社AI研习社

为什么我的CNN网络模型训练出来的东西总是过度拟合?已经改了很多次参数都不行,到底是样本有问题还是网络模型定义有问题?问题在哪来? CNN网络模型中的每一层学习的是些什么特征?为什么有的人说第一层卷积核提取的边缘信息特征?有的人却说第一层卷积核提取的是颜色特征?到底是两者都有还是什么回事? CNN网络可不可以减掉几层然后保持相同的精度和损失率呢?减掉几层可以减少网络参数,本来我的GPU显存不是很大,太大的网络塞不下,不想重新买GPU只能减层,有没有大神可以教教我怎么操作啊?

很多时候我们会遇到上面的问题,然后道听途说地开始给别人瞎粑粑吹吹牛皮。在这之前,连我自己都不知道VGG16网络原来最后两层block5 conv2,block5 conv3训练到最后几乎没有太多的纹理特征。你知道吗?不知道的话可以跟我一起学习学习,我也是个初学者,在国内CNN还没有太流行起来之前就开始跳坑,到现在蹲坑已深。弃坑 ing。。。。

最近为自己所在的公司写了一个工具来分析训练出来的CNN网络模型,如下图所示:从第一张图我们可以看到这张图有一些goldfish金鱼的模型,好像有很多条鱼尾巴,然后中间有好多鳞片,一张很奇怪的图像,但是别嫌弃这张图像,因为假设你把这张图像扔到经过ImageNet数据集训练过的VGGNet模型,1.这张图语出出来为goldfish的概率绝对是99%的,你多试100次看是不是都为goldfish。

同理,第2张图,第3张图,都是这样的结果,连我学文科的妹纸看到这些图就yaya叫,这是什么,好恶心,怎么第3张有点像鸟但是有不是鸟的呢。对,我们搞神经网络的就喜欢这些恶心的图片。越恶心特征越明显。

通过梯度上升获得可视化卷积图

假设人工合成的可视化卷积核图为 x,我们希望这张合成图 x 能够使其对应的神经元(卷积核)具有最高的激活值。所得到的这张合成图像就是该卷基层的卷积核“想要看到的”或者“正在寻找的纹理特征”。也就是说我们希望找到一张图像经过CNN网络,传播到指定的卷积核的时候,这张图片可以使得该卷积核的得分最高。

为了合成这一张图片,我们开始从一张带有随机噪声的图像开始,每个像素值随机选取一种颜色。

接下来,我们使用这张噪声图作为CNN网络的输入向前传播,然后取得其在网络中第 i 层 j 个卷积核的激活 a_ij(x),然后做一个反向传播计算 delta a_i(x)/delta x 的梯度,最后我们把该噪声图的卷积核梯度 来更新噪声图。目标是希望通过改变每个像素的颜色值以增加对该卷积核的激活,这里就使用了梯度上升法:

其中 itselong 为梯度上升的学习率。不断重复上诉过程,直到图像 x 能够让第 i 层第 j 个卷积核具有较高的激活值。

对于具体的实现我们需要定义一个损失函数,该损失函数将用于最大化某个指定卷积核的激活值。以该损失函数作为优化目标,我们可以了解到底什么样的图片才可以使得这个卷积核取得更好的激活值。

现在我们使用Keras的后端来完成这个损失函数, gradients(loss, variables)为返回loss函数关于variables的梯度。

注意这里有个小小的trick——对计算出来的梯度进行了L2正则化操作,使得梯度不会过小或过大,其带来的好处是使梯度上升的过程平滑进行。

后端函数function用传递来的参数实例化一个Keras的Function类返回。这相当于Function的对象当作函数来使用,相当于重载了括号运算符,如outputs = self.train_function(inputs)。

根据刚刚定义的损失函数iterate_fun,现在可以根据梯度上升对卷积核的激活值进行梯度上升计算。

最后输出的图像如下图所示,这不是鱼头?还是羊头?告诉我不看ImageNet的连接我也不知道是什么头。不过这样的方法是我们让输入的图像尽量与卷积核希望看到的东西一样,通过该层卷积核的损失和梯度进行上升补充,对输入的原图进行填充细节,最后得到可视化卷积核图。

可视化所有卷积核图

可视化卷积核是本例子最有趣的部分,也是笔者最喜欢的部分。通过分析CNN网络模型中的卷积核,我们将会看到每一层卷积核到底提取的是什么样的内容、纹理、特征。当我们深入了解CNN模型提取特征背后的意义,就可以有足够信心去修改卷积神经网络CNN的参数。

下面我们将会利用已经训练好的VGG16网络模型,来系统地可视化各个网络层的各个卷积核,看看CNN是对输入进行逐层分解提取特征的到底都是些什么。

最后的执行结果如下图所示,Block1_Conv1的卷积核主要完成如颜色、方向等编码,到了Block2_Conv2的卷积核明显比Block1_Conv1多了更多的纹理和不同的纹理方向,所表达的颜色也更加丰富多样,并且在边缘处可以看到有部分凹凸表现。

随着VGG16网络模型继续深入,这些颜色和方向与基本的纹理进行组合,逐渐生成特殊纹理。当进入Block3_Conv1后,方向和颜色的表现开始变少,开始出现更加复杂的纹理特征(圆形、螺旋形、多边形、波浪等形状组合),到了Block5_Conv1后可以清晰看到其纹理更加特别,卷积核随着网络空间信息的增长而出现了更加精细和复杂的特征。

卷积核变得越来越复杂,因为他们开始纳入越来越大的空间范围信息中,所呈现和表达的信息进一步丰富。

细心的读者经过实际的尝试之后或许会发现:在同一卷积层中会出现少量的可视化卷积核是空白或者相同,这意味着该卷积核对后续的操作并没有产生实际的作用,可以通过Dropout这些卷积核以减少网络的计算liang量和减少过度拟合的可能性。

另外,也会有部分可视化卷积核可以通过旋转平移,获得另外一个可视化卷积核。这是一个很有趣的研究方向,我们或许可以通过寻找一种旋转不变性的方法来潜在地代替网络层中的其他卷积核,从而压缩卷积核的数量。惊讶的是即使对于级别相对高的滤波器,如Block4_Conv1中,通过旋转、平移获得相同的可视化卷积核仍然成立。

可是到了block5 conv3的最后,经过代码实践之后,我们会发现512个卷积核里面只有65个卷积核loss不为0,也就是其余的卷积核已经不能再继续提取高维纹理特征信息了,这是怎么一回事?为什么没有了呢?这也是ResNet或者GoogleNet对于VGGNet的改进,可能有时候CNN网络不是每一个卷积核(神经元)都能参与网络的计算,发挥作用,提取到高维特征。下图为ResNet的跳层方式,因为VGG的block5 conv3、block5 conv2开始出现大量没有用的卷积核,而block4 conv3却有很多有用的信息可以向后传递。

有了对CNN网络模型的可视化分析,我们更加深一步地理解卷积神经网络CNN的具体操作过程,具体提取的是什么样的纹理特征信息。如果你有精力,还可以自己动手指定dropout的神经元,查看自己的卷积神经网络为什么会过度拟合,可以怎么修剪网络。这是一个很有趣的过程,也是一个考验人类耐心的过程。

CNN真的理解视觉吗

卷积神经网络CNN的两个主要作用是:1)把输入的视觉空间图像,解耦成分层次的卷积核组合。2)通过分层次的卷积核把输入的数据映射到不同的几何空间。

有的人会宣称卷积神经网络CNN通过分层思想对输入的图像进行解耦,这一过程模拟了人类视觉皮层,因此才能获得如此精妙的效果。可事实真的是这样吗?从科学的角度来看,这并不意味着我们真的在某种程度上解决了计算机视觉的问题,我们只是使用了数学的方法对输入的图像数据进行抽样和几何空间映射。即使科学是这么解释,但究其竟并没有反驳视觉皮层不是这种工作方式。

深度学习虽然不能表达真正的智力,但毋庸置疑的是其预测效果如此惊人,以至于在近年来没有其他算法可以比拟,甚至在某些情况下超过了人类的预测精度!我们不期待着算法学习我们的思考方式,而应去拥抱数学,用其特殊的方式去为人类服务,继续发现、继续创造、继续在模拟数字领域领跑!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结🎉)
本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。
ShowMeAI
2022/06/14
8540
深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结🎉)
CNN的一些可视化方法!
对神经网络进行可视化分析不管是在学习上还是实际应用上都有很重要的意义,基于此,本文介绍了3种CNN的可视化方法:可视化中间特征图,可视化卷积核,可视化图像中类激活的热力图。每种方法均附有相关代码详解。
Datawhale
2021/01/07
2K0
CNN的一些可视化方法!
CS231n:7 理解和可视化CNN
目前已经提出了几种理解和可视化卷积神经网络的方法,作为对于神经网络不可解释性的一种回应。接下来我们将简单介绍一些方法和相关工作。
Here_SDUT
2022/08/08
7300
CS231n:7 理解和可视化CNN
深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读
从1989年LeCun提出第一个真正意义上的卷积神经网络到今天为止,它已经走过了29个年头。自2012年AlexNet网络出现之后,最近6年以来,卷积神经网络得到了急速发展,在很多问题上取得了当前最好的结果,是各种深度学习技术中用途最广泛的一种。在本文中SIGAI将为大家回顾和总结卷积神经网络的整个发展过程。
SIGAI学习与实践平台
2018/08/07
1.2K0
深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读
一个可视化网站让你瞬间弄懂什么是卷积网络
视频演示:https://mpvideo.qpic.cn/0b2eleaawaaaqeacrtymk5svawodbnmqacya.f10002.mp4?
renhai
2023/11/24
5440
一个可视化网站让你瞬间弄懂什么是卷积网络
【深度】Deep Visualization:可视化并理解CNN
【导读】本文利用非参数化方法来可视化CNN模型,希望帮助理解CNN。 专知公众号转载已获知乎作者余俊授权。 原文地址: https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没有人能够“打开”这个“黑盒”,从数学原理上予以解释。这对理论研究者,尤其是数学家来说当然是不可接受的,但换一个角度来说,我们终于创造出了无法完全解释的事物,这也未尝不是一种进步了! 当然,虽然无法完全“
WZEARW
2018/04/08
2.2K0
【深度】Deep Visualization:可视化并理解CNN
卷积神经网络超详细介绍
上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念,到80年代,Fukushima在感受野概念的基础之上提出了神经认知机的概念,可以看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。
全栈程序员站长
2022/06/29
1.3K0
卷积神经网络超详细介绍
【机器学习-神经网络】卷积神经网络
  本文继续讲解基于神经网络的模型。在MLP中,层与层的神经元之间两两连接,模拟了线性变换
Francek Chen
2025/01/22
2140
【机器学习-神经网络】卷积神经网络
卷积神经网络(CNN)
在当今数字化时代,图像识别技术已经渗透到我们生活的方方面面,从智能手机上的拍照识别功能到自动驾驶汽车的视觉系统,其背后的核心技术之一就是卷积神经网络(CNN)。CNN 是一种深度学习架构,专为处理具有网格结构的数据(如图像)而设计。它通过模拟人类视觉系统的神经元连接方式,能够自动提取图像的特征,从而实现高效的图像识别。
LucianaiB
2025/01/23
3040
阿猫还是阿狗?AI视觉识别中目标检测的关键技术
内容来源:2018 年 04 月 21 日,AI教育求职平台景略集智创始人王文凯在“百度深度学习公开课·北京站:AI工程师的快速进阶之路”进行《目标检测面面观》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
IT大咖说
2018/10/08
1K0
阿猫还是阿狗?AI视觉识别中目标检测的关键技术
【深度学习 | 风格迁移】神经网络风格迁移,原理详解&附详细案例&源码
风格迁移这一想法与纹理生成的想法密切相关,在 2015 年开发出神经风格迁移之前,这一想法就已经在图像处理领域有着悠久的历史。但事实证明,与之前经典的计算机视觉技术实现相比,基于深度学习的风格迁移实现得到的结果是无与伦比的,并且还在计算机视觉的创造性应用中引发了惊人的复兴。
计算机魔术师
2024/01/13
3.7K0
【深度学习 | 风格迁移】神经网络风格迁移,原理详解&附详细案例&源码
从语义上理解卷积核行为,UCLA朱松纯等人使用决策树量化解释CNN
选自arXiv 作者:Quanshi Zhang, Yu Yang, Ying Nian Wu, Song-Chun Zhu 机器之心编译 近日,加州大学洛杉矶分校的朱松纯教授等人发布了一篇使用决策树对 CNN 的表征和预测进行解释的论文。该论文借助决策树在语义层面上解释 CNN 做出的每一个特定预测,即哪个卷积核(或物体部位)被用于预测最终的类别,以及其在预测中贡献了多少。此前,斯坦福大学曾发表了一篇 AAAI 2018 的论文解释如何用决策树解释深度网络,由此可见可解释性的决策树在理解深度网络的进程中将
机器之心
2018/05/11
1.3K0
CNN卷积神经网络及图像识别
神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络是深度卷积神经网络(deep convolutional neural networks, CNNs),虽然卷积网络也存在浅层结构,但是因为准确度和表现力等原因很少使用。目前提到CNNs和卷积神经网络,学术界和工业界不再进行特意区分,一般都指深层结构的卷积神经网络,层数从”几层“到”几十上百“不定。
全栈程序员站长
2022/09/06
6240
CNN卷积神经网络及图像识别
40行Python代码,实现卷积特征可视化
最近在阅读 Jeremy Rifkin 的书《The End of Work》时,我读到一个有趣的关于 AI 的定义。Rifkin 写到:「今天,当科学家们谈论人工智能时,他们通常是指『一门创造机器的艺术,该机器所执行的功能在人类执行时需要智能』(Kurzweil, Raymond, The Age of Intelligent Machines (Cambridge, MA: MIT Press, 1990), p. 14.)」。我很喜欢这个定义,因为它避免了类似」在人类智力意义上 AI 是否真正达到智能」的讨论。
CDA数据分析师
2019/03/08
6100
40行Python代码,实现卷积特征可视化
卷积神经网络表征可视化研究综述(1)
近年来, 深度学习在图像分类、目标检测及场景识别等任务上取得了突破性进展, 这些任务多以卷积神经网络为基础搭建识别模型, 训练后的模型拥有优异的自动特征提取和预测性能, 能够为用户提供“输入–输出”形式的端到端解决方案. 然而, 由于分布式的特征编码和越来越复杂的模型结构, 人们始终无法准确理解卷积神经网络模型内部知识表示, 以及促使其做出特定决策的潜在原因. 另一方面, 卷积神经网络模型在一些高风险领域的应用, 也要求对其决策原因进行充分了解, 方能获取用户信任. 因此, 卷积神经网络的可解释性问题逐渐受到关注. 研究人员针对性地提出了一系列用于理解和解释卷积神经网络的方法, 包括事后解释方法和构建自解释的模型等, 这些方法各有侧重和优势, 从多方面对卷积神经网络进行特征分析和决策解释. 表征可视化是其中一种重要的卷积神经网络可解释性方法, 能够对卷积神经网络所学特征及输入–输出之间的相关关系以视觉的方式呈现, 从而快速获取对卷积神经网络内部特征和决策的理解, 具有过程简单和效果直观的特点. 对近年来卷积神经网络表征可视化领域的相关文献进行了综合性回顾, 按照以下几个方面组织内容: 表征可视化研究的提起、相关概念及内容、可视化方法、可视化的效果评估及可视化的应用, 重点关注了表征可视化方法的分类及算法的具体过程. 最后是总结和对该领域仍存在的难点及未来研究趋势进行了展望.
用户9882025
2022/08/09
5050
服不服?40行Python代码,实现卷积特征可视化
原文:https://towardsdatascience.com/how-to-visualize-convolutional-features-in-40-lines-of-code-70b7d87b0030
用户7886150
2021/01/01
4170
深度学习(三)转-可视化理解卷积神经网络
原文地址:https://www.cnblogs.com/DOMLX/p/9579461.html
徐飞机
2018/09/30
9470
深度学习(三)转-可视化理解卷积神经网络
【Block总结】多尺度并行大卷积核和并行注意力
MSPLCK(Multi-Scale Parallel Large Convolution Kernel,多尺度并行大卷积核模块) 是一种创新的深度学习模块,旨在通过多尺度特征提取和大卷积核的结合,增强模型对局部和全局信息的捕获能力。以下是对 MSPLCK 模块的详细解读:
AI浩
2025/01/10
5870
【Block总结】多尺度并行大卷积核和并行注意力
深入浅出卷积神经网络及实现!
卷积神经网络CNN是深度学习中的基础知识。本文对CNN的基础原理及常见的CNN网络进行了详细解读,并介绍了Pytorch构建深度网络的流程。最后,以阿里天池零基础入门CV赛事为学习实践,对Pytorch构建CNN模型进行实现。
Datawhale
2020/06/16
9280
卷积神经网络
卷积神经网络(Convolutional Neural Networks,CNN)是一种神经网络模型,是深度学习的代表算法之一。它广泛应用于计算机视觉、语音处理等领域,在图像处理,语音识别方面具有非常强大的性能。针对计算机视觉任务,卷积神经网络能够很好的从大量的数据中做到特征的提取,并且降低网络的复杂度。
EmoryHuang
2022/10/31
1.8K0
卷积神经网络
推荐阅读
相关推荐
深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结🎉)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档