人工智能杰夫·迪恩:《深度学习的黄金十年:计算系统与应用》有道技术团队

1990年,作为一名本科生,我对神经网络着迷,觉得它们似乎是创造智能机器的正确抽象,并相信我们只需要更多的计算能力,就可以使更大的神经网络解决更大、更有趣的问题。我做了一篇关于神经网络并行训练的本科论文,相信如果我们可以使用64个处理器而不是一个处理器来训练一个神经网络,那么神经网络就可以解决更多有趣的任务然而事实证明,相对于1990年的计算机,我们需要大约100万倍的计算能力,而不是64倍,才能让神经网络在具有挑战性的问题上开始取得令人印象深刻的进展!

然而,大约从2008年开始,由于摩尔定律,我们开始拥有如此强大的计算机,神经网络开始复苏,并成为最有前途的创造能看、能听、能理解和能学习的计算机的方式(以及将这种方法重新命名为“深度学习”)。

从2011年到本文撰写时(2021年)的这十年,在实现1956年达特茅斯研讨会设定的目标方面取得了显著进展,机器学习(ML)和人工智能现在在许多领域都取得了巨大的进步,为新的计算体验和交互创造了机会,并极大地扩展了世界上可以解决的问题集。

与通用的计算机代码(比如你每天运行文字处理器或网络浏览器时可能会用到的软件)不同,深度学习算法通常是由组成少量线性代数操作的不同方式构建的:矩阵乘法、向量点积和类似的操作。由于这种有限的操作词汇表,我们有可能制造出专门支持这类计算的计算机或加速器芯片。这种专门化实现了相对于通用中央处理单元(cpu)的新的效率和设计选择,后者必须运行更广泛的各种算法。

在21世纪初,一些研究人员开始研究使用图形处理单元(gpu)来实现深度学习算法。尽管这些设备最初是为绘制图形而设计的,但研究人员发现,它们也非常适合深度学习算法,因为与cpu相比,它们具有相对较高的浮点计算率。2004年,计算机科学家Kyoung-SuOh和KeechulJung展示了使用GPU的神经网络算法的近20倍的改进。2008年,计算机科学家RajatRaina和同事展示了使用GPU的速度比一些无监督学习算法的最佳cpu实现的速度高72.6倍。

这些早期的成就继续建立,因为在gpu上训练的神经网络在各种各样的计算机视觉比赛中胜过其他方法。随着深度学习方法在图像识别、语音识别和语言理解方面的显著改进,以及越来越多的计算密集型模型(在更大的数据集上训练)不断展示改进的结果,机器学习领域真正开始腾飞。计算机系统架构师们开始研究如何将深度学习模型扩展到计算密集程度更高的地方。早期的一种方法使用大规模分布式系统来训练单一的深度学习模型。谷歌研究员开发了DistBelief框架,这是一个能够使用大规模分布式系统来训练单个神经网络的软件系统。使用DistBelief,研究人员能够训练一个单一的无监督神经网络模型,该模型比以前的神经网络大两个数量级。该模型是在YouTube视频的大量随机帧集合上训练的,有了一个大的网络和足够的计算和训练数据,它证明了模型中的单个人工神经元(神经网络的构建模块)可以学习识别像人脸或猫这样的高级概念,尽管除了原始图像的像素外,从来没有给过关于这些概念的任何信息。

随着gpu和其他面向ml的硬件崛起,研究人员开发了开源软件框架,使表达深度学习模型和计算变得容易。这些软件框架仍然是关键的推动者。今天,开源框架帮助广泛的研究人员、工程师和其他人推动深度学习研究,并将深度学习应用到范围非常广泛的问题领域(其中许多将在下面讨论)。一些最早的框架,如2003年开始开发的Torch,从早期的数学工具(如MatLab和NumPy)中汲取灵感Theano是2010年开发的,是一个早期的面向深度学习的框架,包括自动符号区分自动微分是一个有用的工具,它大大简化了许多基于梯度的机器学习算法的表达,例如随机梯度下降(一种通过比较实际输出和期望输出,并在误差梯度的方向上对模型参数进行小的调整来纠正输出中的错误的技术)。DistBelief和Caffe是在2010年代早期开发的框架,强调规模和性能。

