如何提升深度学习算法效率,谷歌有这些绝招优化器神经网络

选自谷歌博客机器之心编译编辑:铭怿

大型机器学习模型在多个领域展现出具有变革性的结果,但在现实世界中,训练和推理效率正在成为关键需求。GoogleResearch一直在通过开发新的基础技术来提高大型ML模型的效率。本文中,谷歌以「提升模型效率」为主题,介绍如何使ML模型更加强韧、高效。

十年前,深度学习崛起的部分原因在于新算法和架构的融合、数据的显著增加以及计算能力方面的提升。过去10年里,AI和ML模型更加深入、复杂、有了更多的参数和训练数据,也因而变得更大、更繁琐,这也为机器学习历史带来了最具变革性的成果。

这些模型越来越多地应用于生产和业务应用程序中,与此同时,其效率和成本已经从次要的考虑因素演变为主要的限制。为了应对在高效架构,训练效率,数据效率和推理效率四个层面的重大挑战,谷歌继续在ML效率上投入大量资金。除了效率之外,这些模型还面临着许多关于真实性、安全性、隐私性和新鲜度的挑战。接下来,本文将重点介绍GoogleResearch为了应对上述挑战,在开发新算法方面所做的努力。

研究的基本问题在于「是否有更好的方法来参数化模型以提高效率?」2022年,研究人员专注于通过检索上下文、混合专家系统,以及提升Transformer(大型ML模型的心)的效率来研发通过增强模型来注入外部知识的新技术。

上下文增强模型

为了追求更高的质量和效率,可以使用来自大型数据库或可训练内存的外部上下文来增强神经模型。通过利用检索到的上下文,神经网络无需在其内部参数中广泛地储备知识,就能实现更好的参数效率、可解释性和真实性。

用于上下文合并的编码器-解码器交叉注意机制,允许上下文编码与语言模型推理解耦,进而提升上下文增强模型的效率。

在寻求模块化深度网络的过程中,其中一个问题是如何设计具有相应计算模块的概念数据库。研究人员提出了一种理论体系架构,将「记忆事件」(rememberevents)以sketches的形式存储在一个外部LSH表中,其中包括一个pointers模块来处理sketches。

利用加速器从大型数据库中快速检索信息是上下文增强模型的另一大挑战。研究人员开发了一种基于TPU的相似度搜索算法,该算法与TPU的性能模型保持一致,并对预期召回率提供了分析保证,实现了峰值性能。搜索算法通常涉及大量的超参数和设计选择,这使得在执行新任务时很难对它们进行调整。研究人员提出了一种新的约束优化算法,用于自动化超参数调优。将期望的成本或召回率固定为输入,所提出的算法产生的调优在经验上非常接近速度-召回率帕累托边界(speed-recallParetofrontier),并在标准基准测试中提供领先的性能。

混合专家模型

经证明,混合专家(MoE)模型是在不过度增加计算成本的前提下,提高神经网络模型容量的有效手段。MoE的基本思想是由许多专家子网络构建出一个统一网络,其中每个输入由一个合适的专家子集处理。因此,与标准神经网络相比,MoE只调用了整个模型的一小部分,从而产生了如GLaM等语言模型应用程序所示的高效率。

GLaM体系架构中的每个输入token被动态路由到64个专家网络中的两个进行预测。

对于给定的输入,路由函数负责决定应当激活哪些专家,该函数的设计具有挑战性,因为研究者希望避免对每个专家的利用不足和过度利用。最近的一项工作提出了专家选择路由,这是一种新的路由机制,它不是将每个输入token分配给top-k专家,而是将每个专家分配给top-ktoken。这将自动确保专家的负载平衡,同时也自然地允许多个专家处理一个输入token。

专家选择路由。具有预定缓冲区容量的专家被分配top-ktoken,从而保证负载平衡。每个token可以由数量不定的专家处理。

有效的Transformer

Transformer是当下正火热的序列到序列模型,在从视觉到自然语言理解等一系列具有挑战性的问题上取得了显著的成功。这种模型的核心组成部分是注意力层,它识别查询和键之间的相似性,并使用这些相似性构造一个适当的值加权组合。虽然性能强,但注意力机制的计算效率却不高,复杂度通常为输入序列长度的二次方。

随着Transformer规模的不断增长,其中一个问题的研究十分有价值,即是否有任何自然发生的结构或模式的学习模型,可以破解注意力有效的原理。为此,研究人员研究了中间MLP层中的学习嵌入,并且发现它们非常稀疏——例如,T5-Large模型有1%的非零项。稀疏性进一步表明,人们可以在不影响模型性能的情况下潜在地降低FLOPs。

另一种提高Transformer效率的方法是在注意力层中加速softmax计算。在「low-rankapproximationofthesoftmaxkernel」研究基础上,研究人员提出了一类新的随机特征,提供了softmaxkernel的首个「positiveandbounded」随机特征近似,并且在序列长度上的计算是线性的。

