热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

稀疏学习:从人脑得到灵感,让深度学习突破算力限制

大数据文摘出品来源:timdettmers编译:张秋玥、Luciana、钱天培深度学习的重要推动力是计算力的进步。从2010年到2018年,GPU性能提高了97倍。但是,由于我们几




大数据文摘出品

来源:timdettmers

编译:张秋玥、Luciana、钱天培


深度学习的重要推动力是计算力的进步。


从2010年到2018年,GPU性能提高了97倍。但是,由于我们几乎已达到了半导体技术的物理极限,可以预计,在未来5-8年内GPU性能的提升仅会略高于80%。


在无法进一步提高计算能力的情况下,我们还能进行什么样的研究呢?


一种可行的研究方向是,从人脑中寻找灵感。


人类大脑消耗的能量是GPU的十分之一,但强度要高出10 ^ 9倍。是什么让大脑如此高效?


原因有很多,而其中一个就是是稀疏性


研究已经发现,灵长类生物大脑中的神经元越多,平均下来每个神经元与其他神经元的连接就越少(来自Herculano-Houzel等人的研究,2010)。这与我们设计深度神经网络的方式恰恰相反。深度神经网络更倾向于将每一层中的每个新神经元都与前一层中的所有神经元连接起来。


我们已经知道如何将一个完全训练好的稠密网络压缩到稀疏网络,但是,让一个网络在训练期间始终保持稀疏却很少被研究。


我们如何才能做到这一点的呢?今天,我们就要介绍ELMo作者Luke Zettlemoyer的最新研究,稀疏动量——一种训练稀疏网络的有效方法


优秀的稀疏学习算法长什么样?


在稀疏学习中,最重要的是尽可能有效地使用神经网络中的每一个权重。如果将“有效性”定义为“减少误差”,那么我们的下一步就很明确了。我们需要找到能够一个指标——它应当能够衡量一个权重减少误差的效果,并删除所有并不能减少误差的权重。一旦移除了权重,就可以在我们认为有望减少未来误差的位置重新生成新的权重。


如果只是关注关于权重的误差梯度,那我们确实有这样的指标。然而,如果我们观察连续梯度,就发现梯度的变化可能会非常的大。例如,加入你有一个神经网络对手写数字0到9进行分类,那么某一权重可能能够很好地检测到顶部的直线——这可能有助于减少数字5和7的错误,但是它可能并无法辨认数字0,1,2,3,6,8,9(或者甚至只会帮倒忙!)。相反,检测右上方曲线图案的重量可能有助于辨认0,2,3,8,9。因此我们可以认为,随着时间的推移,这一权重将比“顶部直线”权重能够能更加一致地减少误差。那么,我们如何自动检测神经网络中这种有用的权重呢?


动量:找到能够始终如一地减少误差的权重


打个比方,如果将北极作为局部最小值并使用罗盘针向局部最小值的渐变,那么您可以通过摇动指南针来旋转罗盘针来模拟随机梯度下降更新。每次针经过正北时,它会逐渐减速,然而,由于旋转,它仍会“超过”该方向。但是,如果你取平均指示 - 一次指针位于北极左侧,另一次指向右侧 - 这些偏差抵消了,你会立即得到一个非常接近的方向真正的北极。


这是动量优化技术背后的主要思想:我们对连续梯度取平均值以更好地估计局部最小值的方向。与罗盘指针在慢下来的时候会逐渐变得越来越准确这一特性类似,我们希望在随机梯度下降中更加高度地加权最近的梯度方向。一种方法是指定一个加权平均值,我们为当前梯度分配一个更大的权重,为前一个梯度分配一个小权重——这称为指数平滑。通过指数平滑权重的梯度,我们得到一个加权梯度矩阵——这个矩阵是动量矩阵(这就是动量优化这一名字的由来)。通过这一指标,我们可以确定哪些权重能够一致地减少误差。


重新分布权重:层平均动量大小


如果一个权重的动量表明它一致地减少了多少误差,那么一个层中所有权重的平均动量大小应该表明每个层平均减少了多少误差。通过获取层的平均动量大小,我们可以轻松地比较每层中平均重量的有效性。这就使我们可以有底气地说,例如,卷积层A中的权重平均只有完全连接层B的1/3,反之亦然。这种方法使我们能够有效地重新分配权重:如果我们发现“无用”权重,现在我们就能够很精确地知道到底把它放在哪一层了。可是这下问题又来了——在这一层中,我们把它具体放哪儿呢?


该删除哪些权重,在何处重新分配权重?


我们可以从以下两个问题着手:哪些是最无用的权重因素?我们应该在哪一层特征中增加权重?第一个问题在神经网络压缩研究中十分常见,我们采取修剪小量级权重的方式,这种方式意义重大。假设所有权重具有相似量级的平均输入,并使用批量归一化方法,那么小量级权重会使神经元产生激活差异最小,因此,删除这些小量级权重对神经网络法预测性能的改变最小。


一旦我们移除了小量级权重,重新分配剩余权重到有效层(由平均动量确定),就需要确定此权重在相应有效层的发展位置。首先思考一个问题:“连接哪些神经元可以协同减少误差?”答案很明显,取决于动量的大小。但无论如何,我们需要先找到缺失或零值权重的动量值(之前我们从训练中排除的那些),在这些缺失权重的位置增加动量值大的权重,这样就完成了稀疏动量算法,此过程如下图所示。


稀疏动量通过查看临近梯度(动量)的加权平均值来确定在稀疏网络中增加新权重的位置,以找到能够一致减少误差的权重和层。(1)我们根据平均动量大小确定每层的重要性。(2)我们删除每一层较小50%的权重。(3)然后,我们根据层的重要性在层之间重新分配权重。在每一层中,我们增加大动量之处的权重。