TensorFlow是一个允许表达机器学习计算的框架它是谷歌在2015年开发和开源的,并结合了早期框架,如Theano和DistBelief的想法,TensorFlow是针对各种各样的系统设计的,允许ML计算运行在桌面计算机、手机、数据中心的大规模分布式环境和web浏览器上,并针对各种各样的计算设备,包括cpu、gpu和tpu。该系统已被下载超过5000万次,是世界上最受欢迎的开源软件包之一。它使世界各地大大小小的个人和组织能够大量使用机器学习。

2018年发布的JAX是一个流行的面向python的开源库,它结合了复杂的自动区分和底层的XLA编译器,TensorFlow也使用它来高效地将机器学习计算映射到各种不同类型的硬件上。

像Tensor-Flow和PyTorch这样的开源机器学习库和工具的重要性再怎么强调也不为过。它们允许研究人员在这些框架上快速尝试想法并表达它们。随着世界各地的研究人员和工程师更容易建立在彼此的工作上,整个领域的进展速度加快了!

计算能力的变革性增长、机器学习软件和硬件系统的进步,以及机器学习研究的激增,都导致了机器学习应用在科学和工程的许多领域的激增。通过与气候科学和医疗保健等关键领域的专家合作,机器学习研究人员正在帮助解决对社会有益、促进人类进步的重要问题。我们确实生活在一个激动人心的时代。

机器学习还可以帮助我们更多地了解我们的基因构成,最终更有效地解决基于基因的疾病。这些新技术允许科学家通过更精确的模拟、估计和数据分析来更快地探索潜在实验的前景。一种名为DeepVariant的开源工具可以更准确地处理来自DNA测序机的原始信息(其中包含读取基因序列的物理过程引入的错误),并通过卷积神经网络对其进行分析,相对于参考基因组数据,更准确地识别序列中真正的基因变异。一旦确定了遗传变异,深度学习还可以帮助分析遗传序列,更好地理解导致特定健康或其他结果的单个或多个DNA突变的遗传特征。例如,达纳-法伯癌症研究所(Dana-FarberCancerInstitute)领导的一项研究,在2367名癌症患者队列中,将导致前列腺癌和黑色素瘤的基因变异的诊断率提高了14%。

机器学习还提供了帮助检测和诊断疾病的新方法。例如,当应用于医学图像时,计算机视觉可以帮助医生诊断一些严重的疾病,比医生自己诊断更快速、更准确。

一个令人印象深刻的例子是深度神经网络正确诊断糖尿病视网膜病变的能力,通常与人类眼科医生的水平相当。这种眼疾是增长最快的可预防失明原因(预计到2040年将影响6.42亿人)。

深度学习系统还可以像训练有素的放射科医生一样或更好地帮助检测肺癌。同样的道理也适用于乳腺癌、皮肤病和其他疾病对病历进行顺序预测的应用可以帮助临床医生确定慢性疾病的可能诊断和风险水平。

今天的深度学习技术也让我们更准确地了解疾病的传播方式,让我们有更好的机会预防疾病。机器学习帮助我们模拟复杂事件,如全球COVID-19大流行,这需要全面的流行病学数据集、开发新的可解释模型和基于代理的模拟器,为公共卫生应对提供信息。

气候变化是当前人类面临的最大挑战之一。机器学习可以帮助我们更好地了解天气和环境,特别是在预测日常天气和气候灾害方面。

对于洪水预测,神经网络可以为世界各地的河流系统建模(一种被称为HydroNets的技术),从而产生更准确的水位预测例如,利用这项技术,当局可以更快地向印度和孟加拉国的2亿多人发出洪水警报。

机器学习还能帮助我们更好地分析卫星图像。我们可以快速评估自然灾害后的损害(即使有有限的先前卫星图像),了解野火的影响和程度,并改善生态和野生动物监测。

物理世界是混乱的,充满了意想不到的障碍、滑动和破碎。这使得创造出能够在厨房、办公室和道路等混乱的真实环境中成功操作的机器人变得相当具有挑战性(工业机器人已经对世界产生了重大影响,可以在工厂装配线等更可控的环境中操作)。要对真实的物理任务进行编码或编程,研究人员需要预测机器人可能遇到的所有可能情况。机器学习通过结合强化学习、人类演示和自然语言教学等技术,有效地训练机器人在现实环境中有效地操作。机器学习还提供了一种更灵活、适应性更强的方法,机器人可以学习执行抓取或行走任务的最佳方式,而不是被锁定在硬编码的假设中。

