论文浅尝 | 深度神经网络的模型压缩

b7b0e8d46841639bfee3cc163c3ebcd7.png

笔记整理:闵德海,东南大学硕士,研究方向为知识图谱

链接:https://arxiv.org/abs/1412.6550

动机

提高神经网络的深度通常可以提高网络性能,但它也使基于梯度的训练更加困难,因为更深的网络往往更加强的非线性。最近提出的知识蒸馏方法旨在获得小型和快速执行的模型,它已经表明参数量较小的学生网络可以较好的模仿更大的教师网络或网络集群的Soft Output。

在本文中,我们扩展了这一思想,允许训练一个比教师模型更深更薄的学生模型,不仅使用输出层的信息,还使用教师模型学习到的中间表示作为提示,以改善学生模型的训练过程和最终表现。由于学生模型中间隐含层一般会小于教师模型中间隐含层,因此引入附加参数将学生模型隐含层映射到教师隐含层的预测。

这使得我们可以训练更深的学生模型,他们可以更好地泛化或者运行得更快(这由所选学生模型的能力的权衡控制)。例如,在CIFAR-10上,我们完成了一个参数少近10.4倍的深度学生网络比一个更大、最先进的教师网络表现更好。

主要解决的问题

论文主要针对Hinton提出的知识蒸馏法进行扩展,允许Student网络可以比Teacher网络更深更窄,使用teacher网络的输出和中间层的特征作为提示,改进训练过程和student网络的性能。

贡献

(1)引入了intermediate-level hints来指导学生模型的训练。

(2)使用一个宽而浅的教师模型来训练一个窄而深的学生模型。

(3)在进行hint引导时,提出使用一个层来匹配hint层和guided层的输出shape,这在后人的工作里面常被称为adaptation layer。

方法

1. Hint-Based Training

将教师的hint layer作为监督,学生的guided layer作为被监督的对象,希望guided layer可以尽可能地去预测到hint layer的输出。

HT Loss表示如下:

e9eff017fad50fc0df2ca229c97bb0cd.png

作者使用了一个回归层r(对应下图b中的Wr), 来对齐特征的shape。

b170cd99474ce5385b2dd09ecfd235a8.png

图1 模型的训练框架

此外,本文作者认为使用hint来进行引导是一种正则化手段,学生guided层越深,那么正则化作用就越明显,为了避免过度正则化,需要仔细选择hint和guided。

2. FITNET STAGE-WISE TRAINING

分成两个阶段

(1)使用训练好的教师模型和随机初始化的学生模型,在第一阶段,用教师的hint来预训练学生的guided layer及之前的层。

(2)第二个阶段,使用经典的KD loss来对整个网络进行训练,KD loss为:

cd46c653890d747b5666a797586bec6e.png

整体的蒸馏算法如下:

b895b5f226799653737101fa5b92f120.png

图2 蒸馏算法的伪代码

实验

1. 数据集

CIFAR-10:为了验证我们的方法,我们训练了一个最大输出卷积层的教师网络,设计了一个17层最大输出卷积层的FitNet,接着是一个最大输出全连接层和一个顶部的softmax层,大约有1/3的参数。学生网络的第11层被训练成模仿教师网络的第2层。在训练期间,我们使用随机翻转来增强数据。

SVHN: 由GoogleStreet View收集的32×32彩色房屋号码图像组成。训练集中有73,257张图像,测试集中有26,032张图像,还有531,131个较不困难的示例。我们训练了一个由11个最大输出卷积层、一个全连接层和一个softmax层组成的13层FitNet。

2. 结果

CIFAR-10数据集

c66f45d4362533b3d5d8366bb3a279a5.png

表1 CIFAR-10的准确率表现