训练效率

高效的优化方法是现代ML应用程序的基石,在大规模设置中,这一点尤其重要。在这种设置下,即使是像Adam这样的一阶自适应方法通常也很昂贵,并且训练稳定性面临重重挑战。此外,这些方法通常对神经网络的架构不可知,从而忽略了架构的丰富性,导致训练效率低下。这也促使新技术不断被提出以更有效地优化现代神经网络模型。研究人员正在开发新的架构感知训练技术,例如,用于训练Transformer网络的一些研究,包括新的规模不变的Transformer网络和新的剪枝方法,并与随机梯度下降(SGD)结合使用,以加快训练进程。在该方法的帮助下,研究人员第一次能够使用简单的SGD有效地训练BERT,而不需要自适应。

此外,研究人员在LocoProp的帮助下提出了一种新的方法——在使用与一阶优化器相同的计算和内存资源的同时,实现与二阶优化器类似的性能。LocoProp采用模块化的神经网络视图,将它们分解成层的组合。然后允许每一层都有自己的损失函数以及输出目标和权重正则化器。有了这个设置,经过适当的前后传递后,LocoProp继续对每一层的局部损失进行并行更新。事实上,无论是理论上还是经验上,这些更新可以被证明类似于那些高阶优化器。在深度自编码器基准上,LocoProp实现了与高阶优化器相当的性能,同时更具速度优势。

与反向传播类似,LocoProp应用前向传递来计算激活。在向后传递中,LocoProp为每一层设置每个神经元目标。最后,LocoProp将模型训练拆分为跨层的独立问题,其中几个本地更新可以并行应用于每个层的权重。

SGD等优化器的核心思想是,每个数据点从分布中独立且相同地采样。可惜这在实际环境中很难满足,比如强化学习,在这种情况下,模型(或智能体)必须从基于自己预测生成的数据中学习。研究人员提出了一种新的基于反向经验重放的SGD算法,该算法可以在线性动力系统、非线性动力系统和Q-learning中找到最优解。此外,已经有研究证明该方法的增强版本IER是目前最先进的版本,并且是在各种流行的RL基准测试中最稳定的体验重放技术。

数据效率

在许多任务中,深度神经网络严重依赖于大型数据集。除了大型数据集带来的存储成本和潜在的安全/隐私问题外,在此类数据集上训练现代深度神经网络还会产生很高的计算成本。解决这个问题的可行方法之一是对数据子集进行选择。

研究人员分析了子集选择框架,设计用于实际批处理设置中的任意模型族。在这种情况下,学习器可以一次采样一个示例,同时访问上下文和true标签,但为了限制开销,只有在选择了足够多的示例批次后才能更新其状态(即进一步的训练模型权重)。研究人员开发了一种算法,称为IWeS,它通过重要性抽样来选择示例,其中分配给每个示例的抽样概率是基于在先前选择的批次上训练的模型的熵。研究所提供的理论分析证明了泛化和抽样率的界限。

训练大型网络的另一个问题是,它们可能对训练数据和部署时看到的数据之间的分布变化高度敏感,特别是在使用有限数量的训练数据时,这些数据可能无法覆盖所有部署时场景。最近的一项研究假设「极端简单性偏差」是神经网络这种脆弱性背后的关键问题,其使这一假设成为可行,导致了两种新的互补方法——DAFT和FRR——结合在一起时,可以提供明显更鲁棒的神经网络。特别是,这两种方法使用对抗性微调以及反向特征预测来加强学习网络。

推理效率

事实证明,增加神经网络的规模能够提高其预测准确性,然而,在现实世界中实现这些收益是具有挑战性的,因为大型模型的推理成本对于部署来说非常高。这促使策略提高服务效率,而不牺牲准确性。在2022年,专家研究了实现这一目标的不同策略,特别是基于知识蒸馏和自适应计算的策略。

蒸馏

在算法方面,研究通过仔细建模教师标签中的噪声,开发出了一项重新加权训练示例的重要途径,以及一项有效措施来对数据子集进行采样以获得教师标签。谷歌在《TeacherGuidedTraining:AnEfficientFrameworkforKnowledgeTransfer》中表明:不是被动地使用教师来注释固定的数据集,而是主动地使用教师来指导选择要注释的信息性样本。这使得蒸馏过程在有限的数据或长尾设置中脱颖而出。

理论方面,研究从监督复杂性角度出发,提供了一个关于蒸馏的新视角,这是一种衡量学生预测教师标签程度的方法。NTK(neuraltangentkernel)理论提供了概念性的见解。研究进一步证明,蒸馏会导致学生不适合教师模型认为难以建模的点。直观地说,这可以帮助学生将有限的能力集中在那些可以合理建模的样本上。