一些有趣的研究技术包括与远程机器人导航相结合的自动强化学习,教机器人遵循自然语言指令(多种语言!),以及应用零射击模仿学习框架来帮助机器人更好地导航模拟和真实环境。

我们很容易认为看到美丽的画面,听到喜欢的歌曲,或与心爱的人说话是理所当然的。然而,超过10亿人无法通过这些方式接触世界。机器学习通过将这些信号(视觉、听觉、语音)转化为有无障碍需求的人可以很好地管理的其他信号,从而改善无障碍环境,使人们能够更好地接触到周围的世界。一些应用的例子包括语音到文本的转录,当某人参与对话时的实时转录,以及帮助视障用户识别他们周围环境的应用。

机器学习还可以用于创建工具和应用程序,以帮助个性化学习。这将带来深远的好处,最初的例子包括早期儿童阅读指导,如谷歌ReadAlong(前身为Bolo),它正在帮助世界各地的儿童学习各种不同语言的阅读,和机器学习工具,如苏格拉底,可以通过给他们直观的解释和更详细的信息,他们正在努力学习的概念,在各种各样的科目,如数学、化学、还有文学由语音识别、现实的语音输出和语言理解支持的个性化学习有潜力改善世界各地的教育成果。

深度学习算法显示出以复杂和创造性的方式转换图像的惊人能力,使我们能够轻松地创建莫奈风格的宇宙飞船或爱德华·蒙克风格的金门大桥。通过一种艺术风格转移的算法(由机器学习研究员LeonGatys和同事开发),神经网络可以取一张真实世界的图像和一幅画的图像,并自动呈现画家风格的真实世界的图像。

OpenAI的DALL·E让用户可以使用文本描述图像(“牛油果形状的扶手椅”或“一个阁楼卧室,床头柜旁边有一张白色的床,床旁边有一个鱼缸”),并生成具有自然语言描述所表达的属性的图像,为艺术家和其他创作者提供了复杂的工具,以快速创建他们头脑中的图像。

以机器学习为动力的工具也在帮助音乐家以前所未有的方式进行创作除了“技术”,这些计算的新用途可以帮助任何人创造新的和独特的声音、节奏、旋律,甚至是一种全新的乐器。

不难想象,未来的工具可以交互式地帮助人们创造我们精神意象的惊人表现——“给我画一个海滩……不,我希望是晚上……满月的时候…还有一只长颈鹿妈妈和一个婴儿在冲浪者旁边从水里出来”——通过与我们的计算机助手互动交谈。

联邦学习是一种强大的机器学习方法,可以保护用户隐私,同时利用许多不同的客户端(如移动设备或组织)协作训练一个模型,同时保持训练数据的分散这使得在大规模学习系统中具有优越隐私属性的方法成为可能。

研究人员通过开发自适应学习算法、在联邦设置中模仿集中式算法的技术、对互补的密码图形协议的大幅改进等,继续推动联邦学习的艺术水平。

自人工智能领域诞生以来,语言一直是该领域发展的核心,因为语言的使用和理解在我们的日常生活中无处不在。因为语言涉及符号,所以一开始很自然地促使人工智能采用符号方法。但多年来,人工智能研究人员逐渐意识到,更多的统计或基于模式的方法可以产生更好的实际用途。正确的深度学习类型可以有效地表示和操纵语言的分层结构,用于各种现实世界的任务,从语言之间的翻译到图像标记。谷歌和其他地方在这一领域的大部分工作现在依赖于变形金刚,这是一种最初为语言问题开发的特殊风格的神经网络模型(但越来越多的证据表明,它们也可以用于图像、视频、语音、蛋白质折叠和其他各种各样的领域)。

已经有几个在科学设置中使用变形器的有趣例子,例如训练蛋白质序列以找到编码有意义的生物特性的表示,通过语言建模生成蛋白质,bio-BERT用于生物医学数据中的文本挖掘(使用预先训练的模型和训练代码),嵌入科学文本(使用代码),以及医学问题回答。计算机科学家MaithraRaghu和EricSchmidt对深度学习用于科学发现的方法进行了全面的回顾。

