ICLR 2017 有什么值得关注的亮点 ?

2016年11月8日 | By News | Filed in: 未分类.

Source: http://www.zhihu.com/question/52311422/answer/130135046?utm_campaign=rss&utm_medium=rss&utm_source=rss&utm_content=title

利用周末时间,快速浏览了一些自己关心的论文。
出于个人背景以及工作需要,我主要关心的是:

model interpretation&debuggingmodel compression(一个明显的感觉,今年在model compression方向相关的论文很多,估计是跟去年Deep Compression斩获ICLR 16 best paper有很大关系)distributed learningoptimization method以及一些之前我不了解的神经网络模型的应用场景。

限于时间精力,下面的内容更像是浏览论文的碎碎拌,有些文章自己花的精力多一些,解释得会详细一些,也会有一些自己的critical comments,更多的则只是对论文内容的一个简短的罗列,并没有提供自己对文章的comments,而是留待后续的follow-up,所以看到这篇回答的同学可以先有一个预设的期望收益。

1. Model Interpretation & Debugging
在[2]里Bengio和别人一起propose了一种对神经网络进行probe的interpretation的方法,作法的大致描述如下:
为每个隐藏层引入一个probe layer,这个probe layer与隐藏层之间存在一层线性变换,probe layer会通过训练样本的标注构成loss,然后为在固定模型的情况下,来训练这些probe layer的weights(这些probe layer其实就是linear classifier),然后来看这些probe layer上训练出的linear classifier probes在测试集上的表现,从而能够起到下面的一些辅助作用:
引入一层layer是否带来了额外的收益
加入额外的loss是否带来了额外的收益
增加branch layer是否带来了额外的收益
不过,我看到这篇文章的疑问是,在design model topology的过程中,本来不就是应该增加一层layer/loss/branch就应该单独观察其对最终效果的影响么?因为文章里propose的方法是单独来看每个layer的probe的效果,并没有看inter-layer的组合probe效果,这样来看,跟自己在design model的过程中,对layer/loss/branch的增加通过试错方法来进行挨个尝试似乎并没有带来本质的方法论上的变化。这是让我有些confuse的。虽然文章作者之一是Bengio,但我个人对文章的价值含量还是存在较大的疑问。

[16]里试图对卷积神经网络提炼出几种”design pattern”,比如Normalize layer inputs、Available resources guide Network Depth/Summation Joining。我个人感觉,文章里提出的这些”design pattern”还是比较preliminary的工作,对于实际的网络设计的指导意义还比较有限。

[17]里则试图通过实证的方法来验证在卷积神经网络里,使用相同数量的模型参数,模型的层级越深,模型质量会越好,从我的角度来看,这篇文章的实证味道还是太重了一些,结论泛化性比较差。

[18]里探索了一种基于Javascript的Deep Learning平台方案,这种方案使得我们可以在浏览器里完成DL模型的训练以及可视化,在这个方案里基于Javascript实现了一套矩阵计算库,并且还通过WebCL来调用GPU来进行性能加速。比较有趣的是,这个方案里居然还提供了分布式训练的支持。

在[22]里探索了一种通过模型可视化的方法来理解神经网络中神经元对颜色和label的敏感程度的策略。我看了一下,并没有感觉文章中提供的方法有什么让人眼前一亮的地方,我对文章中方法的理解就是给定一个神经元,将maximize这个neuron activation的top-K的图片的二进制描述进行加权平均,从而作为这个神经元的NF(Neuron Feature),来观察不同神经元对颜色和label的敏感程度。有些神经元可能看不到明显对某个颜色或label的敏感度,我们称这种神经元为Blur NF,对这类神经元,我们认为是和其他神经元构成一种distributed的表征方式来对原始输入图片进行表征判别。

在[33]里propose了对深度卷积神经网络进行可视化理解的方法,名之为”prediction difference analysis”,具体来说,给定一个训练好的分类模型,一张特定图片,将导致预测成某个分类的图片区域标识出来,将导致不会预测成某个分类的图片区域也标识出来,从而形成一张热力图,用来获得对模型的理解。比如下面这张示例图:

这个方法跟[34]里提出的”occluding”的方法有些相似。

[40]里提出了一种名之为LOTS(layerwise origin-target synthesis)的方法,用于对神经网络的隐藏层进行可视化,同时还可以用于生成对抗性样本以期提高模型的鲁棒性。

[41]这篇文章我并没有理解清楚其point,因为文章主题跟模型的interpretation相关,而我最近对这个主题正好有所关注,所以会罗列进来,留待后续follow up。

[44]这篇文章里试图对Deep ResNet能够在这样深的网络结构下表现这样好的原理进行一些探索。

2.Model Compression
在[4]里propose了一种称之为DeepRebirth的模型压缩方法,这个压缩方法与ICLR16的Deep Compression的区别在于,DeepRebirth针对的是non-tensor layer(也就是不带训练weight的layer,比如LRN/Batch Normalization/Drop-out/Pooling),在propose优化细节之前,文章先给出了一些经典的CNN模型里的inference环节,non-tensor layer所消耗的时间:

然后提出了DeepRebirth的两个主要压缩策略:

Streamline Merging
Branch Merging
如果从我的角度来看,还是觉得DeepRebirth比起DeepCompression在品质上还是有比较明显的差距。
在Streamline Merging里,convolution与pooling的merging通过加大stride还算有些依据,而直接去掉LRN和batch normalization就感觉有些过于豪放了。
在Branch Merging里,也是对于Inception-V3里的branch layer,直接将pooling这样的branch给去掉,然后fine-tune merge之后的model。
所以对这篇文章的评价,我并不是很高。里面的一些作法思路可以借鉴参考,但作法的泛化性和严谨度还是比Deep Compression差了不少。

在[8]里,NVIDIA提出了一种模型压缩的策略。在[8]里,与Deep Compression里直接对weight进行greedy pruning不同,设计了一种迭代式的pruning策略。

在[20]里,Intel提出了一种sparse与dense矩阵混合运算的优化方案,从而为CNN模型的压缩带来更多的inference speed收益。在ICLR 16里提出的Deep Compression为代表的模型压缩技术里,会对卷积层进行压缩,从而产生一个sparse的CNN Layer,而CNN layer的输入则会是dense的矩阵,sparse-dense-matrix-multiplication的优化实现是这篇文章里的一个贡献。另外,在这篇文章里,propose了一种performance model,能够对给定CNN layer,一定的sparsity比例对性能带来的收益会进行预估,从而指导model compression的过程,文章里名之为Guide Sparsity Learning。这篇文章我会认为价值含量还是比较高的,值得花时间去精读。

在[21]里,针对Deep Compression里的quantization方案,propose了进一步的优化。基本的思路是试图在做quantization的时候,通过loss function相对于各个parameters二阶Hessian量,来评估不同parameter的重要性,从而在定长和变长quantization这两个压缩场景下,获得更好的压缩—模型效果的trade-off。

在[26]里,propose了一种不改变网络结构,但是对网络weight进行增量式quantization的方法,将每个parameter由原始的32位浮点数离散化到2/3/4/5个bit,从而达到模型压缩的效果。在文章propose的作法里,会先对model weight进行group,将其分为low-precision和full-precision两类,然后对于full-precision的weights进行re-train,这个过程会迭代进行,直到所有的weight都转换为low-precision。最后在AlexNet/VGG-16/GoogleNet/ResNet这几个网络上进行了评测。

在[27]里,提出了一种硬件加速器,用于神经网络的inference环节。这里propose的硬件加速器与其他加速器的区别是,会在精度的损失与功耗/性能的提升之间建立起一个换算关系,这样便于用户在实际使用的时候进行trade-off。

在[39]里,FAIR在FastText这个文本分类模型基础上提出了一种模型压缩的策略,对FastText做了进一步压缩之后,可以比压缩前节省10倍以上的内存,而模型准确率上的损失并不显著。

