冒火得很000
大名鼎鼎的DenseNet,17年CVPR的best paper(当然有争议是后话),不得不读。黄高博士的扛鼎之作,之前在读他的Snapshot-Ensembles时感觉就很舒服,整个文章逻辑很清楚,实验对比做的也十分全面,相信这篇best paper更是没有问题,会给读者一种爽的感觉。
2019.2.20 2852次。绝对值很高,但相比其他经典网络,ResNet,GoogLeNet之类,有些差距。
本篇在16年8月挂到arXiv上,中了2017年CVPR,是继16年何大神的ResNet之后,第二个华人的best paper, 这里 有个作者本尊的talk,现场讲解。一作Gao Huang(黄高)05年北航的本科生(GPA第一),15年清华博士毕业(读了6年。。),后来在康奈尔待了3年做博后,此刻在清华作青椒,本篇是在康奈尔时的工作。二作刘壮(同等贡献)也是碉堡,现在在伯克利做博士生,之前是清华姚班的(13级),发这篇文章时还在清华,也就是说 本科生 。。。最近以一作的身份新发了一篇《Rethinking the Value of Network Pruning》,中了19年的ICLR,同时也是18年NIPS的best paper award。。这个世界太疯狂了,这都不是潜力股了,而是才华横溢溢的不行了。
官方实现在这里:
黄高个人主页在这里:
刘壮个人主页在这里:
先前的研究中说明只要网络包含短路连接,基本上就能更深,更准确,更有效的训练。本文基于这个观察,引入了密集卷积网络(DenseNet),它以前馈方式将每个层连接到所有层。传统的卷积网络L层有L个连接,而DenseNet有 个直接连接。对于每一层,它前面所有层的特征图都当作输入,而其本身的特征图作为所有后面层的输入(短路连接被发挥到极致,网络中每两层都相连)。DenseNet具有几个引入注目的优点: 可以缓解梯度消失问题,加强特征传播,鼓励特征重用,并大幅减少参数数量。
随着CNN变得越来越深,一个新的研究问题出现了:随着输入信息或梯度通过多层,它在到达网络结尾(或开始)处就消失了。ResNets和Highway Networks通过恒等连接将信号从一层传输到下一层。Stochastic depth通过在训练期间随机丢弃层来缩短ResNets,以得到更好的信息和梯度流。FractalNets重复组合几个并行层序列和不同数量的卷积块,以获得较深的标准深度,同时在网络中保持许多短路径。尽管上述方法的网络结构都有所不同,但它们有一个共同特征:创建从早期层到后期层的短路径。
本文提出一个简单的连接模式:为了确保网络中各层之间的最大信息流, 将所有层(匹配特征图大小)直接相互连接 。为了保持前向传播性质,每个层从所有前面的层获得附加输入,并将其自身特征图传递给所有后续层。
至关重要的是,与ResNets相比,在传递给下一层之前, 不是通过求和来合并特征,而是通过concat来合并特征 。因此, 层有 个输入,包括所有先前卷积块的特征图。其特征图被传递到后续所有 层。这在L层网络中引入了 个连接,而不是传统架构的L个连接。正是因为这种密集连接模式,所以称本文方法为密集连接网络( Dense Convolutional Network DenseNet)。
相比传统卷积网络,这种密集连接模式有有一点可能违反直觉的是,它需要更少的参数,因为无需重新学习冗余的特征图。本文提出的DenseNet架构显式区分了添加到网络的信息和保留的信息。DenseNet的层非常窄(如每层只有12个滤波器),只给网络的"集体知识"增加一小组特征图,并保持其余的特征图不变。
除了更好的参数利用率之外,DenseNet的一大优势是它改善了整个网络中的信息流和梯度,使得网络更易于训练。每层都可以直接访问损失函数和原始输入信号的梯度( 我屮,这不就是GoogLeNet当时为解决梯度消失而在中间层引入分类器那种ugly办法的替代吗 ),从而导致隐式的深度监督。这有助于训练更深的网络。
与DenseNet相似的级联结构早在1989年就提出来了。。Adanet的提出差不多是与DenseNet并行的,跨层连接也相似(话说竞争真激烈。。)
本文作者提出的另一个网络Stochastic depth说明并非所有层都需要,在深度残差网络中存在大量冗余的层。本文的部分灵感也来源于此。
相比从极深或极宽的架构中提取表示能力,DenseNet是通过 特征重用 来利用网络的潜力,得到易于训练和高参数效率的压缩模型。相比从不同层拼接特征的Inception网络,DenseNet更简单有效(看来Inception因其结构复杂性没少被批判)。
定义 为单张输入图像,网络由 层组成,每一层实现非线性变换 ,其中 为层的索引号。 可以是BN,ReLU,Pooling,Conv等操作的复合函数,定义 层的输出为 。
传统的层连接: 。ResNets增加了跳跃连接: 。ResNets的一个优势是梯度可以通过恒等函数直接从后面的层流向前面的层。然而,恒等函数和 的输出通过加法合并,有可能会阻碍网络的信息流。
本文引入与ResNets不同的连接模式:从任意层到所有后续层的直接连接(图1)。结果就是,第 层接收所有之前层的特征图作为输入: 。为了便于实现,concat 的多个输入为单一张量。
受ResNet v2启发,定义 为三个连续运算的复合函数:BN,ReLU,3 x 3 Conv
当特征图的大小改变时,concat运算是不可能的,然鹅,卷积网络的一个关键组成部分就是下采样层,通过它可以改变特征图大小。为了便于在架构中进行下采样,将网络划分为多个密集连接的密集块(dense blocks),如图2所示。
将密集块之间的层称为过渡层(transition layers),它们进行卷积和池化。本文实验中的过渡层由BN,1 x 1卷积和 2 x 2平均池化组成。
如果每个函数 生成 个特征图,它后面跟着的 层有 个输入特征图,其中 是输入层的通道数。DenseNet和现有网络架构的一个重要区别是DenseNet可以有非常窄的层,如 。本文将超参数 定义为网络的成长率(growth rate)。对此的一种解释是,每一层都可以访问其块中所有前面的特征图,即,网络的『集体知识』。可以将特征图视为网络的全局状态。每一层增加自己的 个特征图到这个状态。成长率反映了每层由多少新信息对全局状态有贡献。全局状态一旦写入,就可以被网络中的任何地方访问,而不像传统网络那样,无需从一层复制到另一层。(全文精华应该就是这一段了)
1x1 conv非常有用(提升计算效率),本文也大用特用。本文定义DenseNet-B的 为 BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)
为了使模型更紧凑,可以减少过渡层的特征图数量。如果密集块包含 个特征图,定义接下来的过渡层生成 个特征图,其中 表示压缩率。定义 的DenseNet为DenseNet-C,本位实验中设置为 。当同时使用瓶颈层和压缩过渡层时,定义模型为DenseNet-BC。
非ImageNet数据集采用同一个架构,由3个密集块构成。ImageNet的架构如表1所示
CIFAR SVHN ImageNet
所有网络都用SGD。
CIFAR和SVHN的batch size为64,epoch分别为300和40,初始学习率为0.1,在50%和75%的epoch时分别除10。
ImageNet的batch size为256,90个epoch,初始学习率为0.1,在30和60epoch时分别除10。
weight decay为 ,动量为0.9。用He初始化。
对于CIFAR和SVHN,还在每个卷积层后接了dropout层(除第一个卷积层外),丢失率为0.2。
看表2的最后一行
DenseNet可以利用更大更深模型表示能力的增长。
如图4所示
主要用DenseNet-BC和ResNet作比较。
表面上看,DenseNets和ResNets没什么不同,两个式子的差别仅仅是输入从加法变为concat,然而,这种看似很小的修改导致两种网络架构的行为明显不同。
因为鼓励特征重用,所以得到更紧凑的模型。
如图4所示。
对DenseNets准确率提升的一种解释是各个层通过短路连接从损失函数接收额外的监督(某种深度监督)。DenseNets用隐式的方式执行相似的深度监督:网络顶部的单个分类器通过最多两到三个过渡层为所有层提供直接监督。 然而,由于在所有层之间共享相同的损失函数,因此DenseNets的损失函数和梯度基本上不那么复杂。
和随机深度的对比,随机深度有点类似DenseNet:如果所有中间层都随机丢弃,那么在相同的池化层之间的任意两层都有可能直接连接。
DenseNet就是好,就是好啊就是好。在遵循简单的连接规则的同时,DenseNets自然地整合了恒等映射,深度监督和多样化深度的属性。
又是一篇没有什么数学公式的paper,越来越感觉深度学习像物理,很多结果都是基于做实验得到的。通过对实验的观察对比分析,找出实验中的缺陷不足,从而去改进,然后发paper。黄高博士的写作套路还是非常讨喜的,特别是开头的地方,娓娓道来,一步一步告诉你为什么要这么做,为什么要引入这一步。此外,DenseNets和作者本人的工作『随机深度』也有千丝万缕的关系,看来功夫做扎实了,沿着一条道路是可以出一系列成果的。
这是个好问题。。是要进一步衍生ResNet吗?
提出密集连接结构,将ResNet的跳跃连接发扬光大为两两连接
效果比ResNet还好,通过减少滤波器个数(文中称作成长率),参数量也下来了
感觉效果提升并没有那么明显,被后续出来的ResNeXt超过了
各种网络结构的实现:
黄高本人视频讲解:
作者本人的解答: CVPR 2017最佳论文作者解读:DenseNet 的“what”、“why”和“how”
DenseNet的3个优势:
hanhan0124
CVPR的workshop审稿还是很严格的。虽然reviewers和主会不是一套班子,但也都是来自Google/Facebook的顶级学者。难度上,CVPR workshop=B类主会>C类主会。
CVPR录用标准
CVPR有着较为严苛的录用标准,会议整体的录取率通常不超过30%,而口头报告的论文比例更是不高于5%。而会议的组织方是一个循环的志愿群体,通常在某次会议召开的三年之前通过遴选产生。CVPR的审稿一般是双盲的,也就是说会议的审稿与投稿方均不知道对方的信息。
通常某一篇论文需要由三位审稿者进行审读。最后再由会议的领域主席(area chair)决定论文是否可被接收。
第一届CVPR会议于1983年在华盛顿由金出武雄和Dana Ballard举办,此后每年都在美国本土举行。会议一般在六月举行,而举办地通常情况下是在美国的西部,中部和东部地区之间循环。
例如,2013年该会议在波特兰召开。而2014年有超过1900人参加了在哥伦比亚举办的会议。而接下来的2015,2016和2017年,该会议分别于波士顿,拉斯维加斯和夏威夷举办。
CVPR有着较为严苛的录用标准,会议整体的录取率通常不超过30%,而口头报告的论文比例更是不高于5%。
而会议的组织方是一个循环的志愿群体,通常在某次会议召开的三年之前通过遴选产生。CVPR的审稿一般是双盲的,也就是说会议的审稿与投稿方均不知道对方的信息。通常某一篇论文需要由三位审稿者进行审读。最后再由会议的领域主席(area chair)决定论文是否可被接收。
在各种学术会议统计中,CVPR被认为有着很强的影响力和很高的排名。目前在中国计算机学会推荐国际学术会议的排名中,CVPR为人工智能领域的A类会议 。在巴西教育部的排名中排名为A1。基于微软学术搜索(Microsoft Academic Search)2014年的统计,CVPR中的论文总共被引用了169,936次。
足疗沙发厂家
最近利用知识蒸馏的方法,对业务中的性能有了可观的提升,因此在这里总结一波。本文主要从宏观的角度分析一下各个蒸馏算法的蒸馏方式,具体细节可以根据兴趣阅读论文~ 知识蒸馏是一种模型压缩常见方法,用于模型压缩指的是在teacher-student框架中,将复杂、学习能力强的网络学到的特征表示“知识蒸馏”出来,传递给参数量小、学习能力弱的网络。从而我们会得到一个速度快,能力强的网络,因此这是一个概念上的模型压缩方案。从另一个角度来说,蒸馏可以使得student学习到teacher中更加软化的知识,这里面包含了类别间的信息,这是传统one-hot label中所没有的。由于蒸馏中软化标签的本质,因此蒸馏也可以被认为是一种正则化的策略。总结来说,知识蒸馏除了能够学习到大模型的特征表征能力,也能学习到one-hot label中不存在的类别间信息。现有的知识蒸馏方法主要侧重于两点: 从teacher的什么位置学习 和 用什么方式学习 。以下的总结图概述了本文要介绍的蒸馏方法。 目录结构: (1)KL:知识蒸馏:蒸馏开山之作 如上图所示,本文中直接利用KL散度来衡量教师模型和学生模型的输出分布,通过最小化KL散度的方式,使得学生模型的输出分布能够尽可能的逼近教师模型,从而实现知识蒸馏的目的。KL散度是一种衡量两个概率分布之间的差异的数学概念,有不懂的同学请出门左拐百度一下,右拐也行Google一下。 (2)FT:相关性因子加权学习法 (3)PKT:概率分布学习法 上述两篇文章的作者认为学生一般都是不聪明的,为了让学生能够更好的理解教师模型,FT算法这篇文章提出了一种新的知识转移方式,如图所示,利用卷积运算对教师模型的输出进行编码,并解码(翻译)给学生。而位于学生模块部分也添加一个卷积操作,用来学习翻译后的教师知识。实验证明这种方式要比直接学习效果好。PKT算法这篇文章提出了另一种新的知识转移方式,如图所示,该文章让学生模型学习教师模型的概率分布,使得整体的学习更加容易,更鲁棒。作者提出了一种通过匹配数据在特征空间中的概率分布进行知识蒸馏,PKT算法的另一个优势是该方法可以直接转移不同架构和维度层之间的知识。 (4)RKD:关系型学习法 (5)CC:多输入联系型学习法 所谓的单打独斗就是一个样本进行自我学习,单打独斗的蒸馏方法使得学生模型只能学习教师模型的输出表现,无法真正学习到教师模型的结构信息。而这两篇文章的作者都提出了多个样本之间进行合作学习的蒸馏学习方法,使得学生模型能够更好的学习到教师模型的结构信息。RKD关系型学习算法的核心是以多个教师模型的输出为结构单元,取代传统蒸馏学习中以单个教师模型输出学习的方式,利用多输出组合成结构单元,更能体现出教师模型的结构化特征,使得学生模型得到更好的指导。CC多输入联系型学习法在上述RKD算法的基础上,为了更好的扩大类间差异,更好的缩小类间距离,CC算法提出了两种采样方法:包括均衡类别采样法和均衡超类别采样法。所谓的均衡类别采样法,即假设每个batch大小为48,则这48个样本分布来自于6个类别,每个类别8个样本,使得整体的学习样本不像RKD算法那样是随机的。 (1)Fitnet:阶段性知识蒸馏 FItnet这篇文章首次提出了从教室模型的中间层去进行蒸馏学习,而不仅仅关注教室模型的输出。因为通过中间层的引导,使得学生模型进行了提前学习,使得最终的蒸馏学习效果变得更好。 (2)VID:互信息学习法 (3)SP:相似性矩阵学习 (4)AT:注意力学习法 为了更好的表征神经网络中间层的特征,如上图所示,本文列举了三种不同形式的用于更好抽象的表征中间层特征的新的蒸馏形式。其中VID互信息学习法,将中间层知识蒸馏的最优性能定义为最大化教师和学生网络之间的互信息。那么为什么通过最大化互信息可以使得蒸馏学习变得有效呢?首先作者对互信息做了定义:互信息为[教师模型的熵值] - [已知学生模型的条件下的教师模型熵值]。而我们又有如下常识:当学生模型已知,能够使得教师模型的熵很小,这说明学生模型以及获得了能够恢复教师模型所需要的“压缩”知识,间接说明了此时学生模型已经学习的很好了。而这种情况下也就是说明上述公式中的熵很小,从而使得互信息会很大。作者从这个角度解释了为什么可以通过最大化互信息的方式来进行蒸馏学习。而在SP相似性矩阵学习法中,作者提出了一种新的知识蒸馏形式,该方法是作者观察到相似语义的输入往往会使得神经网络输出相似的激活模式这一现象启发得到的。该知识蒸馏方法被称为保持相似性知识蒸馏(SPKD),该方法使得教师网络中相似(不同)激活的输入样本对,能够在学生网络中产生相同(不同)的激活,从而指导学生网络的学习。而在AT注意力学习法中,作者认为注意力在人类视觉体验中起着至关重要的作用。以图像分类为例,注意力地图展示了学习完成后的网络模型更关注于图像的哪个区域,是网络模型学习成果的体现。本文通过迫使学生模型模仿强大的教师模型的注意力特征图,来显著提高学生模型的性能。为此,本文提出了基于激活注意力地图的蒸馏法。 (5)NST:基于滤波器的知识蒸馏 (6)FSP:授之以鱼不如授之以渔 和之前对中间层特征进行直接学习的方式不同,本文提出了一个偏哲学的论点:授之以鱼不如授之以渔。具体来说就是,如上图所示,本文将教师模型网络层与层之间的映射关系作为学生网络学习的目标,而不是像之前提到的直接对教师模型的中间结果进行学习。通过让学生学习这种获得特征的方法,而不是直接学习特征本身,文章的结果显示,这种方式确实有助于提高学生模型的鲁棒性。 (1)AB:激活边界学习 (2)利用对抗样本进行激活边界学习 在分类任务中,小模型真正的缺陷更多的在于对边界样本(难例样本)的分类困难。而这真是我们在分类任务中最关心的问题。而教师模型处理边界的能力一定是要优于学生模型的。因此尝试用学生模型学习教师模型的边界分布,这将是蒸馏学习的新思路。本部分列举了两种不同的边界学习方法。AB激活边界学习法,通过最大化边界误差的方式,来引导学生模型学习更强的边界约束能力。利用对抗样本进行边界激活学习的方法,首先定义一个基类并通过基类找到各个类别中的对抗边界,最终通过对抗边界样本进行蒸馏学习。 (1)be your own teacherr (2)强制拉近类内距离:regularzing class-wise (3)类内的鲁棒性学习:Data-Distortion Guided 由于我们不一定可以在所有任务中都顺利的获取教师模型,有的大模型由于数据的缺失,很难被正常的训练出来。基于这种情况,很多研究者提出了自我学习的策略。简单来说该策略就是自己作为自己的老师,进行自我优化。本部分列举了三种自学习的方式。be your own teacher这篇文章将网络较深部分的知识压缩到较浅部分,也就是说该蒸馏策略的教师模型和学生模型来自与同一个模型,这大大降低了蒸馏学习的复杂度,并且通过增加额外的训练检测模型,在不增加前向推理时间的前提下提升了自我学习的能力。举例来说,如上图中以resnet50为例,在每个block之后都接出一个bottleneck作为隐藏层的监督输出模块,并接出一个全连接层作为每个子模块的子分类器。每个子分类器都作为一个小的学生模型,其对应的教师模型为主分类层的输出,最终实现自我蒸馏的学习。另外两篇文章的思路主要从同一个类内的样本出发进行自我学习。其中强制拉近类内距离这篇文章,在训练的过程中,首先我们会从数据迭代器中提取batch1大小的数据,同时选出和当前batch1中类别相同的样本形成batch2,并将两个batch的样本组合起来进行联合训练。具体来说就是每一此计算loss时,从batch1和batch2中各挑选出一个同类样本,在loss计算中尽可能的是的这两个同类样本的输出分布一致,这种方式是一种广义上的自我学习的策略,且这种训练方式能够强制减小类内的差异,且可以利用这种方式减小某些过度自信的异常值的预测。其中增强类内鲁棒性这篇文章,也是从对同一个类别的样本进行联合学习,具体操作如下:对输入batch中每个图片利用不同的数据增强方式增强层两份输入,这两份输入的标签为同一个类别,将两份输入特征concat之后通过卷积层提取全局特征,并将得到的特征向量进行对应的切分,在训练过程中通过最小化切分后特征向量间的差异,从而增强同一个类内的多样性提升鲁棒性,该过程也可以被认为是自己和自己学习。 (1)DML:互相学习 (2)知识嫁接 与自学习类似的是互相学习策略中不存在教师模型,与自学习不同的是互相学习的方式通用是多个模型之间的学习,而自学习仅仅只有一个模型。其中DML:互相学习这篇文章就是一种典型的互相学习的方式,DML是在训练过程中,几个需要反向传播的待训学生网络协同学习,互相传递知识。每个互相学习的网络都有一个标准的分类Loss和互学习Loss,其中互学习Loss是一个KL散度。 具体而言,两个网络的softmax输出为p1,p2.则互学习的意义在于,对于Net1(Net2亦然),对了提高其泛化能力,使用Net2的p2作为一种后验概率,然后最小化p1,p2的KL散度。而知识蒸馏这篇文章更像是一种广义上的互相学习方法,该文章的主要是思想是并行地训练多个网络,对所有网络的参数进行重要性排序,并另一个并行网络中的更有效的权重替换到当前网络的不重要权重的位置,在训练过程中通过这种重要性权重的互相替换实现互相学习。 (1)GAN对抗学习 (2)无监督对抗学习 本部分主要列举了两种利用GAN网络进行蒸馏的文章。GAN对抗学习这篇文章就是典型的利用生成对抗网络的例子,具体来说,学生网络作为生成器,生成对应的输出结果,而教师网络用来表征GT信息,而鉴别器主要被用来鉴别学生网络的输出和教师网络的输出,最终学习的目的就是是的学生网络能够欺鉴别器,是的鉴别起无法区分出学生网络和教师网络的输出。最终实现学生网络学习到了教师网络的输出特征和分布。而无监督对抗学习这篇文章的出发点有点不一样,由于一些实践问题(如隐私、法律等问题),给定深度网络的训练数据往往不可用,除了一些接口之外,给定网络的架构也是未知的。基于此,本文提出了一种利用生成对抗网络训练高效深度神经网络的新框架。讲预先训练好的教师网络看作一个固定的鉴别器,利用该鉴别器产生的训练样本可以得到最大的鉴别结果。然后,利用生成的数据和教师网络,同时训练出模型尺寸较小、计算复杂度较低的高效网络。
怎么样发表论文: 1、想要发表论文,事先要做的就是写好一篇查重率合格,且具备一定价值的论文,论文查重率的具体要求,要根据想要发表的期刊来定,若为普通期刊,则查重
看你上面的刊期,在职称评定中,是以刊期为准的。如果是5月份的刊期,即使是8月份收到的,也是按5月份算的。
六个发表论文的流程:准备论文、投稿、审核、录用、出刊、上网。 1、准备论文:如果论文已经准备好了,按照论文找合适的期刊就好;如果论文没写好,建议还是先找合适的期
评职称很多人会选择发表职称论文,这就涉及到了期刊的选择,作者们在学术领域可能非常权威,但是对于发表论文来说,很多人可能还是个小白,有些作者文章是发表了,评职称时
一、选刊.选定一种期刊杂志作为自己的投稿对象.怎么选呢,先看自己学校或者单位评职称需要投什么级别的刊物.现在很多都要求必须是核心期刊,这个可以上网搜一下具体都有