热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

​卷积层和分类层,哪个更重要?

点击上方“小白学视觉”,选择加星标或“置顶”重磅干货,第一时间送达来自|知乎https:www.zhihu.comquestion270245936

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

来自 | 知乎

https://www.zhihu.com/question/270245936

编辑 | 深度学习这件小事

本文仅作学术分享,若侵权,请联系后台删文处理

卷积层和分类层,哪个更重要?

在分类任务里,一个网络能达到比较好的效果,那么是其中提feature的卷积层效果比较好呢,还是分类器训练的比较好?哪个更重要一点呢?

因为我想直接拿预训练的网络提的feature做其他的事情,并不是要单纯完成分类任务,所以我不确定卷积层提的feature是不是就是我想要的,因此提出这个问题。

夕小瑶


机器学习 话题的优秀回答者

https://www.zhihu.com/question/270245936/answer/356176790

这个问题虽然问的很大,但是在细分领域内蛮有意思的(感谢题主你将讨论范围限定在分类,要不然真没法答了)

正好以前研究过这个问题,基于图像和文本这两个经典领域说一下吧。先说感性结论,强特征数量多但是容易提取的话分类层更重要,反之卷积层更重要。压榨分类性能的话依然是卷积层更重要

图像分类场景

图像任务貌似没什么悬念,从LeNet,AlexNet到GoogLeNet, ResNet等,卷积层数的加深对模型性能的提升是大家有目共睹的事情,这其中一个很重要的原因就是图像数据中对于分类描述能力强的特征往往隐藏的很深,难以直接在原始像素数据中描述。以人脸检测为例,想象一下手写一个规则来映射像素值到高level特征“嘴”的难度。但是,想象一下,如果我们得到了一个样本的高level特征,比如特征向量的每个维度分别描述图片里有眼睛,鼻子,嘴的可能性,那么这时再做人脸检测的话是不是就容易多了?手写规则都感觉貌似可以做的不错(一条简单粗暴的规则:设置一个决策阈值将各个特征cast到bool型,然后眼睛+鼻子+嘴=人脸,else=无人脸)。

也就是说,在人脸检测任务中,强分类特征隐藏很深但是数量不多,一旦提取到了这些较为有效的特征,分类就变得异常容易(相对来说)。所以对于图像分类来说当然是要花大精力去提取这些特征啊,所以你看,大佬们把卷积层做的这么深,分类层却没太大的变化,懂了吧~(当然,这里说的眼睛,鼻子,嘴等强特征不一定能被深度卷积层学习到,但是毫无疑问的是顶层卷积层的神经元一定学到了其他类似的强特征[1])

文本分类场景

文本分类则恰好是对面的世界。试想一下,你要对文本进行情感分类时,文本里的有效特征容易get吗?简直一想一大把哇,比如“开心”,“好棒”,“难过”,“烦”,“伤心“都是对于分类来说非常实锤的强特征,基本上只要样本里出现了其中一个特征,就能以非常大的把握决定这个样本的情感极性。也就是说,文本分类里的强特征藏的非常浅,从原始数据里可以轻松描述。但是,这些强特征也非常之多,情感词有多少?情感短语呢?是不是觉得数不清哇?数不清就对啦~

但是,拿到一个样本的一组强特征后,好不好准确分类呢?对于大部分样本来说,直接学习每个特征的权重然后做个简单的加权就好咯,这确实可以取得非常好的效果,因此朴素贝叶斯这个异常简单的线性分类器以及2014Kim提出的这个简单的浅卷积文本分类器[5](俗称TextCNN)可以在文档分类任务中取得非常高的性能。如图1。

图1 TextCNN

但是总有一些描述“隐晦”的样本,可能明褒暗贬,那这种线性分类器就无力了。怎么办呢?

当然是加强分类层呀~让分类层给每个情感词的重要性打分!让分类层去描述中性词与情感词的作用关系,让分类层找出情感词共现的分类规律,反正我提取特征的层已经给你把特征提取出来了哼。

好了口说无凭,近年来已经有不止一篇paper专门研究文本分类里的卷积层深浅的有效性问题,[2]使用[4]这个简单的一层卷积+线性分类就已经足以让文本分类取得非常好的效果了,而作者将DenseNet直接拿来用发现效果很差劲,性能如下表。

[3]类似。同时[4]提出的DAN(Deep Averaging Nets)恰好是指出特征随便提取一下(仅使用神经词袋模型),然后分类层疯狂加深,则发现可以大幅提升文本语义的描述能力,如图2。