3.Distributed Learning
[5]里在CPU和GPU上对Caffe、SINGA、TensorFlow这三个深度学习框架进行和性能评估。

其中CPU选取了Intel Xeon的一款CPU,IBM Power8 with/without NVLink的两款CPU,GPU则选择了NVIDIA比较老的一款K20X以及最新P100(with NVLink support)。

评测模型则选择了AlexNet/GoogLeNet/LeNet/ConvNet这四个CNN模型。

有一些评测数据还是有些意思,比如处理一个mini-batch的耗时:

再比如K20X和P100在训练过程中的GPU utilization rate(能够从侧面反映出是否出现IO-bound的情况):

至于多卡以及多机的性能对比,就可以参见论文细节了。

在[6]里针对输入数据存在多种不同的shape/dim的情形,提出了一种称之为dynamic batching的技术,这种应用情形在我之前的经验中遇到的并不多,所以虽然对这篇文章比较好奇,但并没有去细读,留到后续follow。

在[9]里试图为不同的神经网络结构,在特定的软硬件运行环境中,对其性能状况进行建模,从而指导具体的训练过程中的运行配置(需要几张卡,几个结点,预计的加速比,等等)。目前[9]在并行加速上只考虑到了data parallelism,未考虑model parallelism。在多机的通信模式下,也没有考虑比较复杂的异步通信或是bounded-delay通信。关于通信模式未考虑异步通信,我觉得可以理解,因为异步通信是一种有损的加速通信策略,计算吞吐率的上升是以收敛行为发生变化为前提的,而并行模式下只考虑了data parallelism就给人感觉还是覆盖不足。关于Data Parallelism下allreduce的不同实现,在[9]倒是考虑了一些,比如链式的allreduce、tree-based allreduce以及butterfly allreduce,对于更精细的一些allreduce策略,比如butterfly mixing[32],并没有加以考虑。

在[10]里针对神经网络的分布式训练,提出了一种通信优化的策略,名之为Linear Pipelining(LP)。这个通信优化策略乍一看起来跟腾讯的Mariana[12]里提出的通信优化策略似乎蛮有些相似之处。理想效果是通信开销随着并发卡数或结点数增加而保持近似常量。

在[11]里,对分布式的SGD算法的实现进行了review。包括标准的同步BSP SGD和异步SGD。在指出这两种套路各自的问题之后(低吞吐率 v.s. 差收敛点),propose了一个BSP SGD的变种,说穿了就是Hadoop里对straggler worker的backup instance策略。正好组内的同学剖析TensorFlow 0.9版本的代码,也看到了相关的实现。如果从创新性来看,这个方法谈不上有什么明显的新意,不过文章的细节处理得很不错,针对不同分布式SGD算法的收敛速度、收敛模型的质量以及开设不同的backup worker数对不同模型的收敛速度的影响做了蛮细致的量化分析,这是我觉得比较出彩的地方。

在[36]里为GPU训练大词典的语言模型这种任务场景propose了一种softmax的近似计算方案。在[36]里把这个方案与经典的Hierarchy Softmax以及其他负采样技术进行了对比,claim在保证on-par性能的同时 ,获得取跟原始精确版softmax最接近的模型表现。

4.Optimization Method
[7]提出了一种在复杂神经网络模型训练过程中,为gradient增加高斯噪声,从而改善模型质量的方法。

方法的描述很简单:

g_t \to g_t + N(0,\sigma_t^2 ); \sigma_t = \frac {\eta}{(1+t)^\gamma}
其中,\eta是一个超参数,高斯噪声的方差会随时间推移基于模拟退火策略进行decay。
这个方法看起来很简单,倒是在一些模型里获得了比较明显的提升,比如在Neural Programmer模型和一些QA模型里,但也在一些模型上没有发现提升。

