龙空技术网

干货!理解二值化网络训练原理以及优化器选取

AITIME论道 185

前言:

此时同学们对“sgd优化器的作用”大概比较着重,兄弟们都想要学习一些“sgd优化器的作用”的相关资讯。那么小编也在网络上汇集了一些关于“sgd优化器的作用””的相关资讯,希望各位老铁们能喜欢,咱们快快来学习一下吧!

在推荐系统和广告平台上,内容定向推广模块需要尽可能将商品、内容或者广告传递到潜在的对内容感兴趣的用户面前。扩充候选集技术(Look-alike建模)需要基于一个受众种子集合识别出更多的相似潜在用户,从而进行更有针对性的内容投放。然而,look alike建模通常面临两个挑战: (1) 一个系统每天可能需要处理成百上千个不同种类的内容定向推广实例(例如体育、政治、社会等不同领域的内容定向推广)。因此,我们很难构建一个泛化的方法,同时针对多样的定向推广任务扩充高质量的受众候选集。(2) 一个内容定向推广任务的受众种子集合可能非常小,而一个基于有限种子用户的定制化模型往往会产生严重的过拟合。为了解决以上的挑战,我们提出了一种新的两阶段框架Meta Hybrid Experts and Critics (MetaHeac)。在离线阶段,我们在不同种类的内容定向推广任务的历史行为数据上,采用元学习的方法训练一个泛化初始化模型。这个模型可以同时抓取不同任务之间的关系,从而能够快速适应新类别内容推广任务。在线上阶段,针对一个新的内容推广实例,模型能够基于给定的种子集合和高线训练得到的泛化初始化模型,快速训练出这个实例的定制化推广模型。我们通过高线实验和线上实验验证了MetaHeac的有效性。目前,该框架已部署到微信中,用于部分内容定向推广场景。

本期AI TIME PhD直播间我们邀请到中科院计算技术研究所的博士生——刘泽春,为我们带来报告。

刘泽春:卡内基梅隆大学访问学者,香港科技大学博士生,由郑光廷教授指导,从事深度学习和计算机视觉。研究主要聚焦于模型压缩与加速,比如量化(quantization) ,通道剪枝(channel pruning),神经网絡搜索(NAS) 、知识蒸馏(knowledge distillation)等。她总共发表十余篇论文于机器学习和计算机视觉领城顶级期刊和会议,如ICML、ICLR、NeurIPS,CVPR、ICCV、 ECCV、AAAI、IJCV、TIP等(包括8篇一作工作),也是以上期刊会议的审稿人,学术引用量1000+。个人主页: 。

01

背 景

(1) 二值化网络介绍

经典实数网络一般是采用32位的单精度浮点数,二值化网络是量化实数值网络的一种极端形式,当我们对经典实数网络进行量化时,当数据压缩到1-bit时,该网络就被称为二值化网络。二值化网络中的特征图和权重都只用1和-1两个值来表示。

显然,二值化网络的优点是压缩率高,将32位浮点数压缩到1位,理论上网络规模压缩为原来的1/32。并且,在实际中,实数值矩阵乘法需要在一个时钟周期完成,如果特征图和权重都是1bit,在64bit的机器中,一次性可以完成64个逐位运算,因此可以实现64倍的加速比。另外,二值化网络非常适合新一代Memory-based computing,比如忆阻器。

和常见的基于卷积神经网络(CNN)的全精度网络不同,二值化网络(BNN)的优化曲面更陡,如下图所示。全精度 CNN 在局部最小值附近具有更平滑的曲面,因此更容易泛化到测试集。相比而言,BNN 的局部极小值点泛化性差,并且曲面更崎岖,优化难度大。

(2) 相关工作

下面基于ImageNet的分类任务来描述二值化网络的早期工作。

BNNs和XNOR-Net

最早的二值化网络相关工作是BNNs,这篇工作中定义了二值化网络从正向和反向如何训练。其在ImageNet上面的分类精度为top-1 42.2%,而BNNs基于的实数值网络ResNet18的分类精度是top-1 69.3%。

在BNNs的基础上,另一个有名的工作是XNOR-Net,它利用二值权重核与实数值比例因子(real-valued scaling factors)相乘,取得了top-1 51.2%的准确率。

Bi-Real Net和ReActNet

Bi-Real Net发现虽然二值化网络的特征图和权重只有1和-1两个值,但是每一层的输出是实数值,那将输出特征图使用sign函数二值化就会造成信息损失。因此Bi-Real Net增加了identity shortcut来传播实数值的特征图,最终达到top-1 56.4%的准确率。

ReActNet发现对于二值化网络,特征图有时会比较粗糙不清晰,有时又比较稀疏,因此它使用ReAct操作学习特征图的分布并更改特征图的形状。在ResNet18的结构基础上达到了top-1 65.9%的准确率,在MobileNet的结构基础上达到了top-1 69.4%的准确率。

(3) Motivation

在实数值网络中,采用随机梯度下降(SGD)要比Adam的优化算法最终训练的准确率高,因此实数值网络中默认使用SGD作为默认优化器,而在二值化网络中Adam的效果要更好,越来越多近期的二值化网络采用Adam作为的优化器。

这就引发了我们的思考:为什么在二值化网络中,优化器SGD会输给Adam?

下图是实数值网络(a)和二值化网络(b)的优化平面,实数值网络的优化平面要更为平坦,二值化网络更陡峭,所以二值化网络在训练过程中如果更容易陷入局部最优。

