鱼羊 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

人工智能风暴袭来,机器人、自动驾驶汽车这样的嵌入式设备也热度渐长。毫无疑问,现在,嵌入式设备也需要高效的神经网络加持。

但是,如何在嵌入式设备上实现高效的神经网络,可不是一件简单的事情。

性能,功耗,成本,都是不得不考虑的问题。每一种不同的应用场景,都需要在神经网络的大小和精确度之间进行特定的权衡(trade-off)。

像自动驾驶汽车,就需要实现对实时视频的精确识别,这意味着嵌入其中的神经网络模型一定是个体积庞大的家伙。

受限于硬件,神经网络必须进行压缩。

在卷积神经网络压缩这个课题上,移动高效架构是主流(MobileNets或ShuffleNets)。

然而,基于移动高效架构的MobileNet-v2在ImageNet对象分类中虽然已经达到了71%的 top-1准确率,但这仍远落后于卷积神经网络的最佳表现83.1%

Facebook的研究人员们决定转换思路,既然如此,何不更专注于传统的卷积网络本身呢?

重新审视神经网络的量化

Facebook提出了一种适用于ResNet类架构的压缩方法,名叫Bit Goes Down

这种方法利用了结构化量化算法PQ(Product Quantization)中卷积的高相关性,重点关注activations的重建,而不是权重本身。

也就是说,这种方法只关注域内输入的重建质量。

研究人员让未经压缩的神经网络充当“老师”,利用图灵奖得主Hinton等人提出的提炼(distillation)技术来指导“学生”网络的压缩。

这一过程无需任何标记数据,是一种无监督学习方法。

具体的实现方法是这样的:

一、层量化

先以全连接层为例。

PQ算法的任务是量化全连接层的权重矩阵。但从实际需求来看,权重不重要,保留层的输出才是研究人员的关注重点。

在上图这种非线性分类器中,不能保证层权重的Frobenius近似是某个任意域输出的最佳近似(特别是对于域内输入)。

因此,研究人员提出了一个替代方案,通过将层应用于域内输入获得输出激活(activations)的重建误差,直接最小化该误差。用编码簿(codebook)最大限度地减少输出激活及其重建之间的差异。

接着要对EM算法(最大期望化算法)进行调整。

E-step是集群分配,这一步通过详尽的探索来执行。

M-step是码字(codeword)更新,这一步通过显式计算最小二乘问题的解来完成,实际上就是在E-step和M-step交替之前,计算x tilde的伪逆。

需要注意的是在E-step之后某些集群可能为空。

对于卷积层情况又是如何呢?

在完全连接层,这一方法适用于任何矢量集,所以如果将相关的4D权重矩阵分割成一组向量,该方法就可以应用于卷积层。

分割4D矩阵的方法有很多,标准就是要最大化矢量之间的相关性,因为当矢量高度相关时,基于矢量量化的方法效果最好。

就像这样,在空间上量化卷积滤波器以利用网络中的信息冗余,不同颜色代表拥有不同码字的子向量。

二、网络量化

接下来,就涉及到对整个神经网络的量化。

首先,这是自下而上的量化,从最低层开始,到最高层结束。

这也就是所谓的用非压缩的教师网络引导学生网络的压缩。主要包括以下两个步骤:

学习码字

恢复该层的当前(current)输入激活,即通过量化后的低层转发一批图像而获得的输入激活。使用这些激活量化当前层。

微调码字

采用Hinton的distillation方法微调码字,以非压缩网络作为教师网络,当前层之前的压缩网络作为学生网络。

在这一步骤中,通过对分配给指定码字的每个子矢量的梯度求平均,来完成码字的精细化。更确切地说,是在量化步骤之后,一次性修复分配。

接下来,就剩下最后一步,全局微调所有层的码字,以减少残余漂移。同时更新BatchNorm层的统计数据。

全局微调使用的是标准的ImageNet训练集。

小体积,高精度

研究人员用Bit Goes Down量化了在ImageNet数据集上预先训练好的vanila ResNet-18和ResNet-50。

在16GB的 Volta V100 GPU上跑了一天之后,终于到了展示成果的时候。

首先,是跟标准ResNet-18和ResNet-50的比较。

对于ResNet-18,在29倍压缩的情况下,模型大小缩小到了1.54MB,而top-1准确率仅比标准模型降低了不到4%。

ResNet-50上模型大小略大一些,但也达到了5MB左右,准确率同样保持在一个可以接受的水平。

跟模型压缩界的前辈相比,Bit Goes Down表现出了它的优势,虽然在1MB的指定大小中败下阵来,但在5MB的比拼中,新方法优势明显,准确率提升了将近5个百分点。

这意味着压缩后的模型获得了非压缩ResNet-50的性能,同时还只有5MB大小。

Bit Goes Down在图像分类上表现不俗,在图像检测方面又如何呢?

研究团队又压缩了何恺明的Mask R-CNN。这回用上了8块V100 GPU来进行训练。

在压缩了25倍的情况下,压缩模型的Box AP和Mask AP都只下降了4左右。

这表现,着实有些厉害。

Facebook表示,Bit Goes Down这样的压缩算法将推动虚拟现实(VR)和增强现实(AR)等技术的进一步发展。

