百亿参数、中文NLU能力首次超越人类,QQ浏览器大模型「神舟」登顶CLUE

简介: 近日,腾讯 QQ 浏览器实验室研发的预训练模型「神舟」(Shenzhou)在 9 月 19 日的中文语言理解评测 CLUE 榜单上登顶,刷新业界记录,成为首个在中文自然语言理解综合评测数据上超过人类水平的预训练模型。

近日,腾讯 QQ 浏览器实验室研发的预训练模型「神舟」(Shenzhou)在 9 月 19 日的中文语言理解评测 CLUE 榜单上登顶,刷新业界记录,成为首个在中文自然语言理解综合评测数据上超过人类水平的预训练模型。


微信图片_20211206124327.jpg

作为中文语言理解领域最具权威性的测评基准之一,CLUE 涵盖文本相似度、分类、自然语言推理、阅读理解等 10 项语义分析和理解类子任务。QQ浏览器“神舟”模型凭借顶尖的语言理解能力,登顶 CLUE1.0 总榜单 / 分类榜单 / 阅读理解榜,刷新三项榜单世界纪录。总排行榜分数突破 85.88 分,超过人类基准分数0.271。


构建出百亿参数量级的「神舟」1.0 模型


自然语言处理和理解(NLP&NLU)是内容领域的一项核心能力,也是 AI 领域持久不衰的核心方向,应用范围涵盖了搜索、推荐、商业算法以及更多 AI 领域的方方面面。


在当前的学术界和工业界,预训练(pretrain)+ 微调(finetune)+ 蒸馏(distill)应用的模式,已经成了一种新的语义理解范式。BERT 作为预训练的基础模型已经被大量应用在相关算法技术上,在此基础上,拥有一个更好更优质的预训练模型可以为所有的语义理解能力带来更强的天花板。


「神舟」自然语言预训练模型是由腾讯 QQ 浏览器实验室于 2021 年自研的成果。通过联合腾讯 QQ 浏览器搜索和内容算法团队,在 6 月登顶 CLUE 的摩天预训练模型基础上进一步进行了大量创新:引入跨层衰减的 Attention 残差链接算法、并将 instance-wise 的自蒸馏技术引入到预训练模型的训练中,以及自回归的 MLM 训练策略等。同时,在此基础上通过二次预训练的方式进行知识增强,进一步提高预训练模型效果。


大规模深度学习模型的效果在各方面获得了成功,但是训练一个百亿的双向自编码模型一直是一个挑战。「神舟」模型通过 ZeRO 分割方案,将百亿模型分割到 N 张卡上,并结合 FP16 训练、梯度检查进一步降低显存使用。底层通信将 TCP 改为 GPUDirect RDMA 通信,大大提高了通信效率,并进一步通过梯度聚集算法减少通信量。


最终,QQ 浏览器实验室通过业界领先的训练能力,最终训练得到了神舟 - 百亿参数量的双向自编码预训练模型。通过「神舟」预训练的能力,仅需要沿用该范式更新模型,即可在几乎所有的语义类理解任务上提升模型效果,有极大的适用性;其次,「神舟」预训练能力作为多模态预训练的基础,帮助提升多模态预训练的综合效果,提升视频理解多模态预训练的综合效果;同时神舟还基于腾讯现有的中台二次输出,进一步扩大辐射范围。


首个在中文自然语言理解能力上超过人类水平的模型


在英文各类榜单上,机器水平已经超过人类有一段时间。中文作为世界上最大规模又极难的语种,面临很多相比于英文更复杂的语言语境问题,比如切词、词法、句法等层面的差异,语言理解的整体难度更大。业界中文语言理解能力距离人类(HUMAN)仍然一定距离,当自然语言理解能力不断深化并到达人类的水平后,在中文环境下技术就可以完成更多传统意义上只有人类才能完成的工作。


结合结合腾讯 pcg venus 机器学习平台引入大量模型优化和加速算法,「神舟」在之前十亿级别参数量的「小」模型摩天(Motian)基础上,构建了百亿参数的训练能力,结合算法的大量优化,最终得到了这个在中文语言理解表现上业界表现最佳的模型。


为了进一步验证预训练模型的效果,腾讯 QQ 浏览器实验室在中文语言理解测评基准 CLUE 榜单上进行了效果验证,于 2021 年 9 月 19 日登顶 CLUE1.0 总榜单 / 分类榜单 / 阅读理解榜,全部超过人类水平,同时也在 CLUE 1.1 的总榜单 / 分类榜单 / 阅读理解榜均取得了第一的成绩。


微信图片_20211206124408.jpg


微信图片_20211206124410.jpg


微信图片_20211206124413.jpg


微信图片_20211206124415.jpg


微信图片_20211206124417.jpg


当前「神舟」已经在 QQ 浏览器搜索、腾讯看点信息流、QQ 浏览器小说场景下支持了几十个语义类算法应用,在多业务场景中取得明显收益;同时也基于腾讯搜索中台和大内容中台场景,辐射至腾讯新闻、视频、微视等腾讯 PCG 业务场景。


刷新 27 个 NLP 基准任务


基于「神舟」领先的中文自然语言理解能力,腾讯 QQ 浏览器实验室团队在 27 个中文自然语言公开数据集上取得了最优效果,问题类型覆盖了自然语言的方方面面,包括文档检索、事件抽取、观点抽取、自然语言推断、语义相似度、分类、机器阅读理解、命名实体识别等等。


微信图片_20211206124424.jpg


除此以外,借助「神舟」的预训练模型效果,可以为所有的语义理解能力带来更强的综合效果,包括但不限于以下场景:


  • 行业高效解决方案,比如教育行业的题库理解、车载对话场景等;
  • 辅助标注,在审核、客服、医疗问诊问答等领域,通过语义和知识减少不必要的人工交互和标注;
  • 提升多模态场景的语义,优化多模态对齐效果。