[13]对于神经网络模型训练算法SGD随着batch size增得过大会出现overfit的问题进行了实证分析,试图通过这些现象说明,当mini-batch的size过大时,模型会收敛到比较尖的local minima点,这与overfit的表现看起来比较一致。并且试图propose一些方法,来mitigate当mini-batch过大时的over-fit的问题,虽然这些方法的效果截止论文发表时效果都还并不明显。不过这篇文章还是能够帮助我们打开一些思路,我们都知道,分布式训练过程中,batch size越大,计算通信比就越高,也对并行加速越有力,但是batch size设到多大比较合适?如果设得过大了,带来overfit的风险,是否可以辅之以一些mitigation策略来避免这种影响,从而保障并行加速的收益?这是我觉得这篇文章对我会有所启发的地方。

[14]对ResNet为什么能够通过引入short-cut connection使得huge-deep网络的模型质量得到保证进行了一些理论化的分析。这篇文章的理论性较强,我并没有仔细阅读 。留待后面去follow up。

[23]里propose了一种新的优化算法,在这个优化算法里,对loss function进行了调整,为loss function增加了一个叫作”local entropy”的项。

[24]里则propose了一种新的激活函数—PELU,这是ELU(Exponential Linear Unit)的参数化变种,类似于PReLU与ReLU的关系。ELU是2015年在[25]里被提出的激活函数,被引用的动机是为了缓解神经网络训练过程中bias shift(神经元的期望均值发生飘移)的问题,PELU则是在ELU的基础上,将一些magic number给参数化,使其可以结合训练数据被learn出来。

[38]里propose了一种新的优化算法Eve,在Eve里,通过tracking目标函数的变化,基于目标函数的变化用作反馈信号来调整learning rate。从这个描述可以看得出来Eve实际上是一种根据objective function的变化,调整learning rate的策略框架,可以应用到不同的优化算法里,比如Adam,在[38]里也的确将Eve应用在Adam上,与原始的Adam算法进行了比较,并且在CNN和RNN这两种网络上与其他优化算法进行了性能评测。我比较好奇的是,之前的优化算法,通常会结合参数gradient的变化情况来调整learning rate,为什么Eve加入了对目标函数变化的考虑,就能claim获得进一步的性能收益。目标函数的变化相较于gradient的变化,提供了哪些额外的信息?

[42]里对神经网络的error surface做了一些研究。这两年有一种观点,认为虽然多层神经网络的error surface是non-convex的,但是最终学到的local minima往往表现还不错的原因是因为这些local minima与global minima其实很接近。而[42]试图通过构造一些counter-example来给出反证,并推导论证模型训练初始点的选取对模型最终质量的影响。

5.Data Augmentation
[35]里propose了一种新的domain-independent的数据扩充策略,与我们通常使用的data augmentation策略不同,在[35]里是直接在隐藏层的feature space里进行数据扩充。

6.Application
在[15]里将神经网络语言模型应用于为Python语言训练code suggestion工具,类似工作之前听说有国外的start-up在做,这回是第一回看到相关的论文,倒也是挺有意思。

在[19]里则基于神经网络设计了一种入侵检测的技术方案。将Machine Learning技术应用于安全领域从21世纪初就已经有人在这么干了,包括工业界也有公司将其应用到具体产品中(比如Qihoo的QVM引擎),将神经网络也应用到这个领域在我看来只不过是技术方案的进一步升级,倒也蛮自然。

在[30]里对ImageNet近四年比赛中的一些model AlexNet/VGG/ResNet/GooLeNet进行了量化评估,评估重点集中在accuracy与inference时间的关系、功耗、inference时间与batch size的关系、内存消耗、计算操作数等。文章的评估是在Torch上做的,给出的数字是否客观还需要进一步验证。文章的定位是期望为设计更有效的神经网络模型提供参考,但我的感觉,文章更多是关注在inference环节的内存、功耗、性能问题,而如果在设计网络的时候,就考虑到inference环节的很多约束,是不是一个好的工作模式,我其实是存在一定的疑问的。毕竟,从工作切分的角度来说,两个phase的工作能够正交化是最理想的情况。这也是我个人认为近两年模型压缩以及神经网络硬件加速器会出现诸多进展的原因。当然,计算机行业总会存在大量的leaky abstraction[31],所以,肯定会存在training和inference不能完全解耦的情形,从这个角度上来说,文章提出的对网络模型进行定量评估的思路还是有一些参考价值的。