图2 DAN arch

同时我自己也做了一下相关研究,发现仅使用1层CNN+3层全连接即在大多数文本分类数据集上超过了当时的state-of-art,当时做实验时首先用的是1层CNN1层全连接,也就是2014Kim[5]的这个经典结构,然后加深CNN却发现模型性能不升反降,但是加深全连接却明显提升,加到3层时提升的效果很显著,4层又能得到小幅提升,5层出现下降,6层下降明显。所以在出现提取了大量强特征的情况时,考虑加深一下分类层还是比较有意义的尝试。

“职责转移”问题

直到2017ACL上有篇文章提出的Deep Pyramid CNN (DPCNN)[6],才让人觉得貌似word-level的文本分类模型也是可以做的很深嘛,只不过确实要设计的非常谨慎。DPCNN结构如图3。

图3 DPCNN arch

诶?刚不说了强特征数量多但是容易提取时,CNN没必要太深,分类层值得加深嘛?

其实这里是存在一个“职责转移”的通道的。众所周知,把分类层做深是计算代价很高、学习效率很低的操作,而卷积层则高效的多。既然加深分类层获得性能增益的原理是学习特征之间的关联与权重,也就是类似于将特征进行加权以及合并。那么其实这个过程可以提到卷积层进行。

想一想,如果特征“不要”和“太好”在文本里先后邻接出现的话,那显然这两个强特征可以合并为“不要太好”这个强特征,类似于“很好”的语义。同样,特征之间还可以通过句法关系来进一步合并,只不过这种句法关系可能空间上相隔较远,需要多叠几层卷积层才方便捕捉。通过卷积层来进行特征合并更加接近样本里本来的特征作用关系,因此这种操作在这一层面上反而是比加深分类层更加高效明智的。

也正因为如此,随便一加深卷积层是容易起反效果的,这时既难以很准确的合并特征,还可能产生了一堆干扰分类的噪声特征,正如[2]中展现的DenseNet直接从图像领域拿到文本领域是非常不work的,而经过精心设计的DPCNN[6]就能取得显著的分类性能提升。我猜这也是为什么时隔这么久才在文本分类领域出现一个word-level “ResNet”的原因吧。


参考文献

[1] http://www-cs.stanford.edu/people/ang/papers/icml09-ConvolutionalDeepBeliefNetworks.pdf

[2] Le H T, Cerisara C, Denis A. Do Convolutional Networks need to be Deep for Text Classification?[J]. arXiv preprint arXiv:1707.04108, 2017.

[3] Rie Johnson and Tong Zhang. 2016. Convolutional neural networks for text categorization: Shallow word-level vs. deep character-level.arXiv:1609.00718 .

[4] Iyyer M, Manjunatha V, Boyd-Graber J, et al. Deep unordered composition rivals syntactic methods for text classification[C]//Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing (Volume 1: Long Papers). 2015, 1: 1681-1691.

[5] Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.

[6] Johnson R, Zhang T. Deep pyramid convolutional neural networks for text categorization[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017, 1: 562-570.

好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

下载1:Pytorch常用函数手册

在「小白学视觉」公众号后台回复:pytorch常用函数手册,即可下载含有200余个Pytorch常用函数的使用方式,帮助快速入门深度学习。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等52个视觉实战项目,助力快速学习计算机视觉。

下载3:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~



推荐阅读
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • Webdriver中元素定位的多种技术与策略
    在Webdriver中,元素定位是自动化测试的关键环节。本文详细介绍了8种常用的元素定位技术与策略,包括ID、名称、标签名、类名、链接文本、部分链接文本、XPath和CSS选择器。每种方法都有其独特的优势和适用场景,通过合理选择和组合使用,可以显著提高测试脚本的稳定性和效率。此外,文章还探讨了在复杂页面结构中如何灵活运用这些定位技术,以应对各种挑战。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 开源实习机会 | Compiler SIG 正式发布实习任务,诚邀您加入申请!
    对编译技术充满兴趣却苦于无从入手?当前疫情形势下,外出实习变得困难重重?现在,Compiler SIG 正式发布了一系列实习任务,为有志之士提供了宝贵的机会。无论你是初学者还是有一定基础的学生,都能在这里找到适合自己的实践项目。我们诚挚邀请您的加入,共同探索编译技术的无限可能! ... [详细]
author-avatar
吴伟琬63526
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有