结果


结果令人振奋!稀疏动量法得出的结果表明,它胜于基于MNIST手写数据集的其他压缩算法。首先,它提供了一种实现方式:从密集网络开始,重复重新训练稀疏网络;其次,可以通过使用20%密集权重(即80%稀疏权重)匹配密集网络的性能。为便于理解此结论,我们同时将稀疏动量法与基于CIFAR-10数据集的单发网络修剪法进行比较,毫无疑问,对比得出稀疏动量法更胜一筹。在基于CIFAR-10数据集的单发网络修剪法中,VGG16-D和WRN16-10模型可以通过使用5%密集权重匹配密集网络的性能,其他模型的密集权重水平与稀疏动量法的密集权重水平近似。此外,通过优化的稀疏卷积算法,使用WRN 16-10模型可以保证在实现相同性能情况下使训练速度提升12倍。





在ImageNet图像识别数据库中,我们无法达到密集性能水平,这表明需要改善稀疏动量的指标。但无论如何,稀疏动量法与其他方法相比,在训练样本过程中实现保持稀疏权重方面,具有明显优势。


加速效果


稀疏学习预示了我们需要加速样本的训练,我们是否已经做到了?似是而非。如果权衡稀疏卷积的加速效果,稀疏动量可以有效地加速训练,但由于稀疏神经网络法近期才用于训练,对于GPU来说尚未建立优化的稀疏卷积算法,目前,至少对于稀疏动量法,细粒度稀疏模式的权重表现如此。


因此,我们将加速效果分为两组:一组假设存在某种稀疏卷积算法来实现加速,另一组使用标准密集卷积算法来实现加速。究竟密集卷积法如何帮助稀疏网络实现加速呢?


当看到神经网络稀疏模式出现卷积通道完全为空的情况,即出现一个全零的卷积滤波器时,我们便可以从计算中删除此通道,同时不改变卷积的结果,从而获得加速效果。


应用最佳稀疏卷积法和朴素密集卷积法所获得加速效果


但是,我们从加速效果中发现,最佳稀疏卷积法和朴素密集卷积法大相径庭,这正好清楚地表明了GPU对的优化稀疏卷积算法的需求。


为什么稀疏学习有效?


我们使用稀疏动量法训练的样本与使用仅有5%权重的密集卷积法的性能水平相当。是什么原因让这5%的权重如此高效,可以与稀疏动量法权重的20倍相匹配呢?


为了研究这个问题,我们对比了稀疏网络法与密集网络法的不同特征,其中低层特征例如边缘检测器,中层特征例如轮子、鼻子、眼睛、爪子,高层特征例如汽车表面,猫脸,冰箱门等。


边缘检测器可以有效减少卷积通道中特征的数量即神经元数量,同时可以确定卷积通道对数据集中数据分类的决定程度。边缘检测器对数据集中所有类型数据都适用,也就是说它的类特化水平较低,像眼睛这样的中级特征对例如猫,狗和人类的数据比较适用,高级特征类特化水平较高,常用来选取特定的类别。


AlexNet模型,VGG16模型和WRN 28-2模型的稀疏动量法和密集网络法的类特化直方图


我们发现,平均而言,稀疏网络学习法的特征可供学习的范围更广,这可以解释为什么稀疏网络法可以与只用5%的权重的密集网络法的性能相匹配。


稀疏学习法的未来


我认为稀疏学习法的前景非常光明,一方面,未来几年内GPU的性能不会有大的变化,另一方面,用于负载稀疏学习法的专用处理器Graphcore(核图形处理器)即将面世: 核图形处理器将整个神经网络存储在300 MB缓存空间中,同时将速度提升约100倍。这意味着如果训练样本时我们将神经网络数据压缩到300 MB,训练速度整体将提高100倍。那么使用一个核图形处理器在ImageNet图像识别数据库上训练50个残差样本只需要大约15分钟,当然,通过稀疏学习法,数据可以毫无疑问的地控制在300 MB大小以内。


由此可以预测,第一个能够在核图形处理器上成功训练稀疏神经网络的研究团队,将开启人工智能领域的新世界的大门。除此之外,稀疏学习算法的另一个挑战是将其应用于自然语言处理(NLP)。基于我的实验,毫无疑问,与计算机可视化相比,在使用自然语言进行稀疏学习方面,还需要加强。


相关报道:

https://timdettmers.com/2019/07/11/sparse-networks-from-scratch/



推荐阅读
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 深度森林算法解析:特征选择与确定能力分析
    本文深入探讨了深度森林算法在特征选择与确定方面的能力。提出了一种名为EncoderForest(简称eForest)的创新方法,作为首个基于决策树的编码器模型,它在处理高维数据时展现出卓越的性能,为特征选择提供了新的视角和工具。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 全文共3708字,预计学习时长10分钟图源:unsplashPthon之所以能成为世界上最受欢迎的编程语言之一,与其整体及其相关库的生态系 ... [详细]
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 步入人工智能新时代,掌握这些关键知识点至关重要。AI技术将成为人类的重要辅助工具,不仅能够扩展和增强人类的智能,还能帮助我们实现更加卓越的成就。新一代人工智能技术的发展将为各行各业带来深远的影响,推动社会进步与创新。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 第三届人工智能、网络与信息技术国际学术会议(AINIT 2022)
    20223rdInternationalSeminaronArtificialIntelligence,NetworkingandInformationTechnology第三届 ... [详细]
author-avatar
Caroline19921009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有