在[37]里针对Walmart的数据集,把商品文本描述和图片信息融合在一起,进行商品多标签分类。在[37]里分别尝试了文本和图片的特征级融合,以及分类器级别的融合。分类器级别的融合 本质上其实可以视为一种模型ensemble的策略。而特征级的融合,在[37]被claim说效果并不如分类器级别的模型ensemble表现好。

7.Reinforcement Learning
[28]里将强化学习的方法引入,用来指导RNN构建的语音生成模型,并且在[29]里提供了代码链接。强化学习方面的内容我目前关注不多,对这篇文章的key point并没有把握得很清晰,还是有一个困惑,因为我看到了文章里试图通过在RL里引入乐理知识来指导RNN生成模型,但我的point是为什么不直接将乐理知识encode到RNN生成模型的loss里,看起来更general一些呢?

[43]里则将强化学习的方法用于设计深度卷积神经网络,并将学出来的模型与其他的baseline模型进行了性能对比。在[43]里,会对卷积层的深度、kernel size、stride size,Pooling层的stride size以及fc层的神经元个数通过RL的方法进行探索。

References:

[1]. ICLR 2017. Update –
[2]. Yoshua Bengio. Understanding Intermediate Layers Using Linear Classifier Probes. ICLR 2017.

[3]. youtube.com/watch? [2]的配套demo视频

[4]. Dawei Li. DEEPREBIRTH: A GENERAL APPROACH FOR ACCELERATING DEEP NEURAL NETWORK EXECUTION ON MOBILE DEVICES. ICLR 2017.

[5].Shayan Shams. EVALUATION OF DEEP LEARNING FRAMEWORKS OVER DIFFERENT HPC ARCHITECTURES. ICLR 2017.

[6]. Peter Norvig. DEEP LEARNING WITH DYNAMIC COMPUTATION GRAPHS. ICLR 2017.

[7]. Quoc V.Lee. ADDING GRADIENT NOISE IMPROVES LEARNING FOR VERY DEEP NETWORKS. ICLR 2017.

[8]. NVIDIA. PRUNING CONVOLUTIONAL NEURAL NETWORKS FOR RESOURCE EFFICIENT INFERENCE. ICLR 2017.

[9]. Hang Qi. PALEO: A PERFORMANCE MODEL FOR DEEP NEURAL NETWORKS. ICLR 2017

[10]. Linan Wang. EFFICIENT COMMUNICATIONS IN TRAINING LARGE SCALE NEURAL NETWORKS. ICLR 2017.

[11]. Google Brain. REVISITING DISTRIBUTED SYNCHRONOUS SGD. ICLR 2017.

[12]. Yongqiang Zou. Mariana: Tencent Deep Learning Platform and its Applications. VLDB 2014.

[13]. Nitish Shirish Keskar. ON LARGE-BATCH TRAINING FOR DEEP LEARNING: GENERALIZATION GAP AND SHARP MINIMA. ICLR 2017.

[14]. Sihan Li. DEMYSTIFYING RESNET. ICLR 2017.

[15]. Avishkar Bhoopchand. Learning Python Code Suggestion with a Sparse Pointer Network. ICLR 1017.

[16]. Lesile N.Smith. DEEP CONVOLUTIONAL NEURAL NETWORK DESIGN PATTERNS. ICLR 2017.

[17]. Gregor Urban. DO DEEP CONVOLUTIONAL NETS REALLY NEED TO BE DEEP AND CONVOLUTIONAL. ICLR 2017.

[18]. Masatoshi Hidaka. DEVELOPMENT OF JAVASCRIPT-BASED DEEP LEARNING PLATFORM AND APPLICATION TO DISTRIBUTED TRAINING. ICLR 2017.

[19]. Gyuwan Kim. LSTM-BASED SYSTEM-CALL LANGUAGE MODELING AND ROBUST ENSEMBLE METHOD FOR DESIGNING HOST-BASED INTRUSION DETECTION SYSTEMS. ICLR 2017.