研究人员还将机器学习应用于核心计算机科学和计算机系统本身的问题。这对机器学习和计算基础设施研究来说是一个令人兴奋的良性循环,因为它可以加速我们应用到其他领域的所有技术。事实上,这一趋势正在催生全新的会议,如MLSys基于学习的方法甚至被应用于数据库索引、学习排序算法、编译器优化、图优化和内存分配。

在ML研究社区中出现了一些有趣的研究线索,如果把它们结合起来,可能会更加有趣。

首先,在稀疏激活模型上的工作,比如稀疏门控混合专家模型,展示了如何构建非常大的容量模型,其中对于任何给定的例子,只有模型的一部分被“激活”(比如,2048个专家中只有2或3个专家)这些模型中的路由函数与不同的专家同时联合训练,使路由函数了解哪些专家擅长于哪类示例,而专家同时学习针对所给出的示例流的特征进行专门研究。这与现在大多数的ML模型形成了鲜明的对比,在ML模型中,每个实例都要激活整个模型。研究科学家AshishVaswani和他的同事们表明,这种方法在训练时效率提高了约9倍,在推理时效率提高了约2.5倍,而且更准确(+1BLEU点,对于语言翻译任务来说,这是一个相对较大的准确性提高)。

其次,在自动化机器学习(AutoML)方面的工作,如神经结构搜索或进化结构搜索等技术可以自动学习有效的结构和机器学习模型或组件的其他方面,以优化给定任务的准确性,通常涉及运行许多自动化实验,每一个可能涉及大量的计算。

一个特别有趣的研究方向将这三种趋势结合在一起,即在大规模ML加速器硬件上运行一个系统,目标是训练一个可以执行数千或数百万任务的单一模型。这样的模型可能由不同结构的许多不同组件组成,示例之间的数据流在逐个示例的基础上是相对动态的。该模型可能会使用像稀疏门控混合专家和学习路由这样的技术,以拥有一个非常大的容量模型,但在这个模型中,给定的任务或示例只稀疏地激活系统中总组件的一小部分(因此保持每个训练示例或推理的计算成本和功耗低得多)。一个有趣的探索方向是对不同的例子使用动态和自适应的计算量,这样“简单”的例子比“困难”的例子使用的计算量要少得多(这在今天的机器学习模型中是一个相对不寻常的特性)。图1描述了这样一个系统。

在人工智能和计算机系统工程领域,构建一个能够处理数百万个任务,并能够学习自动成功完成新任务的单一机器学习系统是一个真正的巨大挑战。它将需要在许多领域的专业知识和进步,包括机器学习算法、公平和可解释性等负责任的AI主题、分布式系统和计算机架构,从而通过构建一个可以在机器学习的所有应用领域中独立解决新任务的系统来推动人工智能领域的发展。

虽然人工智能有能力在我们生活的许多方面帮助我们,但所有研究人员和实践者都应该确保这些方法是负责任的开发——仔细审查偏见、公平、隐私和其他社会考虑因素,这些工具可能会如何表现和影响他人,并努力适当地解决这些考虑因素。

制定一套明确的原则来指导负责任的发展也很重要。2018年,谷歌发布了一套人工智能原则,指导该公司在人工智能方面的工作和使用。人工智能原则列出了重要的考虑领域,包括机器学习系统中的偏见、安全、公平、问责、透明度和隐私等问题。近年来,其他组织和政府也遵循这一模式,发布了自己关于人工智能使用的原则。很高兴看到更多的组织发布他们自己的指南,我希望这一趋势将继续下去,直到它不再是一种趋势,而是所有机器学习研究和开发的标准。

2010年代是深度学习研究和进步的黄金十年。在这十年里,该领域在1956年创造了人工智能领域的研讨会上提出的一些最困难的问题领域取得了巨大的进展。机器能够以早期研究人员所希望的方式看、听和理解语言。

这些核心领域的成功使许多科学领域取得了巨大的进步,使我们的智能手机变得更加智能,并使我们看到了未来的可能性,因为我们继续在创造更复杂和强大的深度学习模型,以帮助我们的日常生活。在强大无比的机器学习系统的帮助下,我们的未来将变得更有创造力、更有能力。我迫不及待地想看看未来会发生什么!

作者注:AlisonCarroll,HeatherStruntz和PhyllisBendell帮助编辑了这份手稿,并对如何呈现大部分材料提出了许多有用的建议。2022由JeffreyDean提供。在CCBY-NC4.0许可下发布。