那么,为什么二值化网络的优化平面是陡峭的呢?前面我们讲过二值化网络通过sign函数将特征图和权重进行二值化,sign函数的功能会使得数据由连续的变为离散的,因此二值化网络的优化平面会变得离散且不平整。同时,sign函数的不可导性也会给模型优化带来困难,所以我们用一个截断函数(clip)去逼近sign函数的导数。但clip函数在(-1,1)之外的导数值是0,根据链式法则,反向传播时后一层导数为0对前一层会产生很大影响。

这引发了 BNN 中的一个常见问题,即当网络上一层生成的全精度的激活值超出了 (-1, 1) 的范围时,激活值过饱和(activation saturation),对应的导数值变为0。

下图是二值化ResNet-18基于不同优化器的激活值分布。激活值过饱和的现象在二值化网络的每一层都很常见,所以优化二值化网络的一个重要问题是由于激活值过饱和导致的梯度消失,使得参数得不到充分的梯度估计来学习,从而容易陷入局部最优。

从下图可以看出,Adam优化器对于激活饱和的现象相较SGD是有所缓解的。

这是因为SGD优化器使用第一个动量计算更新值,即梯度的平均值,因此遇到梯度消失问题,对相应的参数的更新值下降很快。

而Adam自然地利用第二个动量(梯度的二次方的平均值)中的累积来放大具有较小历史值的梯度的学习率,从而越过局部最优的情况。

例如,当x方向梯度消失时,Adam在x方向的更新值中所占比例高于SGD。在我们的实验中,我们发现这一特性对于优化具有更粗糙表面和由于二值化而产生的局部平坦区域的二值化网络至关重要。

02

方 法

本文在ReActNet的工作基础上,不改变网络结构,通过仅调整训练算法就将ReActNet的top-1 分类准确率提高了1.1个百分点。

(1) 实值参数的作用

下图是权重二值化以及更新过程。由于二值化网络能用-1和1来表示,而梯度的精度要到左右,如果用很小的梯度去更新二值化的权重,那权重符号很难改变,因此二值化网络很难被更新和优化。所以这个问题通过在二值化网络中存一份实值权重来解决,实值权重的作用就是累积梯度,这样在前向传播时,将实值权重进行求和得到二值权重,实际实值权重没有参与到网络更新中。

在实验中,我们发现一个有趣的现象,当二值化网络优化结束后,内部实数值参数分布会呈现3个峰值的状态,这三个峰值分布是-1,0,1。这种峰值分布可以从置信度的角度理解,当实数值参数分布在0附近,轻微的梯度扰动就可能使二值权重改变符号,因此0附近的参数置信度较低,-1和1附近的置信度较高。

下面我们再来看经优化器SGD和Adam的实值权重参数分布,Adam优化的二值化网络权重分布在0附近较少,SGD优化的二值化网络更多地聚集在0附近,这也解释了为什么Adam对解决二值化网络的激活饱和问题更有效,从而说明Adam比SGD更适合优化二值化网络。

(2)权重衰减(weight decay)

在实数值网络中,权值衰减是为了控制权重大小防止过拟合,而在二值化网络中,二值化权重是由实值权重经sign函数得到,因此作用在实值权重上的权值衰减并不会影响二值化权重的大小。

那么权值衰减在二值化网络的作用是什么?我们应该如何在二值化网络中使用权值衰减呢?

我们发现在二值化网络中使用权值衰减会陷入一个困境。当我们使用较高的权值衰减时,实数值权值将被抑制到0附近,从而二之花权重容易改变符号,使得网络训练变得不稳定;那如果使用较低的权值衰减,网络权重又会较难被更新,变得依赖于初始权重。

针对这个困境问题,我们提出两个量化指标——FF ratio和C2I ratio,FF ratio通过计算每次迭代中二值权重符号改变的数量来衡量优化稳定性,C2I ratio通过统计二值化权重与初始权重符号不一致的数量来衡量二值化网络对初始值的依赖程度。

从下面的图表中可以看到FF ratio和C2I ratio有明显的负相关关系。随着权值衰减的提高,FF ratio呈指数性增加,C2I ratio呈线性下降,因此选取合适的权值衰减对BNN优化起着非常重要的作用。

那么如何去解耦权重衰减带来的稳定性和初始条件依赖性的联动效应呢?

我们发现发表在ECCV 2020上的ReActNet和发表在ICLR 2020上的real-to-binary 网络中,提出两阶段训练法,加上配合合适的权重衰减策略可以巧妙化解这个困境。

(3)两阶段权值衰减训练机制

这里我们来讲述权值衰减策略与两阶段训练策略。

一阶段:二值化激活值,对权重不进行二值化,并加入权值衰减机制。

由于实值权重是连续的,没有二值权重中-1和1来回跳变的问题,因此在一阶段中可以添加权值衰减,减少对初始值依赖。

二阶段:二值化激活值和权重,不加入权值衰减机制。

这样可以增加模型训练稳定性,并且可以利用一阶段得到的良好初始值。

下面是采用两阶段权值衰减策略的效果。

03

实 验

综合所有分析,本文在 ImageNet 上测试了所得到的训练策略,在网络结构相同的情况下,取得了比 state-of-the-art ReActNet 超出 1.1% 的结果。实验结果如下表所示。

提醒

论文链接:

项目源码:

标签: #sgd优化器的作用