[20]. Intel. FASTER CNNS WITH DIRECT SPARSE CONVOLUTIONS AND GUIDED PRUNING. ICLR 2017.

[21]. Yoojin Choi. TOWARDS THE LIMIT OF NETWORK QUANTIZATION. ICLR 2017.

[22]. Ivet Rafegas. UNDERSTANDING TRAINED CNNS BY INDEXING NEURON SELECTIVITY. ICLR 2017.

[23]. Pratik Chaudhuri. ENTROPY-SGD: BIASING GRADIENT DESCENT INTO WIDE VALLEYS. ICLR 2017.

[24]. Ludovic Trottier. PARAMETRIC EXPONENTIAL LINEAR UNIT FOR DEEP CONVOLUTIONAL NEURAL NETWORKS. ICLR 2017.

[25]. Djork-Arne Clevert. Fast and accurate deep network learning by exponential linear units. Arxiv, 2015.

[26]. Intel Lab China. INCREMENTAL NETWORK QUANTIZATION: TOWARDS LOSSLESS CNNS WITH LOW-PRECISION WEIGHTS. ICLR 2017.

[27]. Alberto Delmas Lascorz. TARTAN: ACCELERATING FULLY-CONNECTED AND CONVOLUTIONAL LAYERS IN DEEP LEARNING NETWORKS BY EXPLOITING NUMERICAL PRECISION VARIABILITY. ICLR 2017.

[28]. Google Brain.TUNING RECURRENT NEURAL NETWORKS WITH REINFORCEMENT LEARNING. ICLR 2017.

[29]. GitHub – natashamjaques/magenta at rl-tuner .

[30]. Alfredo Canziani. AN ANALYSIS OF DEEP NEURAL NETWORK MODELS FOR PRACTICAL APPLICATIONS. ICLR 2017.

[31]. Leaky Abstraction. Leaky abstraction .

[32]. Huasha Zhao. Butterfly Mixing: Accelerating Incremental-Update Algorithms on Clusters. 2013.

[33]. Luisa M Zintgraf. VISUALIZING DEEP NEURAL NETWORK DECISIONS: PREDICTION DIFFERENCE ANALYSIS. ICLR 2017.

[34]. Matthew D.Zeiler. Visualizing and Understanding Convolutional Networks. Arxiv, 2011.
[35]. Terrance DeVries. DATASET AUGMENTATION IN FEATURE SPACE. ICLR 2017.

[36]. Édouard Grave. EFFICIENT SOFTMAX APPROXIMATION FOR GPUS. ICLR 2017.

[37]. Walmart Labs. IS A PICTURE WORTH A THOUSAND WORDS? A DEEP MULTI-MODAL FUSION ARCHITECTURE FOR PRODUCT CLASSIFICATION IN E-COMMERCE. ICLR 2017.

[38]. Jayanth Koushik. IMPROVING STOCHASTIC GRADIENT DESCENT WITH FEEDBACK. ICLR 2017.

[39]. FAIR. FASTTEXT.ZIP: COMPRESSING TEXT CLASSIFICATION MODELS. ICLR 2017.

[40]. Andras Rozsa. EXPLORING LOTS IN DEEP NEURAL NETWORKS. ICLR 2017.

[41]. Stefan Carlsson. THE PREIMAGE OF RECTIFIER NETWORK ACTIVITIES. ICLR 2017.

[42]. DeepMind. LOCAL MINIMA IN TRAINING OF DEEP NETWORKS. ICLR 2017.

[43]. Bowen Baker. DESIGNING NEURAL NETWORK ARCHITECTURES USING REINFORCEMENT LEARNING. ICLR 2017.

[44]. Etat Littwin. THE LOSS SURFACE OF RESIDUAL NETWORKS: ENSEMBLES & THE ROLE OF BATCH NORMALIZATION. ICLR 2017.

来源:知乎 www.zhihu.com

作者:杨军

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 4 个回答,查看全部。


Comments are closed here.