表1总结了获得的结果。我们的学生模型胜过教师模型,同时需要明显较少的参数,这表明深度对于实现更好的表示至关重要。与网络压缩方法相比,我们的算法取得了出色的结果。即,学生网络的准确率达到91.61%,比之前的最佳表现者85.8%高得多,同时需要大约28倍的参数。与最先进的方法相比,我们的算法匹配了最佳的表现者。有人可能会质疑使用宽教师网络的隐藏状态来提示内部层的选择。一个直接的替代方案是使用所需的输出来提示它们。这可以通过几种不同的方式解决:(1)阶段性训练,其中第1阶段优化网络的前半部分以实现分类目标,第2阶段优化整个网络以实现分类目标。在这种情况下,第1阶段设置了网络参数的一个良好局部极小值,但此初始化似乎不能充分帮助第2阶段学习,导致它无法学习。

SVHN数据集

dab93ad32dd25c9b1f43feea614d48a3.png

表2 SVHN的错误率

表2的数据表明尽管使用的只有教师网络容量的32%,但我们的FitNet实现了与教师网络相当的准确性。我们的FitNet在性能方面与其他最先进的方法(如Maxout和Network in Network)相当。

总结

本研究提出了一种新的框架,通过引入来自教师隐藏层的中间层提示来压缩宽而深的网络为更薄更深的网络。能够使用这些提示来训练具有更少参数的非常深的学生模型,这些模型可以比其教师模型更好地泛化和/或更快地运行。本研究提供了实证证据,表明使用教师网络的隐藏状态提示薄而深的网络的内部层比使用分类目标提示更好地泛化。在基准数据集上的实验强调,具有低容量的深度网络能够提取与具有多达10倍参数的网络相当甚至更好的特征表示。基于提示的训练表明,应更加努力地探索新的训练策略,以利用深度网络的强大力量。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

1336c9cf3239b036240ce4d125f6fea4.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新业务场景如何个性化配置验证码?

验证码作为人机交互界面经常出现的关键要素,是身份核验、防范风险、数据反爬的重要组成部分,广泛应用网站、App上,在注册、登录、交易、交互等各类场景中发挥着巨大作用,具有真人识别、身份核验的功能,在保障账户安全方…

DH48WK 温控器参数设置

北京东昊力伟科技有限责任公司 温控仪、温度控制器 产品特点: 可外接温度传感器Pt100、Cu50、K、E、J、N、T、R、S、B兼容输入;PID控制输出、位式控制输出、继电器报警输出;控温能满足设定温度值的0.2℃;既可用于加热控制、也可…

Sectigo OV通配符1590元

通配符SSL证书是一种特殊的SSL证书,它能够为多个域名提供加密保护,这种证书可以用于保护一个主域名及其所有子域名,适合子域名比较多的个人或者企事业单位使用。通配符SSL证书既节省了管理证书的时间,又减少了购买SSL证书的成本&a…

STM32驱动GY-39监测环境温度,湿度,大气压强,光强度

目录 模块简介模块测试接线代码测试现象 总结 模块简介 GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理&…

Ant Eclipse插件使用

Eclipse默认带了ant插件 编辑build.xml文件给出提示 编辑的时候,会给出提示,方便编辑: 将鼠标放在属性上方,会将属性的值显示出来: 在Eclipse中运行ant 运行默认的target build.xml文件的内容如下,…

【计算机网络】网络原理

目录 1.网络的发展 2.协议 3.OSI七层网络模型 4.TCP/IP五层网络模型及作用 5.经典面试题 6.封装和分用 发送方(封装) 接收方(分用) 1.网络的发展 路由器:路由指的是最佳路径的选择。一般家用的是5个网口,1个WAN口4个LAN口(口:端口)。可…

6-8 舞伴问题 分数 15

