百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

INQ问世,让深度神经网络百倍无损压缩美梦成真!

wptr33 2025-02-28 17:40 14 浏览

智东西

文 | 英特尔中国研究院

近几年来,深度学习技术在计算机视觉、语音识别和自然语言处理等诸多领域取得的了一系列重大突破。然而,深度学习的发展依然面临诸多问题。尤为突出的是,时下主流的深度神经网络,一般包含数千万甚至是过亿的学习参数,而如此海量的参数给神经网络模型在存储、计算和功耗开销等方面带来了严峻的考验。

针对上述问题,英特尔中国研究院于近期提出了一种名为INQ(Incremental Network Quantization)的神经网络无损低比特量化技术。给定任意结构的全精度浮点神经网络模型(诸如AlexNet, VGGNet, GoogleNet和ResNets),我们此次提出的INQ技术能高效地将其转换成无损的低比特二进制模型,从而很好地解决了现有神经网络量化压缩方法的不足,为深度神经网络在定制化硬件上的部署、加速等开辟了新途径。

神经网络无损低比特量化技术

研究人员此前已经提出了很多神经网络量化压缩方法,但现有方法存在两方面的应用瓶颈:其一,来自量化压缩过程的网络精度损失依然不可忽视,在一定程度上限制了量化后模型的使用接受程度;其二,大多数量化压缩方法仅适用于处理特定的模型结构或者特定类别的层,一定程度上限制了方法的泛化能力和量化压缩的性能。

英特尔中国研究院认知计算实验室的姚安邦、郭怡文、周奥军、徐琳、陈玉荣等研究人员所提出的INQ技术,极其有效地解决了现有方法泛化能力不足,模型精度损失明显,以及重训练时间长等问题。

该技术提出了渐进式神经网络量化思想,其核心是引入了参数分组、量化和重训练三种操作。我们在实现中首先将全精度浮点网络模型中每一层参数分为两组,第一组中的参数将被直接量化并固定,而另一组中的参数将通过重训练以补偿量化给模型造成的精度损失。然后,上述三种操作将依次迭代应用到完成重训练后的全精度浮点参数部分,直到模型完全量化为止。通过巧妙耦合参数分组、量化和重训练操作,该技术抑制了模型量化造成的性能损失,从而在实际中适用于任意结构的神经网络模型。

INQ渐进式网络量化策略

(绿线代表当前已经被量化的网络连接;蓝线代表需要重新训练的网络连接)

值得一提的是,该技术还包含另外两个亮点。其一,在模型量化过程中,所有参数被限制成二进制表示,并包含零值,极限量化结果即为三值网络或者二值网络。这种量化使得最后的模型非常适合在硬件上部署和加速。比如在FPGA上,复杂的全精度浮点乘法运算将被直接替换为简单的移位操作。其二,现有神经网络量化压缩方法在处理二值网络或者三值网络时,为了让模型精度损失不至于太大,往往将模型第一层和最后一层参数依然保留为全精度浮点型,而我们的技术在对模型的所有参数进行量化的同时,实现了性能的全面领先

INQ渐进式网络量化示例

第一行:依次为参数分组、量化与重训练;

第二行:迭代过程

(绿色区域代表当前已经被量化的网络参数;浅紫区域代表需要重新训练的网络参数)

三大实际应用

基于业界最具挑战的ImageNet图像分类任务,英特尔中国研究院的研究人员给出了一系列令人激动的实验应用与结果。

参数二进制化的神经网络模型

首先,我们的研究人员将INQ技术应用到了时下所有的主流深度神经网络结构上。以AlexNet、 VGGNet、 GoogleNet和ResNets为例,通过5比特量化(其中1比特专用于表示零值,下同),我们的模型分类精度全面超越了原始的全精度浮点模型。以ResNet-18为例,在4比特和3比特条件下,INQ技术能够做到无损量化。尽管在三值量化时,量化后的模型精度有少许损失,但损失程度远低于目前业界已知的结果。

(固定比特长度、参数二进制化的神经网络模型性能)

(不同比特长度、参数二进制化的神经网络模型性能)

(三值、二值神经网络模型性能比较)

深度参数二进制化的神经网络模型

其次,我们的研究人员将INQ技术与之前我们发表在NIPS 2016的“动态外科手术”(Dynamic Network Surgery, DNS)技术相结合,实现了深度的神经网络二进制量化压缩。以AlexNet为例,首次实现了接近无损的、百倍级、二进制的神经网络模型

深度参数二进制化的神经网络模型性能

(P: 剪枝;Q: 量化;H: 霍夫曼码)

输入、输出及参数均二进制化的神经网络模型

最后,我们的研究人员进一步将INQ技术从只量化模型参数推广到了不但量化模型参数,还量化网络每一层输入和输出。以VGGNet为例,首次实现了无损的、低比特、全量化的神经网络模型

(输入、输出及参数均二进制化的神经网络模型性能)

目前,该方法相关文章即将发表在ICLR2017。作为深度学习领域的顶级会议,获准发表的论文都会得到业内人士的极大关注,从而对深度学习的发展产生相当的推动作用。据不完全统计,在ICLR2017接收的196篇文章中,英特尔中国研究院的INQ技术是唯一一项完全出自中国内地的研究工作。与这项工作相关的源代码正在逐步开源中,相信将会对学界和工业界产生巨大的影响,欢迎大家持续关注。

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...