THE END
1.机器学习的相关软件框架下载安装机器学习软件机器学习 专栏收录该内容 31 篇文章 29 订阅 订阅专栏 本文详细介绍了如何下载和安装Anaconda,解决AnacondaNavigator打不开的问题,以及创建和使用PyTorch-CPU环境。此外,还涵盖了Python版本升级、包的维护,包括pip工具的使用、升级和管理第三方库的方法,以及如何修改pip镜像源以提高下载速度。 摘要由CSDN通过智能技术https://blog.csdn.net/weixin_45891612/article/details/128692813
2.Microsoft机器学习产品和技术概述Azure Data Science Virtual Machine使用预安装的数据科学工具的虚拟机映像使用 Jupyter、R 和 Python 等工具在自己的 VM 上开发机器学习解决方案。 ML.NET开源的跨平台机器学习 SDK开发适用于 .NET 应用程序的机器学习解决方案。 Windows AIWindows 设备上的已训练模型的推理引擎将人工智能功能集成到 Windows 应用程序https://docs.microsoft.com/zh-cn/azure/machine-learning/service/overview-more-machine-learning
3.科学网—机器学习软件推荐一个机器学习软件推荐一个 写在前面 谈起机器学习和数据挖掘,很多非计算机专业的人就望而却步。很重要的原因是,敲代码。这次就推荐一款无需敲代码的独立软件Weka,专门做机器学习和数据挖掘,用起来真的很香。当然,Weka也为开发者提供了接口,方便用户开发新应用。https://wap.sciencenet.cn/blog-571917-1310015.html
4.初学者和专业技术人员使用的十大机器学习软件它是用python编写的,并且可以在TensorFlow,CNTK和Theano等其他高级软件之上运行,该机器学习软件有助于快速试验各种模型和算法,它还为CNN(卷积神经网络)和循环网络提供支持,Keras模型主要基于顺序模型和功能性API,人们相信这是制造神经网络的未来,Keras允许您在不同的后端上运行相同的代码,这就是为什么Keras如此被爱的https://www.51cto.com/article/627083.html
5.机器学习和预测分析软件Minitab数据科学和机器学习 业务分析和智能软件 统计过程控制 质量分析 Live Analytics 可靠性和寿命数据分析 离散事件模拟 过程挖掘 关键功能 持续改进 数据集成和数据准备 图表和思维导图 数字孪生 模型和机器学习运营 创新和项目管理 过程卓越:检测、纠正和预防 http://salford-systems.com/
6.软件公司生产的产品有哪些零代码企业数字化知识站人工智能和机器学习软件用于开发智能应用,支持自动化决策和数据分析。包括机器学习平台(如TensorFlow、PyTorch)、自然语言处理工具(如spaCy、NLTK)和计算机视觉库(如OpenCV、Dlib)。机器学习平台提供算法和工具,支持模型训练和评估。自然语言处理工具用于文本分析和理解,支持聊天机器人、翻译和情感分析应用。计算机视觉库用于图https://www.jiandaoyun.com/blog/article/439333/
7.机器视觉软件有哪些苹果机器学习软件是苹果公司开发的一套机器学习和机器视觉工具包。它提供了丰富的图像处理和模式识别功能,可以帮助用户进行图像分类、目标检测等任务。苹果软件还具有高度可定制化的特性,适用于开发人员和研究人员。 4. 微软计算机视觉软件 微软计算机视觉软件是微软公司提供的一套机器视觉工具。它包括了多个功能强大的图像https://cn.smartmore.com/article/post/1922.html
8.基于机器学习的软件缺陷预测方法研究基于机器学习的软件缺陷预测方法研究,机器学习,软件缺陷预测,类不平衡,特征选择,软件缺陷预测技术能够在软件开发初期尽早的发现软件缺陷,有助于合理地分配测试资源,降低软件开发和维护成本,是保证软件可靠性的重https://wap.cnki.net/lunwen-1020344241.html
9.关于机器学习的这几个必备软件,你知道吗?生涯频道领研网今天给大家介绍4款机器学习的免费软件,全部可以在App Store里面下载(手机、iPad均可),可以帮助大家更好地理解机器学习! 神经网络 神经网络:该APP是一个受Google TensorFlow的Deep playground启发而制作的应用。该程序的大量代码都借鉴了开源项目Deep playground,其致力于普及神经网络、人工智能的相关知识。 https://www.linkresearcher.com/careers/c55d3dec-a7f6-4194-951e-8f693d1c572d
10.百度谷歌等联合推出机器学习基准加速全球AI软硬件发展中新网5月3日电 5月2日,由包括百度、谷歌、斯坦福大学、哈佛大学在内的多家企业和高校联合发布了一套用于测量和提高机器学习软硬件性能的国际基准MLPerf。其巨大的学术和产业价值获业界肯定,被认为不仅将加速推进机器学习硬件+软件相关技术创新,更将对整个AI领域的研发思路、投资布局带来长期影响。 https://www.chinanews.com.cn/m/it/2018/05-03/8504906.shtml
11.ccd机器视觉需要学什么软件机器视觉视觉检测设备3D视觉在CCD机器视觉中,机器学习和深度学习可以帮助我们构建更加智能和准确的检测模型。常见的机器学习软件有Scikit-learn和TensorFlow等,它们提供了各种机器学习算法和模型,可以帮助我们进行数据的训练和预测。而深度学习软件如Keras和PyTorch等,则更加强调对神经网络的建模和训练。学习机器学习和深度学习软件需要一定的数学基础和https://www.0755vc.com/16989.html
12.基于机器学习的软件缺陷预测与识别随着软件在现代社会中的广泛应用,软件缺陷的出现对企业和用户都带来了严重的损失。为了及时发现和解决软件缺陷,研究人员和工程师们开始探索利用机器学习技术来预测和识别软件缺陷。本文介绍了机器学习在软件缺陷预测与识别领域的应用,以及相关方法和挑战。 引言: http://www.51testing.net/studyInfo/basis/70726.html
13.基于机器学习的软件缺陷预测模型研究.pptx基于机器学习的软件缺陷预测模型研究:2023-12-30目录引言软件缺陷预测模型相关理论基于机器学习的软件缺陷预测模型构建实验设计与结果分析模型应用与展望参考文献引言01软件质量的重要性软件质量对于企业的成功和用户的满意度至关重要,而缺陷是影响软件质量的主要因素之一。传统测试方法的局限性传统的软件测试方法往往无法全面https://m.renrendoc.com/paper/304512742.html
14.ODYSSEE数字孪生与机器学习大数据优化软件ODYSSEE是基于CAE模拟数据和物理测试数据,通过人工智能(AI)/机器学习(ML)和降阶建模(ROM)技术,进行产品实时预测及优化的数字孪生与机器学习大数据优化软件。 软件不仅用于设计阶段,在早期设计阶段之后,采用数字孪生技术,制造商可以进行图像识别、仿真预测和故障预测,帮助解决整个生产过程中的停机、吞吐量、质量和灵活性https://www.anscos.com/odyssee.html
15.为什么大的芯片厂,都忙着收购“机器学习”软件公司?一些大型半导体供应商已经在开始收购机器学习(ML)软件公司,以便加强它们针对嵌入式系统的人工智能(AI)产品。最近一笔交易就是英飞凌科技与总部位于瑞典斯德哥尔摩的初创公司Imagimob AB所签署的,后者在为边缘设备提供机器学习解决方案。这家瑞典公司的工具链可提供生产级机器学习模型。 https://www.esmchina.com/news/10724.html
16.软件定义下一代汽车,国产龙头依旧是:华为!3.3. 机器学习算法实力强劲,实现快/准/巧 诺亚方舟实验室和智能车云服务产品部是机器学习软件算法的核心支撑团队。华为八爪鱼(HUAWEI Octopus)自动驾驶云服务依托联合团队以及诺亚方舟实验室的最新研究成果,优化自研算法,多项算法模型的精准率达到业界领先水平。 https://awtmt.com/articles/3611353
17.安卓软件开发:如何实现机器学习部署到安卓端安卓软件开发:如何实现机器学习部署到安卓端 2024年已经过半了,我作为聋人独立开发者,我经常反思自己在这半年中的成长,自己这半年到底进步了多少?在这篇文章里,分享机器学习模型部署Android端的开发案例。无论你有没有开发经验,相信这篇文章对你会非常有所帮助。https://cloud.tencent.com/developer/article/2452333