自适应计算

虽然蒸馏是一种降低推理成本的有效手段,但它在所有样本上都是一致的。然而,直观地说,一些简单(easy)样本可能天生就比困难(hard)样本需要更少的计算。自适应计算的目标是设计能够实现这种依赖于样本的计算的机制。

CALM(ConfidentAdaptiveLanguageModeling)为基于Transformer的文本生成器(如T5)引入了受控的早期退出(early-exit)功能。

在这种形式的自适应计算中,模型动态地修改每个解码步骤使用的Transformer层数。早期退出门使用带有决策阈值的置信度测量,该决策阈值经过校准,以满足统计性能保证。通过这种方式,模型只需要为最具挑战性的预测计算解码器层的完整堆栈。更简单的预测只需要计算几个解码器层。在实践中,该模型平均使用大约三分之一的层进行预测,在保持相同水平的生成质量的同时,速度能提升2-3倍。

一种流行的自适应计算机制是两个或多个基本模型的级联。使用级联的一个关键问题:是简单地使用当前模型的预测,还是将预测推迟到下游模型。学习何时延迟需要设计一个合适的损失函数,它可以利用适当的信号作为延迟决策的监督。为了实现这一目标,研究人员正式研究了现有的损失函数,证明由于隐含的标签平滑应用,它们可能不适合训练样本。研究展示了可以通过延迟规则的post-hoc训练来缓解这种情况,这并不需要以任何方式修改模型内部。