void DancePartner(DataType dancer[], int num) {LinkQueue maleQueue SetNullQueue_Link();LinkQueue femaleQueue SetNullQueue_Link();// 将男士和女士的信息分别加入对应的队列for (int i 0; i < num; i) {if (dancer[i].sex M){EnQueue_link(maleQueue, dancer[i]…

七大排序 (9000字详解直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)

一&#xff1a;排序的概念及引入 1.1 排序的概念 1.1 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在…

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

![请 https://cloud.tencent.com/act/cps/redirect?redirect2446&cps_key2e531299bf7e92946df4c3162a81b552&fromconsole

详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

文章目录 简介函数原型代码示例参考资料 简介 有的时候我们需要将两张图片在alpha通道进行混合&#xff0c;比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作&#xff0c;此篇博客将详细介绍这个函数&#xff0c;并给出代码示例。&#x1f680;&#x1f6…

数据结构--B树

目录 回顾二叉查找树 如何保证查找效率 B树的定义 提炼 B树的插入和删除 概括B树的插入方法如下 B树的删除 导致删除时&#xff0c;结点不满足关键字的个数范围时&#xff08;需要借&#xff09; 如果兄弟不够借&#xff0c;需要合体 回顾B树的删除 B树 B树的查找 …

Windows服务器安装php+mysql环境的经验分享

php mysql环境 下载IIS Php Mysql环境集成包,集成包下载地址: 1、Windows Server 2008 一键安装Web环境包 x64 适用64位操作系统服务器:下载地址:链接: https://pan.baidu.com/s/1MMOOLGll4D7Eb5tBrdTQZw 提取码: btnx 2、Windows Server 2008 一键安装Web环境包 32 适…

Halcon中涉及的数字图像十大理论知识

1.图像处理知识 2.图像的灰度变换 3.图像增强 4.图像的几何变换 5.图像分割 6.图像的频域 7.图像的形态学 8.图像的复原 9.运动图像 10.图像配准

【二层环路】交换机二次原路排查思路

以太网交换网络中为了提高网络可靠性&#xff0c;通常会采用冗余设备和冗余链路&#xff0c;然而现网中由于组网调整、配置修改、升级割接等原因&#xff0c;经常会造成数据或协议报文环形转发&#xff0c;不可避免的形成环路。如图1所示&#xff0c;三台设备两两相连就会形成环…

SNAP对Sentinel-1预处理

SNAP对Sentinel-1预处理 一、导入数据 二、轨道校正 点击run开始处理 三、噪声去除 打开S-1 Thermal Noise Removal工具 如果选中了VH&#xff0c;就只会输出一个VH极化结果 四、辐射定标 Run 五、滤波处理 六、地形校正 这边的dem需要自己下载 dem下载地址 如果一格…

力扣-python-两数之和

题解&#xff1a; class Solution(object):def twoSum(self, nums, target):# 遍历列表for i in range(len(nums)):# 计算需要找到的下一个目标数字res target-nums[i]# 遍历剩下的元素&#xff0c;查找是否存在该数字if res in nums[i1:]:# 若存在&#xff0c;返回答案。这里…

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读&#xff1a;Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章&#xff0c;主要是为了解决极暗光下的成像问题&#xff0c;通过一个深红的闪光灯补光。实现了暗光下很好的成像效果&#xff0c;整篇文章基本没有任…

C++项目实战——基于多设计模式下的同步异步日志系统-⑪-日志器管理类与全局建造者类设计(单例模式)

文章目录 专栏导读日志器建造者类完善单例日志器管理类设计思想单例日志器管理类设计全局建造者类设计日志器类、建造者类整理日志器管理类测试 专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0c;C/C领域新星创作者&#xff0c;新星计…

HarmonyOS 语言基础类库开发指南上线啦!

语言基础类库提供哪些功能&#xff1f;多线程并发如何实现&#xff1f;TaskPool&#xff08;任务池&#xff09;和 Worker 在实现和使用场景上有何不同&#xff1f; 针对开发者关注的并发等语言基础类库的相关能力&#xff0c;我们在新推出的语言基础类库开发指南中提供了详细的…

MATLAB——RBF、GRNN和PNN神经网络案例参考程序

欢迎关注“电击小子程高兴的MATLAB小屋” %————RBF程序实例 %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load spectra_data.mat %% % 2. 随机产生训练集和测试集 temp randperm(size(NIR,1)); % 训练集——50个样本 P_train NIR(t…