您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

厉害了华为!开源自研算法Disout

时间:2020-06-22 12:46:13  来源:  作者:

美国持续封锁,华为的技术自研,已经深入到了AI底层算法层面上,并开始将研究成果面向业界开源。

刚刚,华为诺亚实验室开源Disout算法(地址在文末),直接对标谷歌申请专利的Dropout算法。

厉害了华为!开源自研算法Disout

 

而且,在多项任务上,华为的新算法都超过了Dropout。比如,在ImageNet上训练的ResNet-50可以达到78.76%的准确率,而谷歌Dropout系列方法仅为76.8%。

这一算法背后的论文,已被AAAI 2020收录,并对外公开。华为到底提出的Disout到底如何,也得以呈现。

华为自研Disout:多项AI任务超越Dropout

在申请专利时,谷歌将Dropout定义为“解决神经网络过拟合的系统和方法”。

其核心的思路是,训练神经网络前向传播过程中,Dropout能让某个神经元的激活值以一定的概率p停止工作,也就是“Drop”(丢弃),提升模型稳定性,来缓解过拟合现象。

Disout是提出的新型替代方案,是一种通过研究特征图扰动来增强深度神经网络的泛化能力的方法。

简单来说,就是根据网络中间层的Rademacher 复杂度(ERC),确定给定深度神经网络的泛化误差上界。

并将扰动引入特征图,来降低网络的Rademacher复杂度,从而提高其泛化能力。

它们之间的区别可以用下面这张图来展示——也就是对输出特征进行扰动,而不是丢弃。

厉害了华为!开源自研算法Disout

 

相比之下,华为的方法效果更好。

Disout不但在传统视觉任务上表现优异,超越谷歌Dropout性能,在NLP任务以及语音处理任务上,同样具备有效性。

接下来,就让我们一起看下Disout在各个数据集上与Dropout系列方法的对比。

首先,CIFAR-10的和CIFAR-100数据上的测试准确率对比。

全连接层实验中,华为所提出的特征图扰动方法,训练CNN达到85.24%的准确度,相比于最新的RDdrop方法,测试准确率分别在CIFAR-10和CIFAR-100数据集上提高了2.13%和1.58%。

华为研究人员表示,他们提出的Disout方法可以有效地降低经验Rademacher的复杂度,同时保留模型的表示能力,从而具有较好的测试性能。

厉害了华为!开源自研算法Disout

 

在卷积层实验上,华为的方法可以适用于卷积层,提高深度神经网络的性能,而且优于DropBlock方法,性能分别提高了0.32%和0.63%。

厉害了华为!开源自研算法Disout

 

ImageNet 数据集实验中结果也显示,华为提出的特征扰动方法不仅可以替换常规的dropout方法提高深度神经网络的性能,而且可以提升最近提出的Dropblock方法的性能。

与传统的dropout方法相比,Disout将准确性从76.80%提高到77.71%,Block Disout方法达到了78.76%的top-1准确率,超过其他现有技术。

华为研究人员说,他们的方法可以在提高泛化能力并保留原始特征的有用信息。

此外,他们还在文本数据集IMDB和语音数据集UrbanSound8k上进行了实验,结果如下(上为文本、下为语音):

厉害了华为!开源自研算法Disout

 

核心突破:对输出特征进行扰动,而不是丢弃

那么,具体又是如何做到的呢?我们一起来了解一下泛化理论

泛化理研究的是期望风险与经验风险之间的关系。

以图像分类任务为例,总体期望风险R(fL)和训练集上的经验风险

厉害了华为!开源自研算法Disout

 

是:

厉害了华为!开源自研算法Disout

 

Rademacher经验复杂度(ERC)被广泛用于量化期望风险和经验风险之间的差距,它的定义如定义1所示。

定义1:给定由分布Q成的个实例D= {(x,y)}的给定训练数据集,网络的经验Rademacher复杂度定义为:

厉害了华为!开源自研算法Disout

 

其中Rademacher变量是{-1,+ 1}中的独立统一随机变量。

使用经验Rademacher复杂度和MaDiarmid不等式,可以通过定理1得出预期风险的上限。

定理1:给定 >0,对任意>0,至少以概率1−,对于所有的∈,满足

厉害了华为!开源自研算法Disout

 

根据定理1,研究人员发现,期望风险和经验风险之间的差距,可以借助特定神经网络和数据集上的经验Rademacher复杂度加以限制。

直接计算ERC比较难,因此通常在训练阶段使用ERC的上限或近似值,来获得具有更好泛化的模型。

了解完泛化理论,就来看下特征图扰动

研究人员通过减少网络的ERC来学习特征图的扰动值,而不是固定扰动值。

通常,对具有输入数据xi的第l层的输出特征fL(xi)所采用的干扰操作可以表示为:

厉害了华为!开源自研算法Disout

 

其中,εli是特征图上的扰动 。

上面的等式中扰动的形式是在ERC指导下自行学习得到的。由于ERC是通过网络最后一层的输出计算出来的,直接使用它来指导扰动将非常困难。

因此,研究人员使用以下定理,通过网络中间层的输出来间接表达网络的ERC:

定理 2 用Kl[k;:]表示权重矩阵Kl的第k行 ||・||p是向量的 p-norm。假设|| Kl[k;:] ||p ≤ Bl,网络输出的ERC 可以被中间特征的ERC限制:

厉害了华为!开源自研算法Disout

 

o 和 f 分别是在激活函数之前和之后的特征图。令:

厉害了华为!开源自研算法Disout

 

则:

厉害了华为!开源自研算法Disout

 

那么,最优的扰动,就可以通过求解下式得到:

厉害了华为!开源自研算法Disout

 

直观地, 过于剧烈的扰动将破坏原始的特征并降低网络的表示能力;而过小的扰动不能很好地起到正则化效果。

算法如下所示:

厉害了华为!开源自研算法Disout

 

实习生一作,华为诺亚实验室出品

这篇论文,一共有7名研究人员,分别来自北京大学、华为诺亚和悉尼大学,核心团队来自华为诺亚实验室。

厉害了华为!开源自研算法Disout

 

一作是北京大学的唐业辉,这一研究是他在华为诺亚实验室实习期间完成。

二作是王云鹤,华为诺亚方舟实验室技术专家,也是唐业辉实习时的导师。

毕业于北京大学,在相关领域发表学术论文40余篇,包含NeurIPS、ICML、CVPR、ICCV、TPAMI、AAAI、IJCAI等。

主要从事边缘计算领域的算法开发和工程落地,研究领域包含深度神经网络的模型裁剪、量化、蒸馏和自动搜索等。

其他作者有来自华为诺亚实验室的许奕星、许春景、北京大学的许超等人。

如果你对这项研究感兴趣,请收好传送门:

开源链接:
https://github.com/huawei-noah/Disout

论文链接:
https://www.aaai.org/Papers/AAAI/2020GB/AAAI-TangY.402.pdf



Tags:Disout   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
美国持续封锁,华为的技术自研,已经深入到了AI底层算法层面上,并开始将研究成果面向业界开源。刚刚,华为诺亚实验室开源Disout算法(地址在文末),直接对标谷歌申请专利的Dropout算法...【详细内容】
2020-06-22  Tags: Disout  点击:(708)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(11)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(22)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(14)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(40)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条