没有合适的资源?快使用搜索试试~ 我知道了~
61神经再生:通过提高计算资源利用率来改善深度网络训练乔思远1林哲2张建明2AlanYuille11约翰霍普金斯大学2Adobe Research{siyuan.qiao,alan.yuille}@ jhu.edu{zlin,jianmzha}@ adobe.com摘要本文研究了提高神经网络计算资源利用率的问题为了实现良好的性能,深度神经网络通常对其任务进行过度参数化这一观察激发了许多研究课题,例如。 网络修剪、架构搜索等。作为具有较高计算成本的模型(例如,多参数或多计算)通常具有更好的性能,我们研究了提高神经网络资源利用率的问题,以便进一步发挥其潜力。为此,我们提出了一种新的优化方法命名为神经再生。顾名思义,我们的方法检测死亡神经元并实时计算资源利用率,通过资源重新分配和重新初始化来恢复死亡神经元通过简单地用神经恢复替换标准优化器,我们能够在使用类似的训练算法的同时,大大提高神经网络的性能。合理利用公共资源。然而,关于网络修剪的大量工作[40,64]已经表明,许多由SGD训练的神经网络的资源利用率不令人满意。例如,在CIFAR [33]上训练的VGG [54]网络的参数数量可以压缩10倍,而不会影响其准确性[40]。这种低利用率导致训练和测试时间的浪费,并限制了模型充分发挥其潜力。为了解决这个问题,我们研究了新的神经网络训练和优化技术,以提高资源利用率和准确性。形式上,本文研究了以下优化问题。我们给出定义在来自数据集D的数据(x,y)上的损失函数L(f(x;A,θA),y)和计算资源约束C。这里,f(x;A,θA)是一个结构为A的神经网络,由θA参数化。令c(A)用f表示使用架构A的成本,例如,c(A)可以是A或其FLOP中的参数的数量 我们的任务是找到A及其参数θA,使数据集D在资源约束C下的平均损失L最小,即。、并保持其原有的资源使用。A,θA= argmin1ΣN.ΣLf(xi; A,θA),yi代码可在此处获得:https://github.com/joe-siyuan-Qiao/NeuralRejuvenation-CVPR19A,θANi=1S.T. c(A)≤C(一)1. 介绍深度网络在许多视觉任务中实现了最先进的性能[9,23,42,47]。在ImageNet [53]分类等大规模任务中,一个常见的观察结果是,具有更多参数或更多FLOP的模型往往会获得更好的结果。例如,DenseNet[28]将验证错误率绘制为参数和FLOP数量的函数,并显示随着模型大小的增加,一致的准确性提高。这与我们的直觉是一致的,即大规模任务需要具有足够能力的模型因此,如果额外的COM-1000可以训练更大的模型,在Adobe实习时完成的工作结构A通常由研究人员设计,并在最小化Eq. 1,因此解A,θA将总是满足资源约束。 当A固定时,θA由标准的基于梯度的优化器找到可能具有对平均损耗影响很小的神经元(即信道),去除这些神经元将在保持良好性能的同时节省资源换句话说,θA可能无法充分利用A中的所有可用资源。设U(θA)表示基于θAA的计算资源的减少,这可以通过去除对输出影响很小的死神经元来显然,U(θA)≤c(A)。正如以前的工作[40]所建议的,通过标准SGD训练的利用率r(θA)=U(θA)/c(A)可以低至11。百分之五低利用率激发了对网络的研究62修剪[40,64],即从A中提取有效子网A′,使得c(θA′)=U(θA). 虽然利用率r(θA′)很高,但这与我们的问题相反,因为它试图通过将c(A)向U(A)移动来缩小c(A)和U(A)之间的差异。相比之下,我们的目标是设计一个优化过程P,使我们能够找到参数θA=P(A,L,D)具有高r(θA)。换句话说,我们试图将U(A)移向c(A),这使得约束C的实际利用率最大化。利用率r(θA)低的原因是多方面的。一个是初始化错误[14],这可以通过对备用资源进行参数重新初始化来缓解。另一个是资源分配效率低下[16],例如:通道的数量或块的深度可能没有被适当地配置以满足它们的实际需要。与之前通过训练大量网络来搜索架构的方法[16,39]不同,我们的目标是设计一个优化器,该优化器只训练一个网络一次,并且包括资源重新初始化和重新分配,以最大限度地提高资源利用率。在本文中,我们提出了一种名为神经再生(NR)的优化方法我们的方法是直观和简单的。在训练过程中,由于一些神经元可能被发现是无用的(即对输出几乎没有影响),我们用新的初始化来恢复它们,并将它们分配到最需要它们的地方。从神经科学的角度来看,这是通过使死亡的神经元恢复功能来恢复它们的活力[12] -因此得名。神经再生的挑战也很明显。首先,我们需要一个实时的资源利用监控器.其次,当我们使死亡的神经元再生时,我们需要知道如何重新初始化它们以及将它们放置在哪里最后,死亡神经元再生后在神经元的返老还童过程中,存活的神经元(S神经元)和返老还童的神经元(R神经元)混合在一起,如何在它们都存在的情况下训练网络尚不清楚。我们的解决方案是一个即插即用的优化器,其代码将公开。 在引擎盖下, 标准的基于梯度的优化器,但具有额外的功能,包括实时资源利用监控,死神经元再生,以及为具有混合类型神经元的网络设计的新训练方案。我们介绍这些组件如下。与[40,64]类似,我们使用神经元的激活尺度来识别已使用和空闲的计算资源,并计算训练期间的实时利用率r(θA)如果r(θA)低于阈值Tr ,则事件将被触发,死亡神经元的再生过程将在下一步训练之前进行控制,之后r(θA)将回到1。死亡神经元再生这个组件通过收集未使用的资源并将它们放回A中来再生死亡神经元。类似于MorphNet[16],更多的空闲资源被分配给具有更多S的层神经元然而,与MorphNet [16]在重新排列后从头开始训练整个网络不同,我们只重新初始化死亡的神经元,然后继续训练。通过利用死神经元重新初始化[14]和我们的训练方案的优势,我们的优化器能够只训练一个模型一次,并且优于MorphNet [16]从许多架构中找到在死亡神经元再生之后,每层将具有两种类型的神经元:S和R神经元。我们提出了两种新的训练方案,用于不同的情况下,训练网络与混合类型的,神经元第一种方法是消除S和R神经元之间的交叉连接,第二种方法是利用它们之间的交叉注意来增加网络容量。秒3.3详细讨论。我们在两个常见的图像识别基准上评估了NeuralRejuvenation,即CIFAR-10/100 [33]和ImageNet [53],并表明它的性能远远优于基线优化器。例如,我们将ResNet-50 [23] 在 ImageNet 上 的 top-1 错 误 降 低 了1.51%,将MobileNet-0.25 [27]降低了1.82%,同时保持了它们的FLOP。在CIFAR上,我们将资源恢复到约束的一半,并与之前最先进的压缩方法[40]进行比较,我们在CIFAR-10上的表现优于CIFAR-10的0.87%和CIFAR-100的3.39%2. 相关工作人们普遍认为,深度神经网络是过度参数化的[2,11],以赢得过滤器彩票[14]。这个效率问题可以通过许多方法来解决,包括权重量化[10,51],低秩近似[11,34],知识,边蒸馏[26,63]和网络修剪[20,22,36,38、40、45、64、65]。最相关的方法是网络修剪,它可以找到对输出影响最大的子网。网络剪枝有几个研究方向,如权值剪枝、结构剪枝等。权重修剪侧重于单个权重[18,20,22,36],但需要专用的硬件和软件实现来实现压缩和加速[17]。结构修剪识别要从架构中移除的通道和层,因此能够直接实现加速,而不需要专门的实现[1,25,35,41,45、59、68]。在[40,64]之后,我们通过对比例因子施加惩罚项来鼓励信道与以往的方法不同,神经恢复从一个新的角度来研究效率问题:我们的目标是通过重用空闲的计算资源来直接最大化利用率。作为彩票假设的类比[14],神经再生就像是为无用的彩票退款,然后购买新的。63Σ1Bi√2交叉注意在这项工作中,我们建议使用交叉注意,以增加网络的容量,而不引入额外的成本。这是通过在多分支网络上添加二阶变换[15,32,57]来作品[23,28,50,55,56,58]。与[57]中使用几何平均值不同,我们建议使用交叉注意[21,37]作为二阶项来增加容量。注意力模型已被广泛用于深度神经网络中的各种视觉和语言任务,如物体检测[3,44,48,66],机器翻译[4],视觉问题回答[8,60]、图像字幕[61]等。与以前的注意力模型不同,我们的方法使用一组通道来产生对其他通道的注意力,并且我们的注意力模型主要用于增加容量。架构搜索我们的目标由Eq. 1类似于神经架构搜索,其通过在预定义的空间中搜索架构A来解决问题,因此他们需要训练大量的网络来找到最佳架构。例如,NAS [69]使用rein-principle learning来查找架构,[70]通过使用更结构化的搜索空间来扩展它,[39]通过逐步查找架构来提高搜索效率但是它们的计算成本非常高,例如,,[70]使用2000 GPU天。有更多的方法专注于搜索问题[5,6,13,43,46,52,67]。不同于架构搜索,神经再生不搜索A这需要成千上万的模型来训练,尽管它确实改变了一点架构。相反,我们的方法是一种优化技术,只需一次训练即可训练模型。最接近的方法是Mor-phNet [16],因为我们都使用线性扩展技术算法1:SGD与神经再生输入:学习率ε、利用率阈值Tr、初始架构A和θA以及资源约束C1 不符合:2对小批量{(x1,y1),., (xm,ym)};3计算梯度g<$m <$iL(f(xi;A,θA),yi);4应用更新θA=θA−θ·g;5如果神经再生标志开启:6计算利用率r(θA);7如果r(θA)
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功