• [技术干货] AI顶会连发7篇论文,华为云实现人工智能多领域新突破
    全球人工智能领域的顶级学术会议AAAI 2021将于2月2日-9日在线上召开。论文录用结果显示,华为云的7篇AI科研成果被收录。华为云被接收的研究涉及联邦学习、深度学习、机器学习、自然语言处理、迁移学习、知识计算等技术领域,充分展现了华为云在人工智能领域的基础研究实力。技术创新和应用落地是这些论文的亮点,相关技术目前已在油气勘探、药物研发、AI 开发、智能交通等业务场景下规模化落地,加速行业智能升级。  AAAI 每年评审并收录来自全球最顶尖的人工智能领域学术论文,代表全球 AI 技术的趋势和未来。以下是华为云此次入选 7 篇论文介绍:论文一:业界首创自分组个性化联邦学习框架,并已落地华为云 ModelArts论文标题:《非独立同分布下的自分组个性化联邦学习》(Personalized Cross-Silo Federated Learning on Non-IID Data) 论文地址:https://arxiv.org/abs/2007.03797联邦学习机制以其独有的隐私保护机制受到很多拥有高质数据的大客户青睐。但是,各大客户的数据分布非常不一致,对模型的需求也不尽相同,这些在很大程度上制约了传统联邦学习方法的性能和应用范围。华为云自研 FedAMP 联邦学习框架使用独特的自适应分组学习机制(如图一)让拥有相似数据分布的客户进行更多合作,并对每个客户的模型进行个性化定制,从而有效处理普遍存在的数据分布不一致问题,并大幅度提高联邦学习性能。通过与中国科学院上海药物所在 AI 药物联邦学习上的合作,FedAMP 优质的性能获得了蒋华良院士的高度认可,并在中国医药创新与投资大会上吸引了众多医疗制药厂商洽谈合作。                                              图 1 FedAMP 联邦学习框架论文二: 首次提出利用物理信息深度学习的框架将二阶交通理论模型融合到神经网络中,以高效解决交通态的估值的问题:(Physics-Informed Deep Learning for Traffic State Estimation: A Hybrid Paradigm Informed By Second-Order Traffic Models)交通态的估值需要解决如何使用稀疏的传感器(如传感线圈,浮动车)数据将整条道路的交通态(如速度,流量,密度)完整地估计出来。这对算法的数据效率有着非常高的要求,而传统的纯交通模型和纯机器学习的解决方案的效果均不理想。针对这些问题,本论文提出了基于物理信息深度学习框架,通过对激励函数和连接权重的特殊设计,将复杂的二阶交通模型编码到神经网络中去(图二 - a),让神经网络在高阶交通理论的约束下进行训练。具体方法是,使用传统神经网络进行交通态的估值,然后将估值进一步输入到物理信息神经网络中去,计算出该估值的理论余量来量化偏移交通理论的程度。这个理论余量为估值网络的训练提供了重要的正则化信息,大大提高了估值模型的训练效率和估值精度。如图(图二 - b)所示,本方法可以基于很少的观测数据获得更高的估值准确度。本文是华为员工在哥伦比亚大学深造期间完成的工作。(a) (b) 图 2 编码了二阶交通理论模型的物理信息神经网络与交通态估值结果论文三:使用图卷积网络拟合权值共享神经结构搜索的搜索空间,提升神经结构搜索鲁棒性。(Fitting the Search Space of Weight-sharing NAS with Graph Convolutional Networks)论文地址:https://arxiv.org/pdf/2004.08423.pdf权值共享的神经结构搜索通过训练一个包含所有分支的超网络来复用不同操作上的计算量,以子网络采样的方式评估网络结构,大幅度提高了搜索速度。然而,这种子网络采样的方式并不能保证子网络的评估性能准确反映其真实属性。本文认为产生这一现象的原因是使用共享权值构建子网络的过程中产生了权值失配,使得评估性能中混入了一个随机噪声项。本论文提出使用一个图卷积网络来拟合采样子网络的评估性能,从而将这个随机噪声的影响降至最低。实验结果表明,使用本方案后,子网络的拟合性能与真实性能间的排序相关性得到有效提高,最终搜索得到的网络结构性能也更加优异。此外,本方案通过图卷积网络拟合了整个搜索空间中子网络的评估性能,因此可以很方便地选取符合不同硬件约束的网络结构。                                                           图 3 总体框架示意图论文四:首次提出基于多轮阅读理解的框架解决实体链接问题实体链接是将文本中提到的实体链接到知识库中对应实体的任务,目的是解决实体存在的歧义性问题,但由于名称的变化和实体的模糊性,此任务十分具有挑战性,尤其是短文本的实体链接,由于句子长度短,在链接过程中,每个待消歧的实体能利用的上下文信息非常有限。针对这个任务,本论文提出了一个多项选择阅读理解的框架,为句子中每个待消歧的实体分别生成一个问题,并将知识库中的候选实体转换成候选答案集,通过这样一个设计,实体链接转换为了一个阅读理解的问题(图 1 Local 部分)。在选择正确答案的过程中,待消歧实体的上下文信息与知识库中的候选实体之间获得了充分的交互,同时多个候选实体间的区别也得到了潜在地考虑。为了进一步捕捉句子内待消歧实体间的主题一致性来提高链接的准确率,本文采用了多轮阅读理解的方式以序列去处理多个待消歧的实体(图 1 Global 部分),为句子内多个实体的消歧提供了更丰富的信息。另外,为了解决短文本中常见的不可链接问题(即知识库中没有对应的实体),本文额外设计了一个两阶段的验证机制来判断实体是否可被链接。本论文提出的方法在多个中英文数据集上均取得了目前最优的实体链接效果。                                                 图 4 基于多轮阅读理解的实体链接框架论文五:首次提出基于多尺度地质知识迁移的跨区块油气储集层分类算法,利用迁移学习提升跨区块油气储集层分类效果。(Cross-Oilfield Reservoir Classification via Multi-Scale Sensor Knowledge Transfer)油气储集层分类是油气勘探中的一个关键步骤(如图一所示),自动准确的油气储集层分类方法不仅可以降低油气行业专家的工作负担,也可以帮助油气勘探公司做出最优的开采决策。当前已有的油气储集层分类主要关注在单一区块上的分类效果,但是在新区块上应用效果却不尽如人意。因此,如何迁移地层特征从而实现跨区块也能准确分类是一个富有挑战的任务。本论文首次提出了一种多尺度传感器抽取方法从多元测井记录中抽取地质特征的多尺度表示,然后设计了一种 encoder-decoder 模块来充分利用目标和源区块的特有特征,最后通过一个知识迁移模块来学习特征不变性表示,从而将地质知识从源区块迁移到目标区块。真实油气数据上的实验结果表明本论文精心设计的迁移学习方法,可以提升分类模型在新区块上的分类表现,相较于基线算法可以有 %6.1 的效果提升。                                                      图 5 油气勘探工作流论文六:首次提供基于超几何分布的概率模型,用于解决远程监督命名实体识别中的去噪问题。(Denoising Distantly Supervised Named Entity Recognition via a Hypergeometric Probabilistic Model)远程监督是一种常见的机器学习范式,可以降低对标注数据的依赖。但是远程监督往往会引入噪声,从而影响学习效果。对于基于远程监督的命名实体识别(NER)来说,如何有效去噪就是一个十分重要的问题。以往的去噪方法主要基于实例层次的统计结果,往往忽略了不同数据集不同实体类型之间噪声分布的差异性,从而导致这些方法何难适用于高噪声比例的设定。本论文提出了一种基于超几何分布的学习方法,同时考虑噪声分布和实例层次的置信度。具体而言,我们将每个训练 batch 里面噪声样本的数量建模成一个由噪声比例决定的超几何分布,这样一来每个实例都可以通过上一轮训练获得的置信度来决定是噪声还是正确样本。实验结果表明本论文提出的方法可以有效去除远程监督范式引入的噪声,显著提升 NER 的效果。                                                该工作由华为云团队与中科院软件所合作完成。论文七:提出基于对抗学习与相似性增强的域泛化训练新框架,在域泛化行人再识别领域创下新纪录 (Dual Distribution Alignment Network for Generalizable Person Re-Identification)域泛化是一种适用于现实应用场景的机器学习范式,对于行人再识别问题,域泛化是指在大规模多源数据上进行模型训练,期望模型在任意未知的场景中都能够直接适用。现实应用中,大规模训练数据往往难以收集,域泛化方法正是一个使得模型能够低成本快速部署的优秀方案。以往的方法对域间的巨大差异缺乏有效的处理手段,同时忽略了域间样本可能的相似性信息。在数据域层面,本论文提出了新的对抗学习方法,通过减少中心域与外围域的差异,实现了域间差异的有效消除;在样本层面,本论文通过增强来自不同域的相似样本之间的相似性,进一步对齐来自不同域的样本特征分布。在这两个方面的共同作用下,本论文的双重分布对齐网络实现了新的性能突破。实验表明,所提方法在公共测试基准数据集上取得了当前最好的结果。该工作由华为云团队与厦门大学合作完成。                                       图 7 针对域泛化行人再识别问题的双重分布对齐网络示意图为了更好地赋能产业升级,华为云持续深耕 AI 基础研究和落地应用,打造更懂世界的 AI。2020 年以来,华为云 EI 研究团队已在图像分类、弱标注场景下的图像分类、图像检测,多模态数据处理、语音语义等领域取得多项世界第一。未来,华为云将持续把 AI 前沿算法产品化,并开放给各行业的 AI 开发者使用,通过技术创新驱动产业智能升级。
  • [技术干货] 南大周志华团队开源深度森林软件包DF21:训练效率高、超参数少,普通设备就能跑
    周志华等人一直在推动的深度森林,是探索神经网络以外 AI 领域重要的研究方向之一,在表格数据建模任务中已初现锋芒。但是,由于基于决策树的集成模型在具体实现当中,经常会遇到内存不足,硬件效率不如神经网络等问题,是推动其大规模应用的主要瓶颈之一。经过 LAMDA 徐轶轩等人的不懈努力,2021 年 2 月 1 日,新的深度森林软件包 DF21 在 GitHub 与开源中国同时开源了。该软件包尝试解决了这一方向在上述实际应用过程中所遇到的关键问题,未来在各类在数据建模过程中,我们也可以便捷地使用深度森林了。据介绍,该项目目前主要由南大徐轶轩进行开发和维护,在正式发布之前它已经在 LAMDA 内部经过测试和使用。·         项目地址:http://www.lamda.nju.edu.cn/deep-forest/·         Gitee 地址:https://gitee.com/lamda-nju/deep-forest·         Github 地址:https://github.com/LAMDA-NJU/Deep-Forest针对这一开源项目,深度森林参与者之一(现任创新工场南京 AI 研究院执行院长,倍漾资本创始人)冯霁博士告诉机器之心,「深度森林在表格数据建模上,相对传统算法效果显著,但是之前开源的代码主要用于算法验证,以及辅助其他科研工作者进行深度森林算法相关的研究,代码本身对内存和服务器性能要求较高。徐同学开源的这一版更为简单易用,做了很好的封装,同时进行了高性能优化,大幅降低了内存依赖,对于科研和实际落地应用都是很好的工具。」此外,针对深度森林固有的内存消耗、只能用 CPU 训练等问题,徐轶轩告诉机器之心,「这个模型的全名是:DF21: A Practical Deep Forest for Tabular Datasets。内存消耗是 DF21 主要解决的问题——此前的 gcForest 在处理百万级别的表格型数据集上,占用的内存可能会达到上百 GB。但在新版本中,在千万级别的表格型数据集上进行训练,占用的内存约为原来的十分之一左右。」以下为此开源项目的详细介绍。DF21项目介绍本项目中的 DF21 是深度森林的 2021.2.1 实现版本。深度森林是基于决策树的深度学习模型。使用树模型学习技术(如随机森林、GBDT 等)的应用都可以尝试使用 DF21。它具有以下优势:·         拥有比其他基于决策树的集成学习方法更好的性能·         拥有更少的超参数,并且无需大量的调参·         训练效率高,并且能够处理大规模的数据集安装教程深度森林的最新稳定版本已经发布在 PyPi (https://pypi.org/) 上,可以通过以下命令安装:$ pip install deep-forest关于 Nightly-Build 版本以及如何对源代码进行编译请参考官网的安装说明。使用说明深度森林采用了与 Scikit-Learn (https://scikit-learn.org/stable/) 类似的 API 设计。例如,下面的代码片段展示了在安装完成后,如何将深度森林利用在一个简单的数字分类数据集上:from sklearn.datasets import load_digitsfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_scorefrom deepforest import CascadeForestClassifierX, y = load_digits(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)model = CascadeForestClassifier(random_state=1)model.fit(X_train, y_train)y_pred = model.predict(X_test)acc = accuracy_score(y_test, y_pred) * 100print("\nTesting Accuracy: {:.3f} %".format(acc))>>> Testing Accuracy: 98.667 %实验研究者使用 5 种流行的基于决策树的集成学习方法作为 baseline,在所有 baseline 上都保持决策树的数量相同,将其余超参数设置为其默认值。分类精度研究者在所选取的数据集上进行了测试,每个数据集的 SOTA 结果如加粗部分所示,运行时间训练阶段和评估阶段的运行时间。深度森林,机器学习的新方向深度森林的特点在于很少的超参数和自适应复杂度,在不同规模的模型上,深度森林都可以做得很好。近十几年来,深层神经网络的发展在机器学习领域取得了显著进展。通过构建分层或「深层」结构,该模型能够在有监督或无监督的环境下从原始数据中学习良好的表征,这被认为是其成功的关键因素。成功的应用领域包括计算机视觉、语音识别、自然语言处理等。大部分被广泛应用的深度神经网络都使用具有随机梯度下降的反向传播作为训练过程中更新参数的主力。实际上,当模型由可微分量(例如,具有非线性激活函数的加权和)组成时,反向传播似乎仍是当前的最佳选择。其他一些方法如目标传播已经被作为训练神经网络的替代方法被提出,但其效果和普及还处于早期阶段。但一些研究表明,目标传播最多可达到和反向传播一样的效果,并且实际上常常需要额外的反向传播来进行微调。换句话说,老掉牙的反向传播仍然是训练神经网络等可微分学习系统的最好方法。另一方面,探索使用非可微模块来构建多层或深度模型的可能性的需求不仅仅是学界的兴趣所在,其在现实应用上也有很大的潜力。例如,基于树的集成(例如随机森林或梯度提升决策树(GBDT)仍然是多个领域中建模离散或表格数据的主要方式,为此在这类数据上使用树集成来获得分层分布式表征是个很有趣的研究方向。在这样的案例中,由于不能使用链式法则来传播误差,反向传播不再可行。这引发了两个基本的问题:首先,我们是否可以用非可微组件构建多层模型,从而中间层的输出可以被当作分布式表征?其次,如果是这样,如何在没有反向传播的帮助下,联合地训练这种模型?本文的目的就在于提供这种尝试。2017 年,周志华和冯霁等人提出了深度森林框架,这是首次尝试使用树集成来构建多层模型的工作。具体来说,通过引入细粒度的扫描和级联操作(cascading operation),该模型可以构建多层结构,该结构具备适应性模型复杂度,且能够在多种类型的任务上取得有竞争力的性能。研究者们提出的 gcForest 模型利用了集成学习多样性增强的各种策略,然而该方法仅适用于监督学习设置。深度森林的模型框架。同时,该论文仍然不清楚如何利用森林来构建多层模型,并明确地测试其表征学习能力。由于很多之前的研究者认为,多层分布式表征可能是深度神经网络成功的关键,为此我们应该对表征学习进行这样的探索。2018 年,周志华等人又在研究《Multi-Layered Gradient Boosting Decision Trees》中探索了多层的决策树。该工作力求利用两个方面的优势:树集成的出色性能和分层分布式表征的表达能力(主要在神经网络中进行探索)。具体来说,该研究提出了首个多层结构,每层使用梯度提升决策树作为构造块,明确强调其表征学习能力,训练过程可以通过目标传播的变体进行联合优化。在不断努力下,研究人员已经证明了深度森林模型可以在有监督和无监督的环境下进行训练,人们可以使用决策树来获得分层和分布式表征。关于深度森林系列研究才刚刚开始,对于不可微分学习模块的探索,有待更多的科研人员加入。相关资源在相关资源推荐中,作者推荐了深度森林的相关论文与报告:论文:Deep Forest链接:https://arxiv.org/pdf/1702.08835.pdf报告:周志华:An exploration to non-NN deep models based on non-differentiable modules链接:https://aistats.org/aistats2019/0-AISTATS2019-slides-zhi-hua_zhou.pdf在此,我们也附上机器之心先前介绍深度森林的相关内容,以供大家学习。·         9 大数据集、6 大度量指标完胜对手,周志华等提出用深度森林处理多标签学习·         深度森林第三弹:周志华组提出可做表征学习的多层梯度提升决策树·         南京大学提出使用树型集成算法构建自编码器模型:对比 DNN 有更高的准确性和高效性·         从 Boosting 到 Stacking,概览集成学习的方法与性能 
  • [技术干货] 模型压缩6倍,无需重训练:数学家团队提出量化新方法
    神经网络压缩是指在对神经网络性能影响不大的情况下,通过有关方法来减少网络的参数和存储空间,大体上可以分为近似、量化和剪枝三类方法。近日,来自俄罗斯人民友谊大学(RUDN)的数学家团队找到一种方法,可以将训练后的神经网络的大小减小六倍,而无需花费更多的资源来对其进行重新训练。该方法基于找到初始系统及其简化版本中神经连接权重之间的相关性。这项研究的结果发表在《Optical Memory and Neural Networks》期刊上。生命体中人工神经网络和神经元的结构是基于相同的原理。网络中的节点是相互连接的;其中一些接收信号,一些通过激活或抑制链中的下一个元素来发送信号。任何信号(例如图像或声音)的处理都需要很多网络元素及其之间的连接。但是,计算机模型只有有限的模型容量和存储空间。为了处理大量数据,这一领域的研究者必须发明各种方法来降低对模型能力的需求,包括所谓的量化。这有助于减少资源消耗,但需要对系统进行重新训练。RUDN 大学的一些数学家发现后者可以避免。RUDN 大学 Nikolskii 数学研究所助理教授 Iakov Karandashev 博士说:「几年前,我们在 Hopfield 网络中进行了有效且经济高效的权重量化。这是一个关联存储网络,并带有遵循 Hebb 规则形成的元素之间的对称连接。在其运行过程中,网络的活动被降低到某个平衡状态,并且在该状态达到时任务就被认为是已经解决了,该研究中获得的见解后来被应用于当今在图像识别中非常流行的前馈深度学习网络。通常这些网络需要在量化后进行重新训练,而我们找到了避免重新训练的方法。」简化人工神经网络背后的主要思想是所谓的权重量化,即减少每个权重的位数。量化提供信号的均值化:例如,如果将其应用于图像,则代表相同颜色不同阴影的所有像素将变得相同。从数学上讲,这意味着借助某些参数的相似神经连接应该具有相同的权重(或重要性),即表示成同一个数字。RUDN 大学的一个数学家团队进行了计算并创建了公式,该公式可以有效地在量化前后,在神经网络的权重之间建立相关性。基于此,科学家们开发了一种算法,利用该算法,经过训练的神经网络可以对图像进行分类。在该研究的实验中,数学家使用了包含 5 万张照片的数据集,这些照片包可以被分为 1000 组。训练之后,该网络会使用新方法进行量化,并且不进行重新训练。然后,该研究将实验结果与其他量化算法进行了比较。RUDN 大学的 Iakov Karandashev 补充说道:「量化之后,分类准确率仅降低了 1%,但是所需的存储容量减少了 6 倍。实验表明,由于初始权重与量化后权重之间的相关性很强,该网络不需要重新训练。这种方法有助于在完成时间敏感任务或在移动设备上运行任务时节省资源。」感兴趣的读者可以阅读期刊原文。参考原文:https://www.eurekalert.org/pub_releases/2021-02/ru-rum020521.php论文链接:https://link.springer.com/article/10.3103/S1060992X20030042https://arxiv.org/abs/2002.00623本文来源:https://www.jiqizhixin.com/articles/2021-02-19-5
  • [技术干货] NeurIPS 2020 | 百里挑一:如何加速超网训练的收敛和搜索速度
    作者:彭厚文、傅建龙编者按:随着深度学习的发展,神经网络结构的设计逐渐由手工设计转变为算法自动设计。在近期的神经网络设计(Neural Architecture Search, NAS)研究中,现有的方法存在一定缺陷,结果往往不能真正体现出众多子网络正确的排序关系。为解决这一问题,微软亚洲研究院的研究员们提出了基于优先路径蒸馏的网络结构搜索方法。采用这一方式选出的网络在 ImageNet 上的分类准确率达到了80.0%, 超越了现有的 EfficientNet-B0/B1 和 MobileNetV3。该论文已被 NeurIPS 2020 接收。从数亿数量级的神经网络结构中搜索出高性能的网络,是一个充满挑战但又令人向往的研究任务。正如深度学习变革了传统的手工图像特征设计,神经网络结构的设计也正在逐渐由手工设计转变为算法自动设计。面对数以亿级的网络结构,将每一个可能的结构都训练收敛,并选择其中最好的结构是不现实的。在近期的神经网络设计研究中,一个被广泛使用的解决方法是先训练一个包含了所有可能结构的超网(hypernetwork),当测试某一个网络结构的性能时,直接继承超网训练后的参数。这样的做法省去了重新训练的时间,大大加快了网络搜索的速度。然而,虽然预训练超网的方法能够大幅度加速网络搜索,但因为很难对所有的路径(子模型)进行充分训练,所以其给出的结果往往不能真正体现出众多子网络正确的排序关系。为了解决这一问题,微软亚洲研究院的研究员们提出维护一个优先路径组(prioritized path board)。也就是说,在训练超网的某一条路径时,使用元网络(meta-network)从组中选出一条性能较好的子网对其进行网络蒸馏(distillation),从而提升超网的收敛程度与性能。采用这种方式选出的网络在 ImageNet 上的分类准确率达到了80.0%, 超越了现有的 EfficientNet-B0/B1 和 MobileNetV3。该论文已被 NeurIPS 2020 接收。                                                                                            基于优先路径的网络蒸馏现有的超网训练方式多种多样,研究员们采用了简单有效的均匀采样单条路径(single-path uniform sampling strategy)作为基础,即每一次随机从超网中采一条路径进行训练。与之不同的是,在训练单条路径时,会从优先路径组中选出一条路径对其进行蒸馏,从而提升训练效果。图1:方法示意图,左侧为常规的蒸馏方法,即采用一个预训练的模型进行蒸馏,右侧为提出的基于优先路径的蒸馏方法。优先路径组优先路径组是由少量性能优异的路径构成的。超网训练会对优先路径组进行动态的维护,如果采样出来的网络在效果和复杂度上均优于有限路径组中的网络,那么就会将其替换到优先路径组中。不仅如此,维护这样一个优先路径组还使得超网训练结束后可以直接从中选取最优路径,从而节省以往方法在进行网络结构搜索时运用强化学习方法或进化算法(Evolution Algorithm)的时间。在选取优先路径时,可根据公式知识蒸馏知识蒸馏是一种被广泛应用的模型压缩方法,通过让小型网络来模仿预训练大型网络的最后一层输出特征,可以使小型网络达到接近于大型网络的表现。研究员们通过优先路径来进行蒸馏,从而无需提前训练一个大型神经网络。对超网进行更新的具体公式如下:对基于优先路径蒸馏的网络结构搜索算法的测试是在 ImageNet 上进行的。实验结果如图2和表1所示。可以看出,在各种模型大小下,该方法的搜索结果均超越了此前的 EfficientNet-B0/B1 和 MobileNetV3,实现了优越的性能。不仅如此,该方法搜索所需要的时长也是各种网络结构搜索算法中最短的。基于NNI工具接口的源码实现NNI (Neural Network Intelligence) 是当下最热门的开源自动机器学习(AutoML)工具之一,由微软亚洲研究院与微软(亚洲)互联网工程院领衔开发。NNI 对机器学习生命周期的各个环节都做了较为全面的支持,包括特征工程、神经网络架构搜索、超参调优和模型压缩。目前,微软亚洲研究院的研究员们已将此次提出的基于优先路径蒸馏的网络结构搜索算法通过 NNI 平台的 One-Shot 算法接口进行了实现,提供了完整的搜索、重训练和测试代码以及模型。由于 NNI 提供了统一的接口表达网络搜索空间,所以有对比此算法与其他神经网络架构搜索结果需求的用户可选择这份代码实现做参考。代码以及更多技术细节,请参见:https://github.com/microsoft/nni。结语本篇 NeurIPS 2020 论文针对网络结构搜索中超网训练不充分的问题,提出了使用优先路径进行蒸馏的方法,加快了超网训练的收敛和搜索速度,且搜索得到的网络性能超越了大多数现有算法。尽管如此,该方法目前仍处于初步的探索阶段,未来可能还会将模型延迟考虑到优先路径选择中,并对优先路径蒸馏的理论依据进行进一步的探索。更多技术细节,详见论文:Cream of the Crop: Distilling Prioritized Paths For One-Shot Neural Architecture Search论文链接:https://arxiv.org/abs/2010.15821代码链接:https://github.com/microsoft/CreamNNI实现链接:https://github.com/microsoft/nni参考文献[1] Hieu Pham, Melody Guan, Barret Zoph, Quoc Le, and Jeff Dean. Efficient neural architecture search via parameters sharing. In ICML, 2018[2] Mingxing Tan and Quoc V. Le. Efficientnet: Rethinking model scaling for convolutional neural networks. In ICML, 2019[3] Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, et al. Searching for mobilenetv3. In ICCV, 2019.[4] Zichao Guo, Xiangyu Zhang, Haoyuan Mu, Wen Heng, Zechun Liu, Yichen Wei, and Jian Sun. Single path one-shot neural architecture search with uniform sampling. In ECCV, 2020.[5] Han Cai, Chuang Gan, Tianzhe Wang, Zhekai Zhang, and Song Han. Once for all: Train one network and specialize it for efficient deployment. In ICLR, 2020.[6] Changlin Li, Jiefeng Peng, Liuchun Yuan, Guangrun Wang, Xiaodan Liang, Liang Lin, and Xiaojun Chang. Blockwisely supervised neural architecture search with knowledge distillation. In CVPR, 2020[7] Jiahui Yu, Pengchong Jin, Hanxiao Liu, GabrielBender, Pieter-Jan Kindermans, Mingxing Tan, Thomas Huang, Xiaodan Song,Ruoming Pang, and Quoc Le. Bignas: Scaling up neural architecture search with big single-stage models. In ECCV, 2020.[8] Hieu Pham, Qizhe Xie, Zihang Dai, and Quoc V Le. Meta pseudo labels. arXiv:2003.10580, 2020[9] Hanxiao Liu, Karen Simonyan, and Yiming Yang. DARTS: Differentiable architecture search. In ICLR, 2019转自:微软研究院AI头条:https://www.jiqizhixin.com/columns/Microsoft_AI
  • [技术干货] 深度学习在物理层信号处理中的应用研究
    作者:Murph转自:网络人工智能园地https://zhuanlan.zhihu.com/p/269983075摘要:目前针对5G通信高可靠和超高容量无线通信的需求已经引起了广泛关注与研究。然而,当前的通信系统依然受制于传统的通信理论而限制了网络性能的突破性提升。作为一项广受关注和应用的新兴技术,深度学习已经被证实有潜力处理复杂通信系统中通信问题并提高通信性能。本文主要介绍基于深度学习的物理层应用,并提出一种基于深度Q网络(DQN)的MIMO系统位置信息验证方案,接收者在多变未知的信道环境下利用深度Q网络不断更新信号检测阈值,提高信号检测的准确度,实现对发送者位置信息的确认。关键词:深度学习,信号检测、MIMO1 引言随着移动流量呈现的爆发式增长、高可靠性和低时延的通信场景给当前网络带来了更大的复杂性和计算挑战。据IBM报道,移动数据量到2020年将超过40万亿Gbits,比2009年增加44倍,连接总设备量将达到500亿。为了满足这一需求,需要新的通信理论和创新技术来满足5G系统的需求。近些年深度学习范式的发展使引起了学术界和工业界对基于深度学习的无线通信技术的研究,研究结果证实了深度学习技术可以提高无线通信系统的性能,并有潜力应用在物理层进行干扰调整、信道估计和信号检测、信号处理等方面。2 深度学习范式深度学习的概念源于人工神经网络(ANN)的研究,由Hinton等人于2006年提出。如图1所示,深度学习通过建立具有阶层结构的ANN,往往包含一个输入层、多个隐藏层和一个输出层。每个层之间采用不同的权重与邻层之间进行连接,通过对输入信息进行逐层提取和筛选,可以实现端到端的监督学习和非监督学习 。深度神经网络包括前馈神经网络(FNN)、循环神经网络(RNN)、卷积神经网络(CNN)、对抗生成网络(GAN)和深度信念网络等。其中基于门控的RNN,例如长短期记忆(LSTM)网络对于输入有一定的记忆功能,因此常被用于物理层信号处理和信道状态信息估计等。此外,深度学习也可参与构建强化学习(RL)系统,形成深度强化学习,例如深度Q网络(DQN)[1],可以用于对物理层信号处理策略制定的优化。(1)长短期记忆网络作为RNN的一个变体,长短期记忆网络可以有效解决简单循环神经网络的梯度爆炸或消失问题。RNN通过隐状态来存储历史信息。在简单的RNN中,隐状态的每个时刻都会被重写,因此可以看作是一种短期记忆。而在LSTM网络中,记忆单元保存关键信息的时间要长于短期记忆。LSTM网络引入门机制来控制信息传递的路径。门机制取值在0到1之间,来控制信息通过的比例。LSTM网络主要包括了3个门,其中遗忘门控制上一个时刻的内部状态需要遗忘多少信息;输入门控制当前时刻的候选状态保存多少信息;输出门控制当前时刻的内部状态有多少信息需要输出给外部状态。(2)深度Q网络3 基于深度学习的物理层信号处理应用近年来,学术界和工业界已经出现了一些深度学习应用于物理层的相关工作,研究结果发表深度学习可以提高物理层性能。本小节从物理层信号处理的角度,从信道状态信息(CSI)估计、信号编解码、干扰调整和信号检测四个方面对目前已有的相关工作进行举例和说明。精确的CSI获取对于保证无线通信系统的链路性能至关重要。无线网络根据信道估计状态来选择具体的信号控制方案,例如,当CSI较低时,物理层采用低阶调制方案来对抗恶劣的通信状态从而降低误码率。5G通信系统采用多输入多输出(MIMO)、毫米波和非正交多址接入(NOMA)等技术,使得通信双方拥有更多的传输信道,信道估计问题也变得更加复杂。传统的CSI估计方案需要执行具有高复杂度的矩阵运算,受到了计算资源和时延的限制。利用深度学习来得到CSI信息时空和上下行之间的关联性,已经被证实可以提高CSI估计的效率,并减少所需上下行参考信息的数据量[2]。如图2所示,论文[3]提出将历史CSI数据经过一个二维卷积神经网络提取频率特征矢量,再利用一个一维卷积神经网络来从频率特征矢量中提取状态特征矢量。最后,一个LSTM网络用来进行CSI状态预测。由于二维卷积神经网络最初是用来处理图片数据的,因此,作者将CSI原始数据分割成单元格,每个单元格对应一个图片像素。每个频带的CSI和辅助信息对应的像素组成一个频道。因此,N个频带的数据将被转换成N个频道的像素信息,并输入到学习框架中。(2)基于深度学习的编解码深度学习在信源编码和信道编码方面的应用,也证明了其可以提高编码效率并降低网络的BER。基于深度学习框架的联合编码方案可以通过循环神经网络实现对本文的源编码(结构化),然后将结构化的信息输入双向的LSTM网络,并最终输出最终传输的二进制数据流。在接收端,LSTM用来进行解码处理。论文[4]提出了就有全连接深度神经网络的编码器,用来提高基于置信传播算法的HPDC解码效率。O’Shea等人在[5]中将整个物理层建模为一个包含了调制、信道编码和信号分类功能的自编码器,并利用卷积神经网络来对自编码器进行训练。如图3所示,在多密集层神经网络的学习框架中,输入信号被编码为独热编码(One-hot encoding),无线信道建模为一个噪声层。交叉熵损失函数和随机梯度下降算法用来训练模型,在输出端将最高概率的输出信号作为解码结果。(3)基于深度学习的干扰调整MIMO系统中的干扰调整通过线性预编码技术来调整发射信号,使得接收端的干扰信号可以控制在一个降维子空间里,从而突破MIMO系统干扰问题带来的吞吐量限制。现有工作中已经有研究结果表明,利用深度学习可以提高干扰调整网络中的吞吐量,并取得优化结果。He等人在[6]中提出了采用DQN来获得干扰调整下最优的用户选择策略。在该机制中,中央调度器用来收集所有信道状态和每个用户的缓存状态,并将信道资源分配给每个用户。信道的时变过程用一个有限状态马尔科夫模型来进行建模,系统的状态定义为每个用户的信道状态和缓存状况。中央调度器用来为系统训练处最佳策略,对应的系统动作定义为是否为每个用户分配信道资源来进行数据的传输,来最大化干扰调整网络的吞吐量。DQN也可被用于认知无线电网络中次用户与主用户之间的干扰消除,次用户利用跳频和移动性来抵御干扰者[7]。(4)基于深度学习的信号检测基于DL的检测算法可以显著提高通信系统的性能,尤其适当传统的处理模块需要联合优化或是信道无法用常见的分析模型来表征时。论文[8]提出了一个五层全连接的DNN框架嵌入到OFDM接收器中来进行联合信道估计和信号检测。将接收到的信号以及对应的传输数据和导频作为输入,DNN可以推断出信道信息,而且可以用来预测发送的数据。在MIMO中检测中,基于贝叶斯最优检测器的迭代方法已经被证实有较优的性能和中等的计算复杂度。但在很多更复杂的环境下,未知的信道分布条件将限制这种检测器的效果。利用深度学习算法,可以根据一定的输入数据来恢复模型参数,从而提高检测器的自适应能力。同时,在一些情况下,深度学习算法还可以利用一些语义信息,例如接收器的位置和周围车辆节点的信息,来进行波束预测,从而提高系统性能。4 基于DQN的信号检测机制在基于位置服务的场景中,车辆或者用户需要不断发送信标消息来报告自己的位置,从而提高位置服务和网络性能。但有些车辆或用户会选择发送虚假的位置来获取更多的资源,影响了网络服务的效用。在MIMO系统中,传输信号往往包含了丰富的信息(到达角、接收功率等)可以在接收端利用信号检测技术对信标消息进行位置验证。我们提出基于DQN的信号检测机制,可以用于MIMO系统中发送者的位置信息验证和对信息伪造者的检测。主要的思想为,接收端对接收的信号采用最大似然估计进行假设检验,当接收到的信号通过检测检验时,则认为发送信号来自于发送者上报的位置。否则,认为发送者上报了虚假的位置信息。为了提高在多变的信道状态下的检测性能,在接收端基于DQN来预测采用不同的检测阈值可以取得的收益,并选取最优的检测阈值。系统框架如图4所示。(1)系统模型假设检验中的零假设定为发送节点上报真实位置信息,备择假设为发送节点上报了虚假位置信息。在每个时刻,接收端收到发送端的信号都与发送端与接收端之间的真实位置、信道状态和信号到达角有关。在已知发送信息和发送功率的条件下,接收端可以利用最大似然检测来对接收到的信号进行假设检验。(2)最大似然检测(3)基于DQN的检测阈值优化在本文提出的机制中,将接收端的状态空间分为两个维度,第一个维度是发送端到接收端的信道状态,第二个维度是信道检测的结果。信道状态空间包括量化后的一系列信道指标,并假设信道的状态转移符合马尔科夫过程,即信道在当前时刻的状态都只与上一个时刻的状态有关。结果状态空间包括四种:真实数据检测结果为真、真实数据检测结果为假;虚假数据检测结果为真以及虚假数据检测结果为假。在每次动作过程中,接收端的直接奖励与检测结果有关,当检测结果正确时获得正收益,当检测结果错误时获得负收益。接收端的动作定义为进行信号检测的阈值,动作空间包括一系列量化的检测阈值。在每个片刻,接收端的混合策略为选择不同检测阈值的概率。基于本文第二章介绍的DQN原理,接收端在每次经历后,将自己选择的检验阈值、对应的状态结果和收益存储到经验池,利用CNN对Q函数进行训练预测,不断优化对检测阈值的选择。4 总结与未来发展建议在本文中,我们通过现有工作和案例证明了深度学习在物理层通信中的巨大应用潜力。除了以上介绍的几种应用方向,深度学习在端到端通信系统中也得到了一定的应用。不过,目前还尚未有结论基于深度学习的端到端通信系统性能是否会最终超过传统通信系统性能。另外,基于深度学习的物理层应用需要数据驱动,为了提高深度学习模型的训练效率,可以将需要长时间训练的模块进行融合,并需要考虑在良好的性能和训练效率之间的权衡。深度学习应用的兴起主要归功于各种可用的数据集,但目前用于无线通信相关的数据集仍然较少。数据的安全和隐私问题进一步限制了在真实世界对通信数据的访问功能。但为了基于深度学习的通信应用,需要一些开放性电信数据集的发布和共享。最后,5G复杂多变的通信环境,包括MIMO、毫米波通信以及NOMA技术等,也为深度学习的应用带来了巨大的潜力。参考文献[1] Mnih, Volodymyr, et al. "Human-level control through deep reinforcement learning." Nature 518.7540 (2015): 529. https://www.nature.com/articles/nature14236.[2] A. Mousavi and R. G. Baraniuk, “Learning to Invert: Signal Recovery via Deep Convolutional Networks,” Proc. IEEE Int’l. Conf. Acoustics Speech Signal Process. (ICASSP’17), New Orleans, LA, Mar. 2017, pp. 2272–76.[3] C. Luo, J. Ji, Q. Wang, X. Chen and P. Li, "Channel State Information Prediction for 5G Wireless Communications: A Deep Learning Approach," in IEEE Transactions on Network Science and Engineering, early access.[4] E. Nachmani, Y. Be’ery, and D. Burshtein, “Learning to decode linear codes using deep learning,” in Proc. Communication, Control, and Computing (Allerton), 2016, pp. 341–346.[5] T. O’Shea and J. Hoydis, "An Introduction to Deep Learning for the Physical Layer," in IEEE Transactions on Cognitive Communications and Networking, vol. 3, no. 4, pp. 563-575, Dec. 2017.[6] Y. He, C. Liang, F. R. Yu, N. Zhao, and H. Yin, “Optimization of cache-enabled opportunistic interference alignment wireless networks: A big data deep reinforcement learning approach,” in Proc. IEEE Int. Conf. Commun. (ICC), May 2017, pp. 1–6.[7] G. Han, L. Xiao, and H. V. Poor, “Two-dimensional anti-jamming communication based on deep reinforcement learning,” in Proc. IEEE Int. Conf. Acoust. Speech Signal Process. (ICASSP), New Orleans, USA, Mar. 2017, pp. 2087–2091.[8] H. Ye, G. Y. Li, and B.-H. F. Juang, “Power of Deep Learning for Channel Estimation and Signal Detection in OFDM Systems,” IEEE Wireless Commun. Lett., vol. 7, no. 1, Feb. 2018, pp. 114–17.[9] Bai, Lin, Jinho Choi, and Quan Yu. “Signal Processing at Receivers: Detection Theory.” Low Complexity MIMO Receivers, Springer, Cham, 2014. pp.5-28.
  • [技术干货] 加法网络 | NeurIPS 2020 Spotlight
    华为诺亚方舟实验室联合悉尼大学发布论文《Kernel Based Progressive Distillation for Adder Neural Networks》,提出了针对加法神经网络的蒸馏技术,ResNet-34和ResNet-50网络在ImageNet上分别达到了68.8%和76.8%的准确率,效果与相同结构的CNN相比持平或超越,该论文已被NeurIPS2020接收。论文链接:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2009.13044.pdf代码地址:https://link.zhihu.com/?target=https%3A//github.com/huawei-noah/AdderNet研究背景深度卷积神经网络(CNN)被广泛应用于诸多计算机视觉领域的实际任务中(例如,图片分类、物体检测、语义分割等)。然而,为了保证性能,神经网络通常是过参数化的,因此会存在大量的冗余参数。近期提出的加法神经网络(ANN),通过将卷积操作中的距离度量函数替换为L1距离,极大减少了神经网络中的乘法操作,从而减少了网络运行所需的功耗和芯片面积。然而,ANN在准确率方面和同结构的CNN相比仍然有一定差距,在某种程度上限制了ANN在实际应用中对CNN的替换。为了提高ANN的性能,我们提出了一种基于核的渐进蒸馏方法。具体的,我们发现一个训练好的ANN网络其参数通常服从拉普拉斯分布,而一个训练好的CNN网络其参数通常服从高斯分布。因此,我们对网络中间层的特征图输出进行核变换后,使用距离度量函数估计教师网络(CNN)和学生网络(ANN)之间的损失。对于最后一层,我们使用传统的KL散度估计两个网络之间的损失。同时,在训练中我们使用随机初始化的教师网络,与学生网络同时训练,以减少两个网络之间参数分布的差异性。实验表明,我们的算法得到的ANN能够在CIFAR-10,CIFAR-100,ImageNet等标准图片分类数据集上达到或超越同结构CNN的准确率。对网络中间层特征图输出进行核变换ANN本身精度不好的原因是原始ANN在反向传播时,使用的是近似的梯度,导致目标函数无法向着最小的方向移动。传统KD方法应用到ANN上效果不佳的原因,在于ANN的权重分布是拉普拉斯分布,而CNN的权重分布为高斯分布,因此分布不同导致无法直接对中间层的feature map使用KD方法。本方法首先将核变换作用于教师网络和学生网络的中间层输出,并使用1x1卷积对新的输出进行配准。之后,结合最后一层的蒸馏损失与分类损失,得到整体的损失函数。除了上述中间层的loss之外,我们还希望ANN学习CNN最后一层的输出,以及ANN关于目标任务的loss(这里以分类任务举例)。对于ANN的最后一层,在分类任务上输出的是每一个类别的概率分布,因此希望它同时学习CNN的概率分布,以及ground-truth的概率分布(ground-truth为one-hot vector),因此构造的loss function为:渐进式蒸馏算法传统的蒸馏方法使用固定的,训练好的教师网络来教学生网络。这样做会带来问题。由于教师网络和学生网络处于不同的训练阶段,因此他们的分布会因为训练阶段的不同而不同,所以会导致KD方法效果不好。因此我们采用渐进式蒸馏方法,让教师网络和学生网络共同学习,有助于KD方法得到好的结果。即目标函数变为:其中b为当前的step。实验结果我们在CIFAR-10、CIFAR-100、ImageNet三个数据集上分别进行了实验。下表是在CIFAR-10和CIFAR-100数据集上的结果,我们使用了VGG-small、ResNet-20与ResNet-32作为教师网络,同结构的ANN作为学生网络。可以看到,使用了本方法得到的ANN在分类准确率上相比原始的ANN有大幅度的提升,并且能够超过同结构的CNN模型。表格中#Mul表示网络中乘法操作的次数。#Add表示加法操作次数,#XNOR表示同或操作的次数。下表展示了在ImageNet数据集上的结果,我们使用ResNet-18与ResNet-50网络作为教师网络,同结构的ANN作为学生网络。结果显示我们的方法得到的ANN在分类准确率上相比同结构CNN基本相同或能够超越。最后,我们展示了ResNet-20,ANN-20与通过本方法得到的PKKD ANN-20模型在CIFAR-10与CIFAR-100数据集上的训练精度曲线与测试精度曲线。图中的实线表示训练精度,虚线表示测试精度。在两个数据集中,CNN的训练和测试准确率都超过了原始的ANN模型。这是因为在训练原始ANN时,反向传播的梯度使用的是L2 norm来近似,因此梯度方向是不准确的。当使用本方法后,CNN的训练过程可以指导ANN的训练,因此可以得到更好的结果。同时,知识蒸馏方法能够帮助学生网络防止过拟合,这也是我们的方法有最低的训练精度和最高的测试精度的原因。作者:王云鹤链接:https://zhuanlan.zhihu.com/p/322108981
  • [技术干货] 不惧噪音环境、提升样本效率,最新强化学习成果入选NeurIPS 2020
    如何提升强化学习算法的样本效率,提升算法对噪音环境的鲁棒性?华为云 EI 创新孵化 lab 和中科院计算所给出的答案是:Trust the model when it is confident .人工智能顶级会议 NeurIPS 2020 将于 12 月 6 日 - 12 日线上召开,今年会议论文投稿数量创历史新高,相比去年增长了 38%,而接收率却为史上最低,仅为 20.1%。华为云最新强化学习成果「Trust the Model When It Is Confident: Masked Model-based Actor-Critic」成功入选。论文地址:https://papers.nips.cc/paper/2020/file/77133be2e96a577bd4794928976d2ae2-Paper.pdf这篇论文首次探索了有模型强化学习该「何时使用模型」,并基于不确定性预估提出全新算法 M2AC(Masked Model-based Actor-Critic),在样本效率和噪音环境下的表现均取得巨大突破。在连续控制任务中,M2AC 仅用 model-free 方法 SAC 1/5 的交互样本就能达到同等效果。有噪音环境下,在之前的 model-based 算法几乎失效的情况下,M2AC 仍表现鲁棒,并实现多达数倍的性能提升。背景介绍众所周知,强化学习(RL)是一门专注于「试错」的学问,它凭借与环境不断交互来学习如何做出使自身收益最大化的决策。「试错」显然是 RL 的最大优势——如果一个决策任务只有不断尝试才能学会,那应该让 RL 来试试。但与此同时,「试错」这一天然属性也让许多人对 RL 望而却步:如果试错成本很高,当前的 RL 算法真的能很快学到好的策略吗?为此,更高的样本效率成为当前学术界与工业界对强化学习算法优化的核心目标,也就是希望 RL 算法能够「聪明地试错」,通过尽量少的环境交互学到尽量好的策略。人们普遍认为有模型的强化学习 (model-based RL, MBRL) 比无模型的强化学习 (model-free RL) 具有更高的样本效率。MBRL 在采集到交互数据后,首先使用「环境模型」(model) 来模拟真实环境的动态(学习状态转移和奖励函数),这样智能体就可以通过与 model 互动来更新策略 (policy),从而避免过多的环境交互。但在实际应用中,情况恰恰相反。由于 model 拟合环境存在误差,在复杂和嘈杂的环境中,现有的 MBRL 算法可能反而会导致策略学得很差。这种现象在以下两个常见情形中极为常见。第一种情况,由于误差会随着 model 与 policy 的每一步交互而逐渐累积,因此步数越多,policy 越容易学偏。从图 1 左侧可以看出,MBPO 算法(由 UC Berkeley 在 2019 年提出,是当前 MBRL 的 SOTA 算法,原文中显示其在连续控制任务中性能远超 STEVE 等 MBRL 算法和 SAC、PPO 等 model-free 方法)在交互步数大于 1 步时,性能迅速降低。第二种情况,即环境有噪音的情况。当环境有噪音时,model 更难学准确,这给 MBRL 算法带来很大挑战。如图 1 右侧所示,MBPO 在环境有噪音情况下表现并不鲁棒,在 noisy-2 环境中的分数甚至不到确定性环境中的一半。华为云等提出新方法基于此,华为云 EI 创新孵化 lab 联合中科院计算所提出 M2AC (Masked Model-based Actor-Critic) 算法,利用不确定性预估的技术突破了这一难题。从图 1 也可以看出,M2AC 在上述两种场景中均表现鲁棒:在多步交互时,交互步数越多,算法性能越好;在有噪声环境中,即便在噪声最大的 noisy-2 中,其性能也超过了确定性环境中 MBPO 的性能。下面我们来看一下这一突破是怎么做到的。作者提出,解决这一问题的关键是回答「模型什么时候值得信任」这一问题,如图 2 所示。也就是说,如果智能体只在模型误差小的时候信任 model 生成的虚拟数据来进行策略更新,那么就可以避免因模型误差过大导致策略学偏。经过一系列理论分析,作者发现即使 model 在拟合环境时存在误差,也可以通过更改模型使用的方式来达到样本效率的提升。他们从理论上证明,如果 model 生成数据的使用范围仅限于模型误差较小的状态 - 动作对,则策略在 model rollout 与 real rollout 之间的性能差距可以缩小。由此启发,M2AC 算法的核心仅用其论文标题中的一句话就可以总结:「Trust the model when it is confident.」只有在模型对其预测有信心时,才使用 MBRL 技术进行策略更新。具体来说,M2AC 基于模型的不确定性实现了一种 mask 机制来决定是否应该使用其预测,如图 4 中 model-based 生成的数据中仅有绿色样本用于策略更新。理论证明表示,它最大化了真实价值函数的一种 model-based 的下界。因此,这一新算法倾向于给出稳健的策略改进,也就能避免由于多步交互或环境噪音导致算法失效。实验效果在连续控制 MuJoCo 基准实验中,与 model-free 算法相比,M2AC 仅用 SOTA 算法 SAC 1/5 的交互样本就能达到同等效果。在 4 个 MuJoCo 基准环境中,相比 Google 提出的 STEVE 算法分别提升 75%、2500%、30%、130%。算法表现非常亮眼。而在有噪音环境中,M2AC 优势更为显著,实验结果参见图 6 。相比 MBPO,M2AC 在 4 种噪音级别下分别提升 38%、360%、230%、340%。这体现出 M2AC 在各种困难场景中都能够提供鲁棒的策略提升。M2AC 算法为强化学习的落地打下了一剂定心丸:即便环境交互成本高或环境复杂有噪音,算法依然能够稳健地学到好的策略。这是现实世界的智能决策系统必不可少的能力。本文来源:https://www.jiqizhixin.com/articles/2020-12-04-5
  • [技术干货] 最新综述:多标签学习的新趋势
    作者 皓波本文来源:https://www.jiqizhixin.com/articles/2020-12-14-2这里给大家带来一篇武大刘威威老师、南理工沈肖波老师和 UTS Ivor W. Tsang 老师合作的 2020 年多标签最新的 Survey,我也有幸参与其中,负责了一部分工作。论文链接:https://arxiv.org/abs/2011.11197上半年在知乎上看到有朋友咨询多标签学习是否有新的 Survey,我搜索了一下,发现现有的多标签 Survey 基本在 2014 年之前,主要有以下几篇:1. Tsoumakas 的《Multi-label classification: An overview》(2007)2. 周志华老师的《A review on multi-label learning algorithms》(2013)3. 一篇比较小众的,Gibaja 《Multi‐label learning: a review of the state of the art and ongoing research》2014时过境迁,从 2012 年起,AI 领域已经发生了翻天覆地的变化,Deep Learning 已经占据绝对的主导地位,我们面对的问题越来越复杂,CV 和 NLP 朝着各自的方向前行。模型越来越强,我们面对的任务的也越来越复杂,其中,我们越来越多地需要考虑高度结构化的输出空间。多标签学习,作为一个传统的机器学习任务,近年来也拥抱变化,有了新的研究趋势。因此,我们整理了近年多标签学习在各大会议的工作,希望能够为研究者们提供更具前瞻性的思考。关于单标签学习和多标签学习的区别,这里简单给个例子:传统的图片单标签分类考虑识别一张图片里的一个物体,例如 ImageNet、CIFAR10 等都是如此,但其实图片里往往不会只有一个物体,大家随手往自己的桌面拍一张照片,就会有多个物体,比如手机、电脑、笔、书籍等等。在这样的情况下,单标签学习的方法并不适用,因为输出的标签可能是结构化的、具有相关性的(比如键盘和鼠标经常同时出现),所以我们需要探索更强的多标签学习算法来提升学习性能。本文的主要内容有六大部分:Extreme Multi-Label ClassificationMulti-Label with Limited SupervisionDeep Multi-Label ClassificationOnline Multi-Label ClassificationStatistical Multi-Label LearningNew Applications接下去我们对这些部分进行简单的介绍,更多细节大家也可以进一步阅读 Survey 原文。另外,由于现在的论文迭代很快,我们无法完全 Cover 到每篇工作。我们的主旨是尽量保证收集的工作来自近年已发表和录用的、高质量的期刊或会议,保证对当前工作的整体趋势进行把握。如果读者有任何想法和意见的话,也欢迎私信进行交流。1. Extreme Multi-Label Learning (XML)在文本分类,推荐系统,Wikipedia,Amazon 关键词匹配 [1] 等等应用中,我们通常需要从非常巨大的标签空间中召回标签。比如,很多人会 po 自己的自拍到 FB、Ins 上,我们可能希望由此训练一个分类器,自动识别谁出现在了某张图片中。对 XML 来说,首要的问题就是标签空间、特征空间都可能非常巨大,例如 Manik Varma 大佬的主页中给出的一些数据集 [2],标签空间的维度甚至远高于特征维度。其次,由于如此巨大的标签空间,可能存在较多的 Missing Label(下文会进一步阐述)。最后,标签存在长尾分布 [3],绝大部分标签仅仅有少量样本关联。现有的 XML 方法大致可以分为三类,分别为:Embedding Methods、Tree-Based Methods、One-vs-All Methods。近年来,也有很多文献使用了深度学习技术解决 XML 问题,不过我们将会在 Section 4 再进行阐述。XML 的研究热潮大概从 2014 年开始,Varma 大佬搭建了 XML 的 Repository 后,已经有越来越多的研究者开始关注,多年来 XML 相关的文章理论和实验结果并重,值得更多的关注。2. Multi-Label with Limited Supervision相比于传统学习问题,对多标签数据的标注十分困难,更大的标签空间带来的是更高的标注成本。随着我们面对的问题越来越复杂,样本维度、数据量、标签维度都会影响标注的成本。因此,近年多标签的另一个趋势是开始关注如何在有限的监督下构建更好的学习模型。本文将这些相关的领域主要分为三类:MLC with Missing Labels(MLML):多标签问题中,标签很可能是缺失的。例如,对 XML 问题来说,标注者根本不可能遍历所有的标签,因此标注者通常只会给出一个子集,而不是给出所有的监督信息。文献中解决该问题的技术主要有基于图的方法、基于标签空间(或 Latent 标签空间)Low-Rank 的方法、基于概率图模型的方法。Semi-Supervised MLC:MLML 考虑的是标签维度的难度,但是我们知道从深度学习需要更多的数据,在样本量上,多标签学习有着和传统 AI 相同的困难。半监督 MLC 的研究开展较早,主要技术和 MLML 也相对接近,在这一节,我们首先简要回顾了近年半监督 MLC 的一些最新工作。但是,近年来,半监督 MLC 开始有了新的挑战,不少文章开始结合半监督 MLC 和 MLML 问题。毕竟对于多标签数据量来说,即使标注少量的 Full Supervised 数据,也是不可接受的。因此,许多文章开始研究一类弱监督多标签问题 [4](Weakly-Supervised MLC,狭义),也就是数据集中可能混杂 Full labeled/missing labels/unlabeled data。我们也在文中重点介绍了现有的一些 WS-MLC 的工作。Partial Multi-Label Learning (PML):PML 是近年来多标签最新的方向,它考虑的是一类 “难以标注的问题”。比如,在我们标注下方的图片(Zhang et. al. 2020[5])的时候,诸如 Tree、Lavender 这些标签相对是比较简单的。但是有些标签到底有没有,是比较难以确定的,对于某些标注者,可能出现:“这张图片看起来是在法国拍的,好像也可能是意大利?”。这种情况称之为 Ambiguous。究其原因,一是有些物体确实难以辨识,第二可能是标注者不够专业(这种多标签的情况,标注者不太熟悉一些事物也很正常)。但是,很多情况下,标注者是大概能够猜到正确标签的范围,比如这张风景图所在国家,很可能就是 France 或者 Italy 中的一个。我们在不确定的情况下,可以选择不标注、或者随机标注。但是不标注意味着我们丢失了所有信息,随机标注意味着可能带来噪声,对学习的影响更大。所以 PML 选择的是让标注者提供所有可能的标签,当然加了一个较强的假设:所有的标签都应该被包含在候选标签集中。在 Survey 中,我们将现有的 PML 方法划分为 Two-Stage Disambiguation 和 End-to-End 方法(我们 IJCAI 2019 的论文 DRAMA[6] 中,就使用了前者)。关于 PML 的更多探讨,我在之前的知乎回答里面也已经叙述过,大家也可以在我们的 Survey 中了解更多。Other Settings:前文说过,多标签学习的标签空间纷繁复杂,因此很多研究者提出了各种各样不同的学习问题,我们也简单摘要了一些较为前沿的方向:MLC with Noisy Labels (Noisy-MLC).MLC with Unseen Labels. (Streaming Labels/Zero-Shot/Few-Shot Labels)Multi-Label Active Learning (MLAL).MLC with Multiple Instances (MIML).3. Deep Learning for MLC相信这一部分是大家比较关心的内容,随着深度学习在越来越多的任务上展现了自己的统治力,多标签学习当然也不能放过这块香饽饽。不过,总体来说,多标签深度学习的模型还没有十分统一的框架,当前对 Deep MLC 的探索主要分为以下一些类别:Deep Embedding Methods:早期的 Embedding 方法通常使用线性投影,将 PCA、Compressed Sensing 等方法引入多标签学习问题。一个很自然的问题是,线性投影真的能够很好地挖掘标签之间的相关关系吗?同时,在 SLEEC[3]的工作中也发现某些数据集并不符合 Low-Rank 假设。因此,在 2017 年的工作 C2AE [7] 中,Yeh 等将 Auto-Encoder 引入了多标签学习中。由于其简单易懂的架构,很快有许多工作 Follow 了该方法,如 DBPC [8] 等。Deep Learning for Challenging MLC:深度神经网络强大的拟合能力使我们能够有效地处理更多更困难的工作。因此我们发现近年的趋势是在 CV、NLP 和 ML 几大 Community,基本都会有不同的关注点,引入 DNN 解决 MLC 的问题,并根据各自的问题发展出自己的一条线。1. XML 的应用:对这个方面的关注主要来自与数据挖掘和 NLP 领域,其中比较值得一提的是 Attention(如 AttentionXML[9])机制、Transformer-Based Models(如 X-Transformer[10])成为了最前沿的工作。2. 弱监督 MLC 的应用:这一部分和我们弱监督学习的部分相对交叉,特别的,CVPR 2019 的工作 [11] 探索了多种策略,在 Missing Labels 下训练卷积神经网络。3. DL for MLC with unseen labels:这一领域的发展令人兴奋,今年 ICML 的工作 DSLL[12]探索了流标签学习,也有许多工作 [13] 将 Zero-Shot Learning 的架构引入 MLC。Advanced Deep Learning for MLC:有几个方向的工作同样值得一提。首先是 CNN-RNN[14]架构的工作,近年有一个趋势是探索 Orderfree 的解码器 [15]。除此之外,爆火的图神经网络 GNN 同样被引入 MLC,ML-GCN[16] 也是备受关注。特别的,SSGRL[17]是我比较喜欢的一篇工作,结合了 Attention 机制和 GNN,motivation 比较强,效果也很不错。总结一下,现在的 Deep MLC 呈现不同领域关注点和解决的问题不同的趋势:从架构上看,基于 Embedding、CNN-RNN、CNN-GNN 的三种架构受到较多的关注。从任务上,在 XML、弱监督、零样本的问题上,DNN 大展拳脚。从技术上,Attention、Transformer、GNN 在 MLC 上的应用可能会越来越多。4. Online Multi-Label Learning面对当前这么复杂而众多的学习问题,传统的全数据学习的方式已经很难满足我们现实应用的需求了。因此,我们认为 Online Multi-Label Learning 可能是一个十分重要,也更艰巨的问题。当前 Off-line 的 MLC 模型一般假设所有数据都能够提前获得,然而在很多应用中,或者对大规模的数据,很难直接进行全量数据的使用。一个朴素的想法自然是使用 Online 模型,也就是训练数据序列地到达,并且仅出现一次。然而,面对这样的数据,如何有效地挖掘多标签相关性呢?本篇 Survey 介绍了一些已有的在线多标签学习的方法,如 OUC[18]、CS-DPP[19]等。在弱监督学习的部分,我们也回顾了近年一些在线弱监督多标签的文章[20](在线弱监督学习一直是一个很困难的问题)。Online MLC 的工作不多,但是已经受到了越来越多的关注,想要设计高效的学习算法并不简单,希望未来能够有更多研究者对这个问题进行探索。5. Statistical Multi-Label Learning近年,尽管深度学习更强势,但传统的机器学习理论也在稳步发展,然而,多标签学习的许多统计性质并没有得到很好的理解。近年 NIPS、ICML 的许多文章都有探索多标签的相关性质。一些值得一提的工作例如,缺失标签下的低秩分类器的泛化误差分析 [21]、多标签代理损失的相合性质[22]、稀疏多标签学习的 Oracle 性质[23] 等等。相信在未来,会有更多工作探索多标签学习的理论性质。6. New Applications讲了这么多方法论,但追溯其本源,这么多纷繁复杂的问题依然是由任务驱动的,正是有许许多多现实世界的应用,要求我们设计不同的模型来解决尺度更大、监督更弱、效果更强、速度更快、理论性质更强的 MLC 模型。因此,在文章的最后一部分,我们介绍了近年多标签领域一些最新的应用,如 Video Annotation、Green Computing and 5G Applications、User Profiling 等。在 CV 方向,一个趋势是大家开始探索多标签领域在视频中的应用 [24]。在 DM 领域,用户画像受到更多关注,在我们今年的工作 CMLP[25] 中(下图),就探索了对刷单用户进行多种刷单行为的分析。不过,在 NLP 领域,似乎大家还是主要以文本分类为主,XML-Repo[2]中的应用还有较多探索的空间,所以我们没有花额外的笔墨。总结写这篇文章的过程中,我跟着几位老师阅读了很多文章,各个领域和方向的工作都整理了不少,尽管无法 cover 到所有工作,但是我们尽可能地把握了一些较为重要的探索的方向,也在文中较为谨慎地给出了一些我们的思考和建议,希望能够给想要了解多标签学习领域的研究者一点引领和思考。参考Chang W C, Yu H F, Zhong K, et al. Taming Pretrained Transformers for Extreme Multi-label Text Classification[C]//Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020: 3163-3171.http://manikvarma.org/downloads/XC/XMLRepository.htmlBhatia K, Jain H, Kar P, et al. Sparse local embeddings for extreme multi-label classification[C]//Advances in neural information processing systems. 2015: 730-738.Chu H M, Yeh C K, Frank Wang Y C. Deep generative models for weakly-supervised multi-label classification[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 400-415.Zhang M L, Fang J P. Partial multi-label learning via credible label elicitation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020.Wang H, Liu W, Zhao Y, et al. Discriminative and Correlative Partial Multi-Label Learning[C]//IJCAI. 2019: 3691-3697.C. Yeh, W. Wu, W. Ko, and Y. F. Wang, “Learning deep latent space for multi-label classification,” in AAAI, 2017, pp. 2838–2844.X. Shen, W. Liu, Y. Luo, Y. Ong, and I. W. Tsang, “Deep discrete prototype multilabel learning,” in IJCAI, 2018, pp. 2675–2681.You R, Zhang Z, Wang Z, et al. Attentionxml: Label tree-based attention-aware deep model for high-performance extreme multi-label text classification[C]//Advances in Neural Information Processing Systems. 2019: 5820-5830.Chang W C, Yu H F, Zhong K, et al. Taming Pretrained Transformers for Extreme Multi-label Text Classification[C]//Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020: 3163-3171.Durand T, Mehrasa N, Mori G. Learning a deep convnet for multi-label classification with partial labels[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 647-657.Z. Wang, L. Liu, and D. Tao, “Deep streaming label learning,” in ICML, 2020.C. Lee, W. Fang, C. Yeh, and Y. F. Wang, “Multi-label zero-shot learning with structured knowledge graphs,” in CVPR, 2018, pp. 1576–1585.Wang J, Yang Y, Mao J, et al. Cnn-rnn: A unified framework for multi-label image classification[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2285-2294.Yazici V O, Gonzalez-Garcia A, Ramisa A, et al. Orderless Recurrent Models for Multi-label Classification[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 13440-13449.Chen Z M, Wei X S, Wang P, et al. Multi-label image recognition with graph convolutional networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5177-5186.T. Chen, M. Xu, X. Hui, H. Wu, and L. Lin, “Learning semanticspecific graph representation for multi-label image recognition,” in ICCV, 2019, pp. 522–531.M. J. Er, R. Venkatesan, and N. Wang, “An online universal classifier for binary, multi-class and multi-label classification,” in IEEE International Conference on Systems, Man, and Cybernetics, 2016, pp. 3701–3706.H. Chu, K. Huang, and H. Lin, “Dynamic principal projection for cost-sensitive online multi-label classification,” Machine Learning, vol. 108, no. 8-9, pp. 1193–1230, 2019.S. Boulbazine, G. Cabanes, B. Matei, and Y. Bennani, “Online semi-supervised growing neural gas for multi-label data classification,” in IJCNN, 2018, pp. 1–8.H. Yu, P. Jain, P. Kar, and I. S. Dhillon, “Large-scale multilabel learning with missing labels,” in Proceedings of the 31th International Conference on Machine Learning, ICML 2014, Beijing, China, 21-26 June 2014, 2014, pp. 593–601.W. Gao and Z. Zhou, “On the consistency of multi-label learning,” Artificial Intelligence, vol. 199-200, pp. 22–44, 2013.W. Liu and X. Shen, “Sparse extreme multi-label learning with oracle property,” in ICML, 2019, pp. 4032–4041.X. Zhang, H. Shi, C. Li, and P. Li, “Multi-instance multi-label action recognition and localization based on spatio-temporal pretrimming for untrimmed videos,” in AAAI. AAAI Press, 2020, pp. 12 886–12 893.H. Wang, Z. Li, J. Huang, P. Hui, W. Liu, T. Hu, and G. Chen, “Collaboration based multi-label propagation for fraud detection,” in IJCAI, 2020.
  • [技术干货] MindSpore首发:诺亚NeurIPS 2020多篇轻量化技术端侧模型
    本文来源:https://mp.weixin.qq.com/s/H1zg3ezZDdXQ-IQ7ki0Mtw国际人工智能顶级会议NeurIPS 2020(Conference on Neural Information Processing Systems, 神经信息处理系统大会)在12月6日至12日举行。本届会议无论是论文投稿数量还是接受率都创下了历史记录。随着卷积神经网络的广泛使用和在视觉类应用的巨大成功,如何克服计算和存储资源限制将卷积神经网络部署到智能手机和穿戴设备等端侧设备的模型轻量化技术越发重要。本文将对华为诺亚方舟实验室入选NeurIPS 2020的模型轻量化技术工作进行介绍,涵盖了剪枝、结构蒸馏以及量化等几个方向,并且放出对应MindSpore首发端侧模型获取链接↓https://www.mindspore.cn/resources/hubSCOP:Scientific Control for Reliable Neural Network Pruning  现有的剪枝方法基于各种假设条件近似估计神经网络节点对整体网络的重要性然后进行节点剪枝,往往存在结果不可靠而导致网络精度下降。   华为诺亚方舟实验室和北京大学联合提出了一种科学控制机制最小化剪枝节点对网络输出的影响。采用这种剪枝方法,能够实现ImageNet数据集上仅损失ResNet101网络0.01%的top-1准确率,模型参数量和计算量分别减少57.8%和60.2%,显著优于SOTA方法[1]。 原理对于剪枝方法,最重要的过程是评估卷积神经网络节点的重要性,在尽量不影响预训练网络性能的前提下删除不重要的网络节点。一种典型的节点重要性评估假设是权重Norms越小节点重要性低进而被剪掉[2][3]。考虑到输入数据,有的剪枝方法评估网络节点和最终损失函数之间的关系并用泰勒展开进行近似,保留与最终损失函数关系更密切的节点[4]。但是这些方法都会不可避免的引入大量潜在影响因子,最终影响剪枝过程,例如不同信道之间的相互依赖可能误导基于权重Norms的方法,因为一些不含重要信息的节点权重Norms很大,基于输入数据的方法的权重重要性对数据很敏感,剪枝结果不稳定。结果将本文提出的SCOP在公开数据集ImageNet上进行实验,对ResNet系列网络预训练模型进行剪枝验证了SCOP的有效性,实验结果如下表1.1。相比于现有SOTA剪枝方法GAL[5]和PFP[6],SCOP方法得到的剪枝后网络无论是网络精度还是模型大小即参数量减少比例都表现出很大的优势。使用SCOP算法在Oxford-IIIT Pet数据集对ResNet50网络剪枝的网络resnet-0.65x_v1.0_oxford_pets已基于MindSpore首发,可分别从MindSpore modelzoo 和Hub获取训练代码和模型。论文链接:https://proceedings.neurips.cc/paper/2020/file/7bcdf75ad237b8e02e301f4091fb6bc8-Paper.pdf代码链接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/resnet50_adv_pruning模型链接:https://www.mindspore.cn/resources/hub/details?noah-cvlab/gpu/1.0/resnet-0.65x_v1.0_oxford_pets ResNet通过引入残差连接,使得我们可以有效地训练几十到上百层的网络结构。但与此同时,也不可避免的引入了额外的计算消耗。比如当进行在线推理时,ResNet50中的残差占据了特征图整体内存消耗的大约40%,因为之前网络层的特征结果无法被释放,直到后续的残差计算结束。华为诺亚方舟实验室提出了一种新的CNN模型训练方法—基于残差蒸馏的联合训练框架Joint-training framework based on Residual Distillation(JointRD),希望在训练的时候引入残差连接保证训练效果,但在部署时去掉残差提升推理速度。通过在ImageNet/CIFAR10/CIFAR100等数据上的实验表明,利用JointRD训练得到的没有残差连接的plainCNN能够达到和ResNet相同精度的同时,性能提升1.4倍,内存消耗降低1.25倍。预训练plain-CNN在MIT 67和Caltech 101的fine-tuning结果也证明了特征的迁移泛化性。联合训练框架介绍 主要动机CNN模型当中引入残差连接的主要动机是避免梯度消失及降低优化难度,在最近的多篇研究中已经证明了残差连接在训练过程中对梯度的影响。因此我们认为没有残差的plain-CNN模型表现差是因为优化方法差而非模型本身的表达能力的限制。通过在mobile NPU上对比去掉残差的plain-CNN 50和保留残差的ResNet50内存消耗和时延,我们发现去掉残差后内存消耗降低19%,时延降低30%。基于以上结论,我们提出了一种可能的解决方案,利用ResNet为plain CNN的训练过程提供更好的梯度。因此我们提出了JointRD (Joint-training framework based on Residual Distillation),在这个框架中我们通过将plain CNN中的一个stage同时连接到它之后的stage和ResNet之后的stage达成上述训练目标。联合训练框架保证了残差连接使梯度更易反传的效果,但残差连接还有另外一个功能就是保护从前一层提取到的特征。为了达成相同的效果,我们采用Dirac delta初始化方法[8]来初始化student网络的权重。对于teacher网络的权重,我们使用预训练好的ResNet模型来进行初始化,并在整个训练过程中停止对这部分权重的更新。实验结果通过三种规模的网络plain-CNN18, plain-CNN34, plain-CNN50在CIFAR-10和CIFAR-100上的实验证明了联合训练方法JointRD有效性。如表2.1所示,JointRD可以将Plain-CNN训练达到和对应的ResNet相同的精度。同时我们还对比了单纯训练plain-CNN(见"Naive"列)以及只使用KD (MSE) loss和plain-CNN的交叉熵loss(见"KD (MSE) +Dirac"列)。在表2.2中,我们对比了利用JointRD训练得到的plain-CNN50,利用剪枝方法[9]剪枝40%后的ResNet50,以及ResNet50本身的精度、时延和内存消耗。可以看出在plain-CNN50在各个维度均优于直接剪枝(实验细节请参考论文原文[7])。目前由JointRD训练得到的plain-CNN18/ plain-CNN34/plain-CNN50 MindSpore端侧模型均已上线MindSpore Hub,感兴趣的可以下载体验。论文链接:https://proceedings.neurips.cc/paper/2020/file/657b96f0592803e25a4f07166fff289a-Paper.pdfPlain-CNN18模型链接:https://www.mindspore.cn/resources/hub/details?noah-cvlab/gpu/1.0/plain-CNN-resnet18_v1.0_cifar_10Plain-CNN34模型链接:https://www.mindspore.cn/resources/hub/details?noah-cvlab/gpu/1.0/plain-CNN-resnet34_v1.0_cifar10Plain-CNN50模型链接:https://www.mindspore.cn/resources/hub/details?noah-cvlab/gpu/1.0/plain-CNN-resnet50_v1.0_cifar10Searching for Low-Bit Weights in Quantized Neural Networks神经网络量化因为可以减少计算消耗和内存占用,在模型部署特别是端侧设备部署中被广泛应用,例如相较于传统的32-bit模型网络,二值化网络可以直接将模型压缩32倍,同时如果采用二值运算可以大大降低计算复杂度(如XNORNet 可以达到57倍加速[10])。 传统的量化方法通常不是直接可导的,而是通过近似梯度进行训练,这增加了量化网络的优化难度以及量化网络和原始网络间的精度差距。相较于全精度(32-bit 浮点数)权值,低比特权值只有很小的数值空间,如4-bit量化只有2^4=16种可能的量化取值。 因此,我们提出了一种全新的可导的量化方法Searching for Low-Bit Weights (SLB),将权值量化转变为可能量化取值的搜索。具体来讲就是将每个权值表示成所有可能取值空间的概率分布,在训练过程中优化这个概率分布,在推理过程中选取概率最大的值作为量化后的值。在图像分类和超分任务的多个benchmark上的实验证明,通过SLB方法量化后的网络性能超越已有SOTA结果。 方法介绍 实验结果表3.1和表3.2比较了我们的方法和其他SOTA量化方法BNN, XNORNet, DoReFa, DSQ, SQ, and LQ-Net在VGG-Small和ResNet20两个不同模型上的效果。如表中结果所示,W/A分别表示weight和activation的量化位宽,在不同量化位宽下,我们的方法都超越了其他SOTA方法。具体的实验细节请参考论文原文[12]。VGG-Small在CIFAR10上基于2-bit weight和2-bit activation的量化端侧模型目前已在MindSpore Hub开源首发,感兴趣的可以下载体验。论文链接:https://proceedings.neurips.cc/paper/2020/file/2a084e55c87b1ebcdaad1f62fdbbac8e-Paper.pdf模型链接:https://www.mindspore.cn/resources/hub/details?noah-cvlab/gpu/1.0/VGG-Small-low%20bit_cifar10参考文献[1] Yehui Tang,Yunhe Wang,Yixing Xu,Dacheng Tao, Chunjing Xu,Chao Xu,Chang Xu. SCOP:Scientific Control for Reliable Neural Network Pruning. In 34th Conference on Neural Information Processing Systems (NeurIPS 2020), 2020. [2] Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, and Hans Peter Graf. Pruning filters for efficient convnets. In 5th International Conference on Learning Representations, ICLR 2017, Toulon, France, April 24-26, 2017, Conference Track Proceedings. OpenReview.net, 2017. [3] Yang He, Guoliang Kang, Xuanyi Dong, Yanwei Fu, and Yi Yang. Soft filter pruning for accelerating deep convolutional neural networks. In Proceedings of the 27th International Joint Conference on Artificial Intelligence, pages 2234–2240, 2018. [4] Pavlo Molchanov, Arun Mallya, Stephen Tyree, Iuri Frosio, and Jan Kautz. Importance estimation for neural network pruning. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 11264–11272, 2019. [5] Shaohui Lin, Rongrong Ji, Chenqian Yan, Baochang Zhang, Liujuan Cao, Qixiang Ye, Feiyue Huang, and David Doermann. Towards optimal structured cnn pruning via generative adversarial learning. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2790–2799, 2019. [6] Lucas Liebenwein, Cenk Baykal, Harry Lang, Dan Feldman, and Daniela Rus. Provable filter pruning for efficient neural networks. In International Conference on Learning Representations, 2020. [7] Guilin Li, Junlei Zhang, Yunhe Wang, Chuanjian Liu, Matthias Tan, Yunfeng Lin, Wei Zhang, Jiashi Feng, Tong Zhang. Residual Distillation: Towards Portable Deep Neural Networks without Shortcuts. Accepted by NeurIPS 2020 [8] Sergey Zagoruyko and Nikos Komodakis. Diracnets: Training very deep neural networks without skip-connections. arXiv preprint arXiv:1706.00388, 2017. [9] Zhuang Liu, Jianguo Li, Zhiqiang Shen, Gao Huang, Shoumeng Yan, and Changshui Zhang. Learning efficient convolutional networks through network slimming. In Proceedings of the IEEE International Conference on Computer Vision, pages 2736–2744, 2017. [10] Mohammad Rastegari, Vicente Ordonez, Joseph Redmon, and Ali Farhadi. Xnor-net: Imagenet classification using binary convolutional neural networks. ECCV, 2016 [11] Matthieu Courbariaux, Yoshua Bengio, and Jean-Pierre David. Binaryconnect: training deep neural networks with binary weights during propagations. NeurIPS, 2015 [12] Zhaohui Yang, Yunhe Wang, Kai Han, Chunjing Xu, Chao Xu, Dacheng Tao, Chang Xu. Searching for Low-Bit Weights in Quantized Neural Networks. Accepted by NeurIPS 2020.
  • [前沿快讯] ImageNet「众包」成就伟大数据集,「昇腾众智」创新AI开发模式
    作为人工智能社区群策群力的早期形式,「众包」成就了 ImageNet 等一批成功的数据集,也加快了整个社区的发展进程。但要构建人工智能技术开发生态,仅靠「众包」是不够的。2009 年,由知名科学家李飞飞发起,来自全球 167 个国家近 5 万名工作者以众包的方式,通过三年合作努力,完成了日后触发人工智能领域发展浪潮的伟大数据集 ImageNet。数据规模巨大,标注错误极低,ImageNet 发布十余年以来,已成为淬炼图像处理算法不断升级的试金石。2010-2017 连续开展八年的 ImageNet 全球挑战赛,推动了物体识别平均准确率等 AI 领域关键指标不断提升,更让深度学习算法自 2012 年在此舞台之上大放异彩,进一步引发了人工智能领域的革命。 众所周知,ImageNet 包含 1500 万张带标注的图像,工程十分浩大。帮助李飞飞完成这一壮举的,是当时刚刚兴起的社区概念——众包。可以说,众包一直在人工智能领域扮演着重要角色,一定程度上加快了这一领域的历史进程。但与此同时,社区并没有止步于众包,而是向前又走了一步。昇腾计算产业的成员企业华为,提出了一种新的模式——众智,汇聚企业、高校、科研院所等组织的力量,做硬核开发。2021 年 3 月 18 日,昇腾众智计划正式上线。众智类似于众包,但又不同于众包。众包是繁复的人力投入,而「昇腾众智」意在通过「硬件开放、软件开源、使能伙伴」的方式,激发开发者的智慧,在网络模型开发、算子开发以及行业参考设计开发等几类项目上进行创新。 此外,「昇腾众智」计划还关注后续的人才培养以及开放平台、社区的建设和发展,这就改变了传统众包「交付即终点」的模式,对开发者的个人成长甚至整个社区的发展都有着更加深远的意义。为何众智?如何众智?3 月 13 日,国家发布了「十四五」规划纲要。纲要指出,「十四五」期间,我国将通过一批具有前瞻性、战略性的国家重大科技项目,带动产业界逐步突破前沿基础理论和算法,其中就包括深度学习框架等开源算法平台的构建以及学习推理决策、图像图形、语音视频、自然语言识别处理等领域的创新与迭代应用。由此可见,加快国内人工智能的发展在国家战略层面正变得越来越重要。过去几年,昇腾计算产业已构建起完整的全栈 AI 软硬件平台,包括基于昇腾架构的系列硬件,异构计算架构 CANN、深度学习计算框架 MindSpore 等软件平台。通过上述平台构建的AI基础设施,涵盖纲要中提到的图像、语音、自然语言处理等多项技术,可以加快医疗、能源、交通、制造等多个行业的智能化升级。AI 模型和基础软件都是高度依赖生态建设的项目,无法依靠单一力量来完成,需要汇聚开发者,共同打造昇腾计算产业生态。在过去的 2020 年,昇腾社区从学、练、用、考、赛等维度为开发者提供了完善的软件资源、专业培训、技术支持、生态政策和产品方案,上线了 50 多个开发者系列课程、1008 本学习资料、100 + 工具与样例、100 + 模型,MindSpore 开源开发者已突破 10 万 + 人。虽然已经取得了一些成绩,但要想加快这一进程,昇腾需要整个社区的力量来共同托举,这也是「昇腾众智」计划诞生的初衷。 那么如何「众智」呢? 具体而言,「昇腾众智」主要涉及的是异构计算架构 CANN 算子开发、主流深度学习网络模型(基于 MindSpore、PyTorch 等)开发和行业参考设计开发等。 这些需求都以项目的形式发布在「昇腾众智」的官方页面上,每两周刷新一次。近期公布的 140 个项目需求包含 MindSpore 数据增强算子、MindSpore 模型等,涵盖文本、图像、视频、自然语言、目标检测等多个领域。打开「项目任务书」,我们可以看到项目的具体细节,包括任务描述、知识背景要求、任务要求、任务清单、开发指导等内容。对该项目感兴趣且符合要求的开发者可以填写与自身情况相对应的申请表。和「众包」、「外包」不同的是,在「昇腾众智」计划中,参与任务的开发者和昇腾之间并不是「冷冰冰的业务关系」,而是一种并肩作战的合作关系。如果你在开发中遇到问题,你可以随时向昇腾的专家寻求帮助。这种帮助包括但不限于硬件、软件、技术指导和答疑等。 群策群力,多方受益 前面说到,在「昇腾众智」计划中,开发者与昇腾之间是一种并肩作战的合作关系,合作的目的是创建一个强大的生态和社区。这就意味着,参与「昇腾众智」的开发者甚至整个社区都将从中受益。 开发者包含高校师生、科研机构研究者、企业开发团队等多个群体。对于这些群体来说,他们收获的不仅仅是项目交付后的奖金激励和项目开发期间的算力资源支持,还有昇腾颁发的荣誉证书(优秀开发团队和个人将受邀参加华为旗舰大会)以及华为招募引进人才的优先权等。 其他的潜在收益还包括项目经验积累、创新研究项目合作以及行业影响力的提升等。 以高校为例,高校是一个偏重学术的环境,「昇腾众智」将更多的真实项目带进校园,使得学生有更多的机会接触真实的业务场景,得到业内专家的指导,从而加深对于 AI 的理解,沉淀更多的实践经验。 科研院所和企业有所不同。科研院所汇聚了一大批优秀研究者,但在算力、场景扩展、科研创新等方面也需要一些外部支持,「昇腾众智」恰好可以在这些方面提供支持,满足科研机构在多个方面的科研需求。企业所在的行业往往需要配套的行业参考设计,在昇腾的技术支持下,企业可以更快地开发自己行业所需的参考设计,提升自身的行业影响力。 除了这些,「昇腾众智」对于整个人工智能社区也有很重要的意义。一方面,这些项目开发完成后将在昇腾社区开放,供所有开发者下载使用,免去开发者重新写代码、训练模型的麻烦,加速社区的发展进程。另一方面,昇腾社区、MindSpore 社区与其他开源开放社区可以借助这一项目建立紧密的联系,为高校、科研机构、企业和开源社区的成员搭建一个广阔的交流、合作平台,共同加速 AI 社区的发展。 以上几点在本月初启动的「OpenI 启智 & MindSpore 集结号」活动中已经有所体现。这一活动由 OpenI 启智社区和 MindSpore 社区共同举办,旨在集中高校开发者合作开发 MindSpore 高性能模型(模型众智)。中国工程院院士、鹏城实验室主任、北京大学博雅讲席教授高文在「集结号」活动中讲话。其实,早在「集结号」活动之前,「昇腾众智」就已经开始了一些小规模的探索,这些探索为计划的正式上线蓄积了力量。自去年启动昇腾众智计划以来,已有浙江大学、上海交通大学、西安交通大学、中国科学院等超过 40 所高校和科研机构参与其中(排名不分先后)。他们已经完成 484 个 PyTorch 算子分析、368 个算子开发、15 个 MindSpore 模型交付和 2 个 PyTorch 模型交付,行业参考设计的众智活动也已经完成试点。十几年前,ImageNet 让我们看到了群体力量的伟大;如今,昇腾不止要利用这股力量,更想要挖掘其中的「智慧」,创造一种新的 AI 开发模式。 目前,「昇腾众智」的初步目标是通过线上、线下两种方式** 200 + 团队、2000 + 开发者。
  • [前沿快讯] ImageNet「众包」成就伟大数据集,「昇腾众智」创新AI开发模式
    作为人工智能社区群策群力的早期形式,「众包」成就了 ImageNet 等一批成功的数据集,也加快了整个社区的发展进程。但要构建人工智能技术开发生态,仅靠「众包」是不够的。2009 年,由知名科学家李飞飞发起,来自全球 167 个国家近 5 万名工作者以众包的方式,通过三年合作努力,完成了日后触发人工智能领域发展浪潮的伟大数据集 ImageNet。数据规模巨大,标注错误极低,ImageNet 发布十余年以来,已成为淬炼图像处理算法不断升级的试金石。2010-2017 连续开展八年的 ImageNet 全球挑战赛,推动了物体识别平均准确率等 AI 领域关键指标不断提升,更让深度学习算法自 2012 年在此舞台之上大放异彩,进一步引发了人工智能领域的革命。 众所周知,ImageNet 包含 1500 万张带标注的图像,工程十分浩大。帮助李飞飞完成这一壮举的,是当时刚刚兴起的社区概念——众包。可以说,众包一直在人工智能领域扮演着重要角色,一定程度上加快了这一领域的历史进程。但与此同时,社区并没有止步于众包,而是向前又走了一步。昇腾计算产业的成员企业华为,提出了一种新的模式——众智,汇聚企业、高校、科研院所等组织的力量,做硬核开发。2021 年 3 月 18 日,昇腾众智计划正式上线。众智类似于众包,但又不同于众包。众包是繁复的人力投入,而「昇腾众智」意在通过「硬件开放、软件开源、使能伙伴」的方式,激发开发者的智慧,在网络模型开发、算子开发以及行业参考设计开发等几类项目上进行创新。 此外,「昇腾众智」计划还关注后续的人才培养以及开放平台、社区的建设和发展,这就改变了传统众包「交付即终点」的模式,对开发者的个人成长甚至整个社区的发展都有着更加深远的意义。为何众智?如何众智?3 月 13 日,国家发布了「十四五」规划纲要。纲要指出,「十四五」期间,我国将通过一批具有前瞻性、战略性的国家重大科技项目,带动产业界逐步突破前沿基础理论和算法,其中就包括深度学习框架等开源算法平台的构建以及学习推理决策、图像图形、语音视频、自然语言识别处理等领域的创新与迭代应用。由此可见,加快国内人工智能的发展在国家战略层面正变得越来越重要。过去几年,昇腾计算产业已构建起完整的全栈 AI 软硬件平台,包括基于昇腾架构的系列硬件,异构计算架构 CANN、深度学习计算框架 MindSpore 等软件平台。通过上述平台构建的AI基础设施,涵盖纲要中提到的图像、语音、自然语言处理等多项技术,可以加快医疗、能源、交通、制造等多个行业的智能化升级。AI 模型和基础软件都是高度依赖生态建设的项目,无法依靠单一力量来完成,需要汇聚开发者,共同打造昇腾计算产业生态。在过去的 2020 年,昇腾社区从学、练、用、考、赛等维度为开发者提供了完善的软件资源、专业培训、技术支持、生态政策和产品方案,上线了 50 多个开发者系列课程、1008 本学习资料、100 + 工具与样例、100 + 模型,MindSpore 开源开发者已突破 10 万 + 人。虽然已经取得了一些成绩,但要想加快这一进程,昇腾需要整个社区的力量来共同托举,这也是「昇腾众智」计划诞生的初衷。 那么如何「众智」呢? 具体而言,「昇腾众智」主要涉及的是异构计算架构 CANN 算子开发、主流深度学习网络模型(基于 MindSpore、PyTorch 等)开发和行业参考设计开发等。 这些需求都以项目的形式发布在「昇腾众智」的官方页面上,每两周刷新一次。近期公布的 140 个项目需求包含 MindSpore 数据增强算子、MindSpore 模型等,涵盖文本、图像、视频、自然语言、目标检测等多个领域。打开「项目任务书」,我们可以看到项目的具体细节,包括任务描述、知识背景要求、任务要求、任务清单、开发指导等内容。对该项目感兴趣且符合要求的开发者可以填写与自身情况相对应的申请表。和「众包」、「外包」不同的是,在「昇腾众智」计划中,参与任务的开发者和昇腾之间并不是「冷冰冰的业务关系」,而是一种并肩作战的合作关系。如果你在开发中遇到问题,你可以随时向昇腾的专家寻求帮助。这种帮助包括但不限于硬件、软件、技术指导和答疑等。 群策群力,多方受益 前面说到,在「昇腾众智」计划中,开发者与昇腾之间是一种并肩作战的合作关系,合作的目的是创建一个强大的生态和社区。这就意味着,参与「昇腾众智」的开发者甚至整个社区都将从中受益。 开发者包含高校师生、科研机构研究者、企业开发团队等多个群体。对于这些群体来说,他们收获的不仅仅是项目交付后的奖金激励和项目开发期间的算力资源支持,还有昇腾颁发的荣誉证书(优秀开发团队和个人将受邀参加华为旗舰大会)以及华为招募引进人才的优先权等。 其他的潜在收益还包括项目经验积累、创新研究项目合作以及行业影响力的提升等。 以高校为例,高校是一个偏重学术的环境,「昇腾众智」将更多的真实项目带进校园,使得学生有更多的机会接触真实的业务场景,得到业内专家的指导,从而加深对于 AI 的理解,沉淀更多的实践经验。 科研院所和企业有所不同。科研院所汇聚了一大批优秀研究者,但在算力、场景扩展、科研创新等方面也需要一些外部支持,「昇腾众智」恰好可以在这些方面提供支持,满足科研机构在多个方面的科研需求。企业所在的行业往往需要配套的行业参考设计,在昇腾的技术支持下,企业可以更快地开发自己行业所需的参考设计,提升自身的行业影响力。 除了这些,「昇腾众智」对于整个人工智能社区也有很重要的意义。一方面,这些项目开发完成后将在昇腾社区开放,供所有开发者下载使用,免去开发者重新写代码、训练模型的麻烦,加速社区的发展进程。另一方面,昇腾社区、MindSpore 社区与其他开源开放社区可以借助这一项目建立紧密的联系,为高校、科研机构、企业和开源社区的成员搭建一个广阔的交流、合作平台,共同加速 AI 社区的发展。 以上几点在本月初启动的「OpenI 启智 & MindSpore 集结号」活动中已经有所体现。这一活动由 OpenI 启智社区和 MindSpore 社区共同举办,旨在集中高校开发者合作开发 MindSpore 高性能模型(模型众智)。中国工程院院士、鹏城实验室主任、北京大学博雅讲席教授高文在「集结号」活动中讲话。其实,早在「集结号」活动之前,「昇腾众智」就已经开始了一些小规模的探索,这些探索为计划的正式上线蓄积了力量。自去年启动昇腾众智计划以来,已有浙江大学、上海交通大学、西安交通大学、中国科学院等超过 40 所高校和科研机构参与其中(排名不分先后)。他们已经完成 484 个 PyTorch 算子分析、368 个算子开发、15 个 MindSpore 模型交付和 2 个 PyTorch 模型交付,行业参考设计的众智活动也已经完成试点。十几年前,ImageNet 让我们看到了群体力量的伟大;如今,昇腾不止要利用这股力量,更想要挖掘其中的「智慧」,创造一种新的 AI 开发模式。 目前,「昇腾众智」的初步目标是通过线上、线下两种方式** 200 + 团队、2000 + 开发者。
  • [精彩回顾] 人工智能十年回顾:CNN、AlphaGo、GAN……它们曾这样改变世界
    盘点 AI 十年来取得的重要突破。过去十年间,人工智能技术突飞猛进,最疯狂的科幻小说场景现在已经成为我们生活中不可或缺的一部分。十年前,人们在谈论 AI 的理论化和实验,但这些年来,AI 变得更加切实了,也变成了主流。无论是国际标准课程、平台、库、框架、硬件,一切都顺理成章。就算说这十年里取得的成绩奠定了未来的基础,也不为过。这篇文章将盘点 AI 十年来取得的重要突破。卷积2012 年是深度学习历史上重要的一年。那一年,卷积神经网络(CNN)在著名的 ImageNet 挑战赛中大放异彩。由 Alex Krizhevsky 等人设计的卷积神经网络「Alexnet」以远超第二名的成绩夺冠,在 ImageNet 数据集上的视觉识别错误率为 15.3%,降低了一半。该神经网络对猫的检测准确度达到了 74.8%,在 YouTube 视频中检测人脸的准确率为 81.7%。现在,手机和商场中的人脸识别应用都应该归功于 2012 年的这项工作,识别准确率的提升使研究者能够进行医学成像模型的部署,这些模型具备高置信度。与 AI 对话Vaswani 等人 2017 年发表的《Attention Is All You Need》带来了级联效应,使得机器能够以前所未有的方式去理解语言。得益于 Transformer 架构,AI 现在能够撰写假的新闻、推文,甚至可能引起政治动荡。继 Transformer 之后,谷歌又推出了 BERT 模型,将其用于关键字预测和 SEO 排名等。BERT 如今已经变成了自然语言处理领域的实际标准,诸如 Microsoft 和 NVIDIA 之类的公司开始堆积更多参数来追赶该模型。NVIDIA 的 Megatron 具有 80 亿个参数,而 Microsoft 的 Turing NLG 模型具有 170 亿个参数。OpenAI 的 GPT 模型后来居上,1750 亿参数的 GPT-3 目前是历史记录的保持者。GPT-3 也是 Transformer 的扩展,是目前最大的模型,它可以编码、写散文、生成商业创意,只有人类想不到,没有它做不到。将人类一军AI 早已在国际象棋中击败了人类。而更加复杂的人类游戏,如 Jeopardy! 游戏、围棋、德州扑克等,也没有挡住算法的脚步。人工智能近几年来最广为人知的事件就是 AlphaGo 在最复杂棋类游戏——「围棋」上击败了人类顶级选手。与此同时,在这个十年中,IBM 的 Watson 也在 Jeopardy! 决赛中击败了两位人类,最终 Watson 获得了 77147 美元奖金,而两位人类分别获得了 24000 和 21600 美元。Facebook 和卡耐基梅隆大学共同开发的德扑 AI Pluribus 战胜了五名专家级人类玩家,实现了前辈 Libratus(冷扑大师)未能完成的任务,该研究还登上了 2019 年的《科学》杂志。2020 年 12 月,DeepMind 提出的 MuZero 让一种人工智能模型掌握多种游戏,包括将棋、国际象棋和围棋。每一个生物体的行为都可以在其蛋白质中寻踪溯源。蛋白质承载着秘密,**蛋白质或许有助于击败新冠大流行。但蛋白质结构非常复杂,需要不断地运行模拟。DeepMind 尝试解决这一难题,其开发的深度学习算法「Alphafold」**了出现五十年之久的蛋白质分子折叠问题。计算机视觉被证明可以帮助诊断,而解决蛋白质折叠问题甚至能够帮助研发人员开发新药。AI:是艺术家,也是骗子去年,在一则视频中,比利时首相谈论着解决经济和气候危机的紧急需求,后来人们发现这其实是 Deepfake 视频。在机器学习和 AI 对比利时首相声音和表达方式的操纵下,这则假视频让首相发表了一场关于全球变暖影响的演讲。这些伪造内容的背后是精心设计的算法——生成对抗网络(GAN)。该算法在 2014 年提出,并得到广泛应用,甚至已经侵入了人类工作的最后一道壁垒:创作。这种网络可以生成从未存在的人脸、互换人脸,让一国总统胡言乱语。GAN 生成的一幅画甚至在佳士得拍卖会上以破纪录的价格——40 万美元成交了。GAN 的另一面是被用于恶意目的,以致于像 Adobe 这种公司不得不研究新技术来鉴别伪造内容。GAN 在下一个十年里仍将是被广泛讨论的对象。秘密武器——硅神经网络的概念诞生了半个世纪,今天流行的反向传播方法也出现三十年了。但是,我们仍然缺少能够运行这些计算的硬件。过去十年,我们见证了十多家公司研究专门的机器学习芯片。这些年来,芯片技术得到了极**展,我们可以在手掌大小的设备上执行百万次运算。这些芯片被用到数据中心,用户可以观看自己喜欢的 Netflix 电影、使用智能手机等。接下来,专为边缘设备定制的 AI 芯片蕴含着价值数十亿美元的商机。苹果等公司已经开发了定制化机器学习芯片(如 A14 Bionic)来提供智能服务。即使是依赖英伟达和英特尔的 AWS,也正在慢慢进入芯片行业。随着芯片变得越来越小,这一趋势只会更加明显:例如使用英伟达 Jetson AGX Xavier 开发者套件,你可以轻松创建和部署端到端 AI 机器人应用,用于制造、零售、智能城市等等。谷歌的 Coral 工具包可将机器学习带到边缘设备上。安全、实时输出是目前的主题。开源文化逐渐成熟2015 年,TensorFlow 开源。一年后,Facebook AI 又开源了基于 Python 的深度学习框架 PyTorch。今天,TensorFlow 和 PyTorch 已经成为使用最广泛的框架。通过不断的版本更新,谷歌和 Facebook 为机器学习社区带来了极大便利。自定义库、软件包、框架和工具的爆发式增长,使得更多人进入了 AI 领域,也为 AI 研究带来了更多人才。开源是近几年的一个主要特性。开源工具和越来越多的可用资源(如 arxiv 或 Coursera)促进了 AI 变革。另一个催化剂是流行的竞赛平台——Kaggle。Kaggle 和 GitHub 滋养了一批高质量 AI 开发者。更多学习,更少规则Schmidhuber 教授上世纪 90 年代初提出的元学习概念,最近才逐渐得到关注。元学习指在有限训练示例的基础上,使机器学习模型学习新技能并适应不断变化的环境。通过操纵超参数对特定任务优化机器学习模型需要大量用户输入的话,过程会较为繁琐,而使用元学习后,这一负担将得到极大缓解,因为元学习将优化部分自动化了。自动优化带来了一个新的行业 MLaaS(机器学习即服务)。未来方向关于一些专家预测以下领域或许将发挥主要作用:可复现性差分隐私几何深度学习神经形态计算强化学习尽管 AI 已经进入许多我们未曾想象的领域,但它仍需应用到更流行的应用中,如自动驾驶汽车。然而,挑战更多地在于数学层面:目前已有能够做出准确决策的算法,也有能够处理这些算法的处理器,但何时能够部署到应用上仍未可知。不管是医疗还是自动驾驶汽车,AI 仍需要继续进展,而这只有在透明性和可复现性得到建立时才会发生。原文链接:https://**yticsindiamag.com/ai-top-decade-2010-2020-breakthroughs/本文来源:https://www.jiqizhixin.com/articles/2021-01-11-3作者:RAM SAGAR编译:蛋酱 魔王
  • [前沿分享] 机器学习中的损失Loss
    LossAndOptimizer已同步至CSDN: kewei chen_irrationality_CSDN博客 机器学习中的损失_kewei chen-CSDN博客由于word导入的公式不能看到,我已将本文内容上传附件pdf,供大家下载阅读。在Resnet实现CIFAR-10图像分类 中,我们需要定义损失和优化器。损失函数是深度学习的训练目标,也叫目标函数,可以理解为神经网络的输出(Logits)和标签(Labels)之间的距离,是一个标量数据。常见的损失函数包括均方误差、L2损失、Hinge损失、交叉熵等等。图像分类应用通常采用交叉熵损失(CrossEntropy)。优化器用于神经网络求解(训练)。由于神经网络参数规模庞大,无法直接求解,因而深度学习中采用随机梯度下降算法(SGD)及其改进算法进行求解。MindSpore封装了常见的优化器,如SGD、ADAM、Momemtum等等。本例采用Momentum优化器,通常需要设定两个参数,动量(moment)和权重衰减项(weight decay)。通过调用MindSpore中的API:Momentum和SoftmaxCrossEntropyWithLogits,设置损失函数和优化器的参数。Loss均方误差均方误差单独扽概念是很简单的,这里只做介绍,更深一步的内容会在后面列出来。1. SSE(和方差、误差平方和):The sum of squares due to error2. MSE(均方差、方差):Mean squared error3. RMSE(均方根、标准差):Root mean squared error数理统计中均方误差是指参数估计值与参数真值之差平方的期望值,记为MSE。MSE是衡量“平均误差”的一种较方便的方法,MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。首先先回顾复习三个概念:1)方差:方差是在概率论和统计方差衡量随机变量或一组数据的离散程度的度量方式,方差越大,离散度越大。求解方式为,各随机变量与平均值差值的平方和的平均数(先求差,再平方,再平均)平均数:方差公式:也可以通过以下的方式进行求解方差 2)标准差:标准差就是方差的算术平方根,它反映组内个体间的离散程度。因此它的过程是与平均值之间进行差值计算。标准差公式:3)样本方差 这里之所以列出样本方差的样子,是因为样本方差更多被采用,因为他是无偏估计的,只做了解。感兴趣的可以到网上搜下与方差的“无偏”证明。1.SSE(和方差)在统计学里,该参数计算的是拟合数据很原始数据对应点的误差的平方和,计算公式为:其中 是真实数据,是拟合的数据, 从这里可以看出SSE越接近于0,说明模型选择和拟合更好,数据预测也越成功。接下来的MSE和RMSE因为和SSE是同出一宗,所以效果一样。2.MSE(均方方差)该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是 ,和 没有太大的区别,计算公式为, 其中 n 为样本的个数。3.MSE(均方根)该统计参数,也叫回归系统的拟合标准差,是MSE的平方根,计算公式为 以上三个统计参数,虽然略有细微的差别,但是代表的都是数据拟合的好坏,只是标准不一样。L2损失一、易混概念对于一些常见的距离先做一个简单的说明1.欧式距离假设X和Y都是一个n维的向量,即 则欧氏距离: 2.L2范数假设X是n维的特征 L2范数: 3 .闵可夫斯基距离这里的p值是一个变量,当p=2的时候就得到了欧氏距离。4 .曼哈顿距离来源于美国纽约市曼哈顿区,因为曼哈顿是方方正正的。二、损失函数L1和L2都可以做损失函数使用。1. L2损失函数L2范数损失函数,也被称为最小平方误差(LSE)。它是把目标值 与估计值 的差值的平方和最小化。一般回归问题会使用此损失,离群点对次损失影响较大。2. L1损失函数也被称为最小绝对值偏差(LAD),绝对值损失函数(LAE)。总的说来,它是把目标值 与估计值 的绝对差值的总和最小化。3. 二者对比L1损失函数相比于L2损失函数的鲁棒性更好。因为L2范数将误差平方化(如果误差大于1,则误差会放大很多),模型的误差会比L1范数大的多,因此模型会对这种类型的样本更加敏感,这就需要调整模型来最小化误差。但是很大可能这种类型的样本是一个异常值,模型就需要调整以适应这种异常值,那么就导致训练模型的方向偏离目标了。三、正则化1. 正则化为什么可以避免过拟合?正规化是防止过拟合的一种重要技巧。正则化通过降低模型的复杂性, 缓解过拟合。过拟合发生的情况,拟合函数的系数往往非常大,为什么?如下图所示,就是过拟合的情况,拟合函数考虑到了每一个样本点,最终形成的拟合函数波动很大,也就是在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的系数非常大,就是模型中的w会很大。2. L1正则L1正则常被用来进行特征选择,主要原因在于L1正则化会使得较多的参数为0,从而产生稀疏解,我们可以将0对应的特征遗弃,进而用来选择特征。一定程度上L1正则也可以防止模型过拟合。假设 是未加正则项的损失, 是一个超参,控制正则化项的大小。对应的损失函数: 3. L2正则主要用来防止模型过拟合,直观上理解就是L2正则化是对于大数值的权重向量进行严厉惩罚。鼓励参数是较小值,如果 小于1,那么 会更小。对应的损失函数: 4. 为什么L1会产生稀疏解稀疏性:很多参数值为0。1)梯度的方式:对其中的一个参数 计算梯度,其他参数同理,是步进, 是符号函数>0,=1;<0,=-1。L1的梯度:$L=L(W)+\lambda \sum_{i=1}^n |w_i|\\ \frac{\partial L}{\partial w_i}=\frac{\partial L(W)}{\partial w_i}+\lambda sign(w_i)\\ w_i=w_i-\eta \frac{\partial L(W)}{\partial w_i}-\eta \lambda sign(w_i)$L2的梯度:$L=L(W)+\lambda \sum_{i=1}^n w_i^2\\ \frac{\partial L}{\partial w_i}=\frac{\partial L(W)}{\partial w_i}+2\lambda w_i\\ w_i=w_i-\eta \frac{\partial L(W)}{\partial w_i}-\eta 2\lambda w_i$当 小于1的时候,L2的惩罚项会越来越小,而L1还是会非常大,所以L1会使参数为0,而L2很难。2)图形的方式:损失函数L与参数 的关系图,绿点是最优点。如果加上L2正则,损失函数L为 ,对应的函数是蓝线,最优点是黄点。如果是加上L1损失,那么损失函数L是 ,对应的函数是粉线,最优点是红点,参数 变为0。两种正则化,能不能将最优的参数变为0,取决于最原始的损失函数在0点处的导数,如果原始损失函数在0点处的导数 不为0,则加上L2正则化项 之后,导数依然不为0,说明在0这点不是极值点,最优值不在w=0处。而施加 正则项时,导数在 这点不可导。不可导点是否是极值点,就是看不可导点左右的单调性。单调性可以通过这个点左、右两侧的导数符号判断,导数符号相同则不是极值点,左侧导数正,右侧导数负,则是极大值,左侧导数负,右侧导数正,极小值。根据极值点判断原则, 左侧导数 ,只要正则项的系数 大于,那么左侧导数小于0,右侧导数,所以就会变成一个极小值点,所以L1经常会把参数变为0,产生稀疏解。参考资料:L1正则化引起稀疏解的多种解释 - 知乎 (zhihu.com) Hinge损失声明:1. 参考自维基百科 2. 后面可能会更新Hinge Loss在机器学习中,hinge loss作为一个损失函数(loss function),通常被用于最大间隔算法(maximum-margin),而最大间隔算法又是SVM(支持向量机support vector machines)用到的重要算法(注意:SVM的学习算法有两种解释:1. 间隔最大化与拉格朗日对偶;2. Hinge Loss)。Hinge loss专用于二分类问题,标签值 ,预测值。该二分类问题的目标函数的要求如下:当 大于等于+1或者小于等于-1时,都是分类器确定的分类结果,此时的损失函数loss为0;而当预测值时,分类器对分类结果不确定,loss不为0。显然,当时,loss达到最大值。如果你想到了一个可以定义这种loss的函数,那说明有成为数学家的潜质。想不到的话就乖乖的往下看:hinge loss出场。对于输出,当前 的损失为: 上式是Hinge loss在二分类问题的的变体,可以看做双向Hinge loss。难以理解的话,可以先看单方向的hinge loss。以y=+1,为例。当 时,loss为0,否则loss线性增大。函数图像如下所示: 参考资料: 机器学习基础(四十二)—— 常用损失函数的设计(multiclass SVM loss & hinge loss) Hinge loss在SVM中的应用SVM在简单情况下(线性可分情况下)使用的就是一个最大间隔算法。几何意义如下图所示(实心的数据点就是该类别的支持向量),最大化分离超平面到两个类别的支持向量之间的距离 。 参考资料: 知乎-支持向量机(SVM)是什么意思? 线性可分SVM的预测值 ,其中和都是分类器通过样本学习到的参数。正如前面所说, 。如果分离超平面在如上图所示的位置(这是最大分割情况)并且支持向量与分割平面之间的距离=1,每个的样本其,每个的样本其 ,每个点的Hinge loss为0,整体loss作为平均值,也等于0。 如果分割超平面误分类,则Hinge loss大于0。Hinge loss驱动分割超平面作出调整。 如果分割超平面距离支持向量的距离小于1,则Hinge loss大于0,且就算分离超平面满足最大间隔,Hinge loss仍大于0拓展再强调一下,使用Hinge loss的分类器的。 |ŷ | | y ^ | |\hat y|越大,说明样本点离分割超平面越远,即该样本点很容易被分类。但是,我们在选择合适的损失函数进行优化时,没必要关注那些离超平面很远的样本。为此,我们可以通过对距分离超平面的距离选择一个阈值,来过滤这些离超平面很远的样本。这就是Hinge loss的精髓,,式中的1就是我们选择的阈值,这个可以作为一个超参数。通过一个max(0, )函数,忽略值过高的情况。SVM这个思想可以拓展到SVM的多分类问题。SVM的多分类有两种损失函数: 其中,表示对于某一标签值,分类器错误预测的最大值,表示正确的分类器预测值,表示分类阈值。注意:即使是分类器,也是先产生预测值,再根据预测值和分类阈值进行分类的。 其中,表示错误的分类器预测值, 表示正确的分类器预测值,1表示分类阈值。如下图SVM的预测结果所示: 参考资料:CS231n 2016 通关 第三章-SVM与Softmax 运用公式1:的Hinge loss 的Hinge loss的Hinge loss 则运用公式2:也差不多,最后的结果是2.9, 0, 10.9,然后再求平均。PS: 公式2在实际中应用更多。SSVMHinge loss的变体也被应用于Structured SVMs中。这里不太懂…优化Hinge loss是一个凸函数(convex function),所以适用所有的机器学习凸优化方法。虽然Hinge loss函数不可微,但我们可以求它的分段梯度: 当然,Hinge loss的梯度在 点处未定义。平滑为了解决Hinge loss的优化问题,现在有两种平滑(smoothed)策略: 交叉熵参考资料:损失函数:交叉熵详解 - 知乎 (zhihu.com) 将交叉熵引入计算语言学消岐领域,采用语句的真实语义作为交叉熵的训练集的先验信息 ,将机器翻译的语义作为测试集后验信息。计算两者的交叉熵,并以交叉熵指导对歧义的辨识和消除。实例表明,该方法简洁有效.易于计算机自适应实现。交叉熵不失为计算语言学消岐的一种较为有效的工具。在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。从这个定义中,我们很难理解交叉熵的定义。下面举个例子来描述一下:假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:H(p)=但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:H(p,q)=此时就将H(p,q)称之为交叉熵。交叉熵的计算方式如下:对于离散变量采用以下的方式计算:H(p,q)=对于连续变量采用以下的方式计算:
  • [技术干货] 【模王赛】关于LGCN模型调参经验分享
    ## 网络模型结构简介 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/01/233418khelfq7ncmwbrpwx.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/01/233509xt7mcboccj4gif3o.png) 卷积神经网络在网格数据上取得了很大的成功,但是在学习像图这样的数据的时候就面临着很多的挑战。CNN中,可学习的局部滤波器可以自动地捕获高层次的特征。滤波器的计算需要感受野内有固定数量的单元。然而,在图结构中,邻居单元的数量不固定,而且邻居也不有序,所以阻碍了卷积的操作。我们提出了可学习图卷积层(learnable graph convolutional layer LGCL)来解决这些挑战。 基于值的排序,LGCL为每个特征自动地选择固定数量的邻居结点,以此将图结构数据变换到1维的网格结构中,然后就可以在图上使用常规的卷积操作了。为了能让模型在大尺度的图上训练,我们提出了一个子图训练方法来减少过多的内存和计算资源的开销。在顶点分类任务上,不论是transductive 还是 inductive,表现得都更好一些。我们的结果展示出了我们的子图训练方法比前人的方法更高效。 ## 数据集 Cora数据集由许多机器学习领域的paper构成,这些paper被分为7个类别: \- Case_Based \- Genetic_Algorithms \- Neural_Networks \- Probabilistic_Methods \- Reinforcement_Learning \- Rule_Learning \- Theory 在该数据集中,每一篇论文至少引用了该数据集里面另外一篇论文或者被另外一篇论文所引用,数据集总共有2708篇papers。 在消除停词以及除去文档频率小于10的词汇,最终词汇表中有1433个词汇。 ## 效果对比 | 环境 | 卡数/数据集 | 训练总耗时(h/m/s) | 实测精度 | 论文精度 | 实测性能(ms/step) | 基线性能(ms/step) | | ------ | ----------- | ------------------- | -------- | ----------- | ------------------- | ------------------- | | Ascend | 1P/Cora | 96.29s | 85.1% | 83.3 ± 0.5% | 0.095 | 0.9181 | ## 个人经验 我自身参加过两次模王赛,这一次有幸一直从青铜赛打进最终王者阶段,也是从对昇腾生态不太了解到现在还可以较熟练地使用和进行调试。 针对LGCN这个模型,实际上这个模型很小,很适合利用CANN的profiling工具和AutoTune反复调试和进行网络调参。对于要转成昇腾的Tensorflow模型,首先我们要加入这一串代码: ```python config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["use_off_line"].b = True # 在昇腾AI处理器执行训练 custom_op.parameter_map["mix_compile_mode"].b = True config.graph_options.rewrite_options.remapping = RewriterConfig.OFF # 关闭remap开关 config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF if tf.app.flags.FLAGS.allow_mix_precision: custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision") ``` 其中**precision_mode**是我们最容易提高模型性能且可以达到比较小或者几乎忽略不计的性能损耗,就这么一行代码即可。再者我们要启动profiling模式,也是加入几行代码,就可以使用性能模式: ```python work_dir = os.getcwd() profiling_dir = os.path.join(work_dir, "npu_profiling") if not os.path.exists(profiling_dir): os.makedirs(profiling_dir) options = '{"output": "%s", \ "task_trace": "on", \ "aicpu": "on"}' % (profiling_dir) custom_op.parameter_map["profiling_mode"].b = True custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes(options) ``` 使用性能模式后可以在目录下生成一个JOBXXXX开头的文件,我们可以在`/home/HwHiAiUser/Ascend/ascend-toolkit/latest/arm64-linux/toolkit/tools/profiler/profiler_tool/analysis/msprof`调用起解析性能脚本,可以尝试以下方法执行: ```shell python3 msprof.py export timeline -dir JOBBHGEJGADJBEHJJEJICBBAAAAAAAAA python3 msprof.py export summary -dir JOBBHGEJGADJBEHJJEJICBBAAAAAAAAA ``` 那么我们可以得到`summary`和`timeline`关键文件夹,使用chrome://tracing/去读取timeline下的task_time_0_1.json,我们就可以知道每个算子的性能如何,然后再去针对耗时长的算子进行二次调试了。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/01/233541cdgcqd9nx24oljnl.png) 在LGCN模型里,我发现tf.transpose和tf.nn.top_k这两个算子耗时非常长,当我没有很好的处理方案的时候,我尝试选择了混合计算的方案,混合计算就是针对在计算图中有不支持的算子的场景(例如py_func), 为提供灵活性和扩展性,提供混合计算模式,用户可配置将不支持的算子留在Host由前端框架执行。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/01/233610djui1w9ccylnt0jf.png) 昇腾AI处理器默认采用计算全下沉模式,即所有的计算类算子全部在Device侧执行,混合计算模式作为计算全下沉模式的补充,将部分不可离线编译下沉执行的算子留在前端框架中在线执行,用于提升昇腾AI处理器支持Tensorflow的适配灵活性。 使用方法也很简单,只要加入以下代码即可: ```python custom_op.parameter_map["mix_compile_mode"].b = True ``` 使用完发现性能有大幅度提升,因为耗时长的算子都到前端框架执行,但此时并没有接近GPU的性能,我又开始寻找其他性能调优方案,此时发现NPU有自带的`dropout`函数,可以更合适昇腾设备使用,果然添加上去后性能又进一步跃升,此时性能已经超过GPU性能,到此我们的调优就可以宣布完毕啦。
  • [其他] 卷积神经网络简介与Python实现卷积神经网络
    卷积神经网络Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN。CNN是一种特殊的多层神经网络,用于处理具有明显网格状拓扑的数据。其网络的基础基于称为卷积的数学运算。卷积神经网络(CNN)的类型以下是一些不同类型的CNN:    1D CNN:1D CNN 的输入和输出数据是二维的。一维CNN大多用于时间序列。    2D CNNN:2D CNN的输入和输出数据是三维的。我们通常将其用于图像数据问题。    3D CNNN:3D CNN的输入和输出数据是四维的。一般在3D图像上使用3D CNN,例如MRI(磁共振成像),CT扫描(甲CT扫描或计算机断层扫描(以前称为计算机轴向断层或CAT扫描)是一种医学成像 技术中使用的放射学获得用于非侵入性详述的身体的图像诊断的目的)和其他复杂应用程序的DICOM图像(医学数字成像)网络架构以下是CNN中不同层的网络架构:    卷积层    池化层    全连接层Python实现卷积神经网络环境Google Colab导入所有必需的库import numpy as npimport pandas as pdfrom keras.optimizers import SGDfrom keras.datasets import cifar10from keras.models import Sequentialfrom keras.utils import np_utils as utilsfrom keras.layers import Dropout, Dense, Flattenfrom keras.layers.convolutional import Conv2D, MaxPooling2D加载cifar10数据:(X, y), (X_test, y_test) = cifar10.load_data()# 规范化数据X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0转换为分类:y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)初始化模型:model = Sequential()使用以下参数添加卷积层:    Features map  = 32    内核大小= 3x3    输入形状= 32x32    Channels = 3    Padding = 3→表示与输入相同的尺寸输出model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))# Dropoutmodel.add(Dropout(0.2))# 添加另一个卷积层 padding ='valid'表示输出尺寸可以采用任何形式model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid'))# 添加一个最大池化层model.add(MaxPooling2D(pool_size =(2,2)))# 展平model.add(Flatten())# Dense层 隐藏单元数为521model.add(Dense(512, activation='relu'))# Dropoutmodel.add(Dropout(0.3))#output model.add(Dense(10, activation='softmax'))# 编译模型 激活器选择SGDmodel.compile(loss='categorical_crossentropy',             optimizer=SGD(momentum=0.5, decay=0.0004), metrics=['accuracy'])25个epochsmodel.fit(X, y, validation_data=(X_test, y_test), epochs=25,          batch_size=512)卷积神经网络是一种特殊的多层神经网络,主要用于提取特征。CNN使用称为卷积和池化的两个操作将图像缩小为其基本特征,并使用这些特征适当地理解和分类图像
总条数:945 到第
上滑加载中