THE END
1.如何提高AI智能推荐算法的准确度?在当今数字化时代,AI智能推荐算法在各个领域扮演着越来越重要的角色,从在线购物到内容流媒体,再到个性化广告,推荐系统无处不在。然而,提高AI智能推荐算法的准确度是一个复杂的过程,需要综合考虑数据质量、算法设计、用户行为等多个方面。以下是一些提高AI智能推荐算法准确度的方法和步骤: 1. 数据预处理和质量提升 https://www.kdocs.cn/article/0E57AEA1E1.html
2.GBDT集成算法(梯度提升树)GBDT集成算法(梯度提升树) 一、算法思想 GBDT是集成学习Boosting算法中的一种,它与Adaboost相比,Adaboost算法利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,GBDT也是一轮一轮迭代弱学习器,使用前向分布算法,但是它限定弱学习器只能是决策树(CART回归树)。决策树分为两大类,回归树和https://www.imooc.com/article/257225
3.数据挖掘提升算法AdBoost算法通过处理训练数据集来组合方法:根据某种抽样分布对训练集进行抽样,从而得到多个训练集,用特定的算法为每个训练集建立一个分类模型。这种方式有两种常用的技术,装袋(Bagging)和提升(boosting)。 通过选择不同的输入特征的子集来形成训练集,随机森林(RandomForest)就是这种方式的代表。 https://www.jianshu.com/p/9e4db2759866
4.Python机器学习:通过scikitlearn实现集成算法下面是三种流行的集成算法的方法。 装袋(Bagging)算法:先将训练集分离成多个子集,然后通过各个子集训练多个模型。 提升(Boosting)算法:训练多个模型并组成一个序列,序列中的每一个模型都会修正前一个模型的错误。 投票(Voting)算法:训练多个模型,并采用样本统计来提高模型的准确度。 http://www.broadview.com.cn/article/419370
5.整版刊发学校师生调研团队《如何远离算法之“算计”?》一文新闻网讯4月7日,《光明日报》第07版“光明调查”整版刊发《如何远离算法之“算计”?》一文,文章由北京市习近平新时代中国特色社会主义思想研究中心特约研究员毛湛文牵头,联合光明日报与学校新闻与传播学院调研组共同完成,就个人用户的使用体验,梳理了算法化生存中的困境、挑战及具体应对表现,并就如何提升算法素养提出建议https://www.muc.edu.cn/info/1084/8418.htm
6.提升法算法(Boosting)和AdaBoost算法编程提升法(Boosting)是一种集成学习方法,通过将多个弱分类器组合成强分类器来提高整体预测性能。其中,AdaBoost(Adaptive Boosting)是提升法算法中最为著名和常用的一种。本文将从提升法算法的基本原理出发,详细介绍AdaBoost算法的工作机制和实现过程,并提供相应的源代码示例。 https://download.csdn.net/blog/column/12409545/132292324
7.机器学习各算法的优缺点!!案例:股票市场预测。使用多个梯度提升树来预测股票价格。 6、XGBoost(极端梯度提升)和LightGBM(轻量级梯度提升机) 这些是梯度提升树的高效实现,具有高度可扩展性和性能。 适用场景:高效的梯度提升算法,适用于大规模数据和高维特征。 案例:用户点击率预测。使用XGBoost或LightGBM来预测用户是否点击广告。 https://www.360doc.cn/article/50382475_1111478886.html
8.提升树2 提升树算法 提升树算法采用前向分步算法,首先确定初始提升树,f0(x)=0,第 m 步的模型是 fm(x)=fm?1(x)+T(x;Θm) 其中,fm?1(x)为当前模型,通过经验风险极小化确定下一棵决策树的参数Θm, 一般是求使得MSE取得最小值的的参数Θm https://zhuanlan.zhihu.com/p/518784730
9.老电影和图片变清晰的秘密!分辨率提升400%的AI算法已开源通过提升训练数据的清晰度 提升算法精度 无论是目标检测、图像识别,还是图像分类、语义分割等CV相关任务,训练数据质量的好坏对于最终任务效果影响都极大。因此,开发者可尝试通过PP-MSVSR将 任意分辨率 下的 视频数据提升至理想分辨率 ,实现下游的 检测、识别、分割等任务的准确率有效提升 。https://www.paddlepaddle.org.cn/support/news?action=detail&id=2716
10.DNF减少防御怎么算减少防御提升伤害算法在DNF游戏中除了正价自身的伤害的各种技能BF还有减少敌人防御的DF,那么DNF减少防御怎么算?减少防御能够提升多少伤害?下面就让小编我带大家去看看大神的算法介绍吧! DNF减少防御提升伤害算法 首先,我们先来看一下防御对减伤率的换算公式 减伤率=怪物防御/(角色等级x200+怪物防御) https://www.qqtn.com/article/article_229265_1.html
11.新手必看的Top10个机器学习算法学会了你就是老手AdaBoost是第一个真正成功的应用是二元分类的增强算法。这是理解提升算法的最佳起点。现代的提升算法都是在AdaBoost的基础上发展起来的,最著名的是随机梯度提升算法。 Adaboost AdaBoost用于短决策树。在创建第一个树之后,用这棵树来计算每个样本的performance(和label之间的差别),用来衡量下一棵树将更多的注意哪些样https://www.51cto.com/article/600359.html
12.如何通过算法,提升产品转化率?人人都是产品经理在设计工作中,如果想提升产品服务、推动转化率提升,结合数据算法找到优化方向,是一个相对不错的选择。那么在实际业务中,我们可以如何利用机器学习、数据算法等内容进行结合应用?本文便从概念、实操等维度入手做了内容解读,一起来看。 以用户为中心的产品设计中,根据不同的用户画像提供个性化的服务是必然趋势。设计师如何https://www.woshipm.com/pd/5808987.html
13.DWT域数字水印算法的FPGA实现AET提升算法的结构框图如图2所示,其提升实现过程由式(1)和式(2)表示,其中滤波系数α=-1/2, β=1/4。 本文将采用5/3小波滤波器来实现小波变换。 1.2 边界处理 由于图像数据是有限长的,因此离散小波变换必须对图像数据进行边界延拓,在做小波提升算法时,同样需要对其边界数据进行延拓,以保证边缘数据的正确。基于资源http://www.chinaaet.com/article/113724
14.GBDT(梯度提升决策树)算法(详细版)腾讯云开发者社区GBDT(梯度提升决策树)算法(详细版) 一、前言 通过之前的文章GBDT算法(简明版)对GBDT的过程做了大概的讲解,我们可以了解到GBDT是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来做最终答案。GBDT是一个应用很广泛的算法,可以用于分类,回归和特征选择,特别是用于和其他算法进行模型组成时,如logistic+https://cloud.tencent.com/developer/article/1082482
15.26万,确实可以封神了!2、高级篇,从 80 分到尖子生的区别,开拓视野,训练逻辑,提升算法思维,比如: 拓扑排序、最短路径、位图、统计问题、向量空间、B+树、搜索、索引、并行算法等等; 概念+ 应用,这里剖析的都是稍复杂一些的数据结构与算法,现在流行的区块链、人工智能等核心代码实现会涉及到这些。 https://maimai.cn/article/detail?fid=1764399719&efid=_j-QXBJavdD7VaW8tz9szg
16.谷歌T4FBE4亚麻L5对应BAT的什么工程师等级?这里分享一下我提升算法与数据结构的学习资料(北美国内都适用) 《FLAG算法面试真题详解》:直接刷题是最快提升算法能力的方式之一,像谷歌考察最多的动态规划,二叉树,数组和字符串的处理等知识点,都能在这里得到解答。 算法常考知识点 二分搜索BinarySearch https://www.yoojia.com/ask/17-12024161409420320359.html
17.Python机器学习入门(六)之Python优化模型python有时提升一个模型的准确度很困难。你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善。这时你会觉得无助和困顿,这也正是90%的数据科学家开始放弃的时候。不过,这才是考验真正本领的时候!这也是普通的数据科学家和大师级数据科学家的差距所在。 https://www.jb51.net/article/220993.htm