目前,研究团队已经开源了压缩模型及代码,如果感兴趣,你可以亲自复现一下~

传送门

博客地址:
https://ai.facebook.com/blog/compressing-neural-networks-for-image-classification-and-detection/

论文地址:
https://arxiv.org/abs/1907.05686

GitHub地址:
https://github.com/facebookresearch/kill-the-bits

作者系网易新闻·网易号“各有态度”签约作者

近期精选阅读

AI社群 | 与优秀的人交流

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !

5MB的神经网络也高效,Facebook新压缩算法造福嵌入式设备相关推荐

  1. 【一文看懂】深度神经网络加速和压缩新进展年度报告

    郑板桥在<赠君谋父子>一诗中曾写道, "删繁就简三秋树,领异标新二月花." 这句诗讲的是,在画作最易流于枝蔓的兰竹时,要去掉其繁杂使之趋于简明如"三秋之树&q ...

  2. 你是如何快捷、高效获取新知识的?

    一次,同学问我"Redhat平台下的服务器叫什么?",答案无疑是"Apach".后来,我想他怎么不会在 Baidu 里搜索一下答案就出来籽?但这可以理解,他不是 ...

  3. Facebook 最新可佩戴 AR 设备、AR 设备未来五年市场扩张、语音社交新创Swell等|Decode the Week...

     Decode the Week ≠音视频技术周刊  Credit: Me Kyeoung Lee  /News Briefing.  Clubhouse 聘请 Instagram 前高管  Club ...

  4. Facebook新财报:不惧“隐私门“事件影响,广告业务依然增长强劲

    2019年新一季度的美股财报已拉开序幕,在这里面全球科技巨头的新财报最受外界的关注,尤其是不少美股企业进入2019年后股价表现势如破竹,投资者们更加想知道到底哪些巨头的股票在接下来值得重点投资.其中F ...

  5. 计算机考研英语题型,2019考研英语大纲发布,如何高效备考新题型

    2019考研大纲已发布,新大纲变化如何?有哪些增改考点需要注意?后续复习该如何调整?新东方在线考研名师团队及时为大家解析大纲变化,传授备考攻略.更多2019考研英语大纲.考研政治大纲.考研数学大纲.考 ...

  6. ECA-Net:深度卷积神经网络的高效通道注意力

    ECA-Net:深度卷积神经网络的高效通道注意力 1.什么是注意力机制? 2.简介 3.ECANet注意力模块 3.1 回顾SENet模块 3.2 ECANet模块 3.3 ECANet代码复现 4. ...

  7. f4 stm32 神经网络_STM32神经网络开发工具箱将AI技术引入边缘和节点嵌入式设备...

    94 Microcontrolers & Embedded Systems 2019 年第2 期 www.mesnet.com.cn 全新Arm ISP技术为智能设备打造 更敏锐的数字眼 Ar ...

  8. 新十年嵌入式音频的五大趋势

    新十年嵌入式音频的五大趋势 Five embedded audio trends for the new decade 很难相信正在进入一个新的十年.十年前,像Alexa这样的语音技术甚至还没有成为现 ...

  9. 一张图看懂阿里云新发布的物联网设备上云神器——HiTSDB + IoT套件

    近日,阿里云针对物联网企业遇到的设备认证困难.安全问题突出等问题,发布了HiTSDB +IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备 ...

最新文章

  1. MongoDB for C#基础入门
  2. 表的垂直拆分和水平拆分
  3. spring-data-redis相关api
  4. oracle--导出、导入blob类型的字段
  5. Silverlight 解谜游戏 之十七 胜利界面优化
  6. 在Linux下安全删除eSATA设备
  7. Sofia-SIP辅助文档三 - 编码指南
  8. linux 脚本 格式化,Shell脚本批量格式化文件名
  9. 最佳10大开源项目管理系统
  10. 虚拟机VirtualBox中Ubuntu和windows共享文件夹访问权限问题
  11. java io 系列(转载skywang12345)
  12. java 两张图片合并_java实现把两张图片合并(Graphics2D)
  13. java对象的内存布局
  14. 图片分类网络ViT、MobileViT、Swin-Transformer、MobileNetV3、ConvNeXt、EfficientNetV2
  15. 移动WEB - 自我总结
  16. 仿豆丁网仿百度文库在线文档分享源码(全套和全部转换工具后台)
  17. 对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离
  18. 希沃集控系统流媒体服务器未开启,希沃集控 | 轻松掌控区域信息化情况
  19. mysql视图的特点有哪些_MySQL之视图
  20. Android使用SQLiteOpenHelper实现离线浏览

热门文章

  1. Laravel5.4重新登陆跳转到登陆前页面的原理和实现
  2. 【翻译】【linux设备驱动】linux地址类型
  3. Gradle sync failed: failed to find Build Tools revision 21.1.2
  4. NHbiernate 配置
  5. lnmp.org + phpstorm + xdebug
  6. 单选项选择时,即时更新至数据库
  7. outlook2007 未知错误,代码0x80040600解决方法
  8. jdk动态代理实例和cglib动态代理实例_CGLib 动态代理 原理解析
  9. BeagleBone Black项目实训手册(大学霸内部资料)
  10. node.js request get 请求怎么拿到返回的数据_使用JS和NodeJS爬取Web内容