「神舟」预训练数据


「神舟」借鉴了摩天模型的大量基础训练数据,包括企鹅号、小说、各类百科、新闻、社区问答等内容。并在此基础上额外引入了大量互联网网页数据,经过精准清洗优化,在数据量保障的前提下同时避免低质数据导致的模型漂移。


自蒸馏预训练算法


知识蒸馏(Knowledge Distillation)指的是将训练好的教师模型(Teacher Model)的知识通过蒸馏的方式迁移到学生模型(Student Model),以提升学生模型的效果,往往学生模型参数量较小。而与知识蒸馏不同的是,自蒸馏(Self-Distillation)则指的是模型参数量不变,通过自己蒸馏到自己来不断提升自己的效果。


目前在 CV 和 NLP 领域,自蒸馏技术已经得到广泛的应用,并且也验证了其效果的普适性。而在预训练中,标准的自蒸馏技术并没有很好地得到广泛的应用,原因主要在于预训练过程中非常消耗时间和资源,而标准的自蒸馏技术需要经历几次的模型训练、预测和蒸馏过程才能有比较好的效果提升,这非常消耗时间,显然不太适合预训练。


受 ALBEF 的动量蒸馏技术以及 r-drop(ICLR2021) 技术启发,QQ 浏览器实验室团队探索了 layer-wise 和 instance-wise 自蒸馏在预训练模型上的应用,期望在尽量减少时间和资源消耗的情况下,在训练过程中在线进行自蒸馏,达到快速提升模型效果的目的。实验效果证明,两种方式对下游任务都有普适性的提升,其中 instance-wise 自蒸馏效果表现更优,但是对显存的消耗也会较高。


其中下图左为 layer-wise 自蒸馏技术,在训练过程中使用每一层的输出蒸馏最后模型的输出来不断提升模型性能;下图右则为 instance-wise 自蒸馏技术,利用 dropout 的随机性,对于同样的输入可以产出两个不同输出,在线自己蒸馏自己,快速提升效果。


微信图片_20211206124501.jpg


引入知识图谱增强预训练增强知识理解能力


预训练模型对于真实世界的知识理解,需要更多的知识『投喂』,业界对于预训练引入知识也是多有探索。「神舟」同样在知识增强方面做了进一步深度优化:基于搜索构建的知识图谱数据及百科语料,团队尝试了 3 种知识性任务——远监督关系分类、同类实体替换预测和三元组 - 文本 Mask 预测。


下图是 3 个知识性任务的示例,实验表明这 3 种任务均能有效地引入知识,在下游的知识性任务中带来不错的提升。


微信图片_20211206124515.jpg


优化避免参数遗忘


通过知识性任务能够驱动预训练模型学习到相关的参数,但也很容易造成原参数遗忘和模型通用能力的下降。常见的解决参数遗忘的做法是针对输入的知识性语料,训练 MLM 任务和知识性任务。


这种做法虽然减缓了参数遗忘,但由于知识性语料较为单一和规整,引入 MLM 也无法避免模型在通用场景中效果变差。针对这个问题,团队引入了双路语料输入的机制,将通用预训练语料和知识性任务语料组合为双路输入,共享模型 Encoder 参数,进行联合训练。这样做既保证了 MLM 任务的语料输入的多样性,又减少了知识性任务都是较规整的百科语料对模型的影响。



微信图片_20211206124519.jpg


实验结果表明,采用双路输入比只在百科语料中做联合学习在多个下游任务中平均有超过 0.5% 的提升。在引入双路输入后,上面提到的 3 个知识性任务均能给预训练模型在下游任务中带来提升。其中,远监督关系分类、三元组 - 文本 Mask 预测任务能在阅读理解类任务的 EM 指标上上平均提升 0.7%;在自然语言推理类任务上,则有 0.15% 到 0.3% 不等的提升。


结语


当前「神舟」已经逐步应用于 QQ 浏览器的搜索、看点资讯、小说等多个场景。随着神舟的进一步完善和结合业务的实践,也将进一步改造 QQ 浏览器的搜索能力,理解用户表达背后需求,最智能的满足用户意图、深度服务用户。


相关文章
|
6天前
|
前端开发
调试前端时,在浏览器上修改参数并重新调用接口
有时候我们的页面点击过了,但是接口出问题,想修改参数再调用一次,一般是用apiPost工具把接口复制,再加上token和参数,但是这样非常的效率比较低。
54 0
|
6天前
|
JavaScript 前端开发 UED
浏览器对象模型 (BOM)
浏览器对象模型(Browser Object Model,简称BOM)是JavaScript中用于操作浏览器窗口和与其相关对象的一种模型。BOM提供了一系列与浏览器窗口进行交互的对象,使得JavaScript可以对浏览器窗口进行控制和操作。其中最核心的对象是window对象,它代表了浏览器窗口本身。
19 1
|
6天前
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
165 0
|
6天前
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
|
6天前
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
|
6天前
|
JavaScript
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
|
9月前
|
Web App开发 Python
Python Chrome handless(无界面浏览器,add_argument 支持哪些参数,替代 PhantomJS)
Python Chrome handless(无界面浏览器,add_argument 支持哪些参数,替代 PhantomJS)
105 0
|
6天前
|
Web App开发 Windows
Windows【Chrome浏览器 01】首次安装的谷歌Chrome浏览器出现无法打开此页面问题处理(详细图文步骤)
Windows【Chrome浏览器 01】首次安装的谷歌Chrome浏览器出现无法打开此页面问题处理(详细图文步骤)
73 0
|
6天前
|
编解码 JavaScript 前端开发
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
42 2