ACL 2023 | 持续进化中的语言基础模型

尽管如今的 AI 模型已经具备了理解自然语言的能力,但科研人员并没有停止对模型的不断改善和理论探索。自然语言处理(NLP)领域的技术始终在快速变化和发展当中,酝酿着新的潮流和突破。

NLP 领域的顶级学术会议国际计算语言学年会 (Annual Meeting of the Association for Computational Linguistics,简称 ACL) 是关心 NLP 领域的研究者们观察动向的关键窗口。在2023年7月9-14日于加拿大多伦多举行的 ACL 2023 上,微软亚洲研究院有多篇针对基础模型的论文被 ACL 2023 收录,论文主题囊括大模型上下文学习机制、训练方法、模型的代码执行以及模型的长度外推问题。今天就让我们一起来看看相关的4篇前沿工作吧。

一种支持长度外推的Transformer架构

论文链接:https://arxiv.org/abs/2212.10554

在 Transformers 模型中,位置建模对于捕捉序列中的依赖关系具有重要意义。这篇文章主要关注长度外推问题,其目的是在短文本上训练模型,同时测试更长的序列。为了衡量这种外推能力,研究员们引入了一个概念并称之为注意力分辨率,并提出了两种设计,旨在改善 Transformer 模型在这一指标上的表现。

首先,研究员们提出了一种相对位置嵌入方法,通过显式地最大化注意力分辨率来提高模型的外推能力。相对位置嵌入可以帮助模型捕捉序列中的长距离依赖关系,从而在处理长序列时具有更好的性能。与传统的绝对位置嵌入相比,这种方法能更好地适应不同长度的输入序列,因此有助于提高模型在长度外推任务上的表现。

其次,为了在推理过程中提高效率,研究员们引入了分块掩码技术。通过将输入序列划分为多个块,并在每个块上应用掩码,研究员们可以降低计算复杂度,进而提高处理速度。这种方法在保持模型性能的同时,显著减少了计算资源的需求。将这两种设计结合起来,就得到了一种新的架构——长度可外推 Transformer (Length-Extrapolatable Transformer)。

研究员们在语言建模任务上对不同的 Transformer 变体进行了实验,以评估这种新型 Transformer 的性能。实验结果表明,这种长度可外推 Transformer 在插值和外推方面都取得了更好的性能。相对位置嵌入和分块掩码的引入也使得模型能够更好地处理长序列,从而在长度外推任务上表现出色。此外,在保持准确性的同时,分块掩码还大大提高了模型的推理速度。

表1:各种位置编码的比较,长度可外推 Transformer 在平移不变性和长度外推性方面具有明显优势。

基于预训练的代码执行模型

论文链接:https://arxiv.org/abs/2305.05383

代码执行是理解代码语义的重要方式,但如今的代码预训练模型都没有考虑让模型学习如何执行代码。在本篇论文中,研究员们构造了三个 Python 代码执行数据集,记录下了数百万条代码的执行轨迹和中间结果,让代码预训练模型进行学习。

研究员们把代码输入给模型,让模型一步一步地“执行”程序,输出当前执行的行号,以及所有局部变量的值,如下图:

图1:数据样例。(a)是一段 Python 代码。(b)是相应的代码执行轨迹,包括当前执行的行号 line 和执行后所有局部变量的值 state。

为了让模型逐步地学习代码执行,研究的数据集从单行代码到 Python 的官方教程示例代码,再到算法题代码,由易至难地让模型进行学习。研究员们还基于软件工程领域的突变测试,对代码使用了十余种突变进行数据增强,希望可以对模型进行更充分地训练,最后共得到三个数据集共计1300万条代码及其执行路径。

在 SOTA 的代码预训练模型 UniXcoder 的基础上,研究员们用了课程学习的训练策略,针对代码执行任务进行了继续训练。对比具有100倍参数量,但未经过代码执行训练的 Codex 模型,CodeExecutor 在执行简单程序的任务上取得了很高的执行正确率,并且有能力“执行”较为复杂的算法题代码。训练后的模型 CodeExecutor 在三个测试集上的结果如表2。

表2:实验结果,SingleLine, Tutorial 和 CodeNetMut 是由易到难的三个数据集,CEL-Si 是分别在第 i 个数据集上训练的模型,w/o CL 是没有使用课程学习在三个数据集上一起训练的模型。

研究员们对 CodeNetMut 中的50条数据进行了人工分析,发现模型已经基本理解了代码中的控制流,对于循环和分支的执行轨迹预测较为准确,但难以执行对于复杂的数据结构,如数组和字符串的一些操作。

最后,研究员们将 CodeExecutor 应用到两个下游任务:代码-代码搜索和代码生成上,发现可以显著地提升原本模型的效果,证明了代码执行可以帮助预训练模型更好地理解代码语义,从而帮助理解和生成程序。

PICL: 在预训练中学习如何进行上下文学习

论文链接:https://arxiv.org/abs/2305.09137

随着大规模预训练模型的发展,上下文学习因其不需要对进行模型微调,且仅仅利用少量样本便能达到较好的效果,而逐渐受到关注。以前的工作主要尝试在下游数据集上进行元学习来增强上下文学习的能力,但这种方法往往会受人工数据数量、多样性的限制,并且引入输入/输出形式的偏置。因此本文提出了在预训练阶段直接增强模型上下文学习的能力,并提出了一个新的预训练框架:PICL。

PICL 框架基于一个自然的观察:自然文本段落天然地包含了“内禀任务”。例如:“我今天很高兴,因为阿根廷拿了世界杯冠军。”这句话就包含了情感分析的任务。如果将具有相同“内禀任务”的段落聚在一起,模型便可利用这些任务进行上下文学习的“元学习”。其好处在于,“内禀任务”的样本来自于自然文本段落,输入/输出形式的偏置较少,且足够多样。为了聚集有相同“内禀任务”的段落,研究员们利用多种下游任务训练了一个检索器,来检索属于相同任务的文本,然后将检索器应用在预训练语料上,对任何自然文本的输入,检索出包含相同“内禀任务”的段落。最后再将检索出来的段落拼接成上下文学习的形式,并使用简单的语言模型目标在拼接后的样本上进行预训练。

图2: 左边是大规模纯文本语料 OpenWebText 中“内禀任务”的例子。右边是 PICL 框架的示意图

实验发现,检索器确实可以找到具有相同“内禀任务”的段落,许多段落都包含检索器训练集中没有的任务,充分说明了自然语言文本中“内禀任务” 的多样性。同时,PICL 框架下训练的模型的整体上下文学习性能和多任务的泛化性,相比于基线都有较大提升。

GPT为什么能进行上下文学习?语言模型隐式地执行梯度下降

论文链接:https://arxiv.org/abs/2212.10559

代码链接:https://aka.ms/icl

随着语言模型参数规模和训练数据规模的不断扩大,预训练的大语言模型展现出了惊人的上下文学习(in-context learning)能力。仅需要几个演示的“输入-标签”对,它们就可以在不进行参数更新的情况下为从未见过的输入预测其标签。

尽管在性能方面取得了巨大成功,但上下文学习的工作机制仍然是一个未解之谜。在这篇论文中,研究员们将语言模型解释为一个元优化器(meta-optimizer),并将上下文学习理解为一种隐式的微调过程。研究员们首先发现 Transformer 中的注意力机制和基于梯度下降的优化具有对偶形式。在这个基础上,研究员们将上下文学习理解为这样一个过程:GPT 首先根据演示样本生成元梯度(meta-gradient),然后将这些元梯度通过注意力机制应用到原始的 GPT 模型工作过程中,从而达到上下文学习的目的。研究员们全面地比较了上下文学习和显式微调在真实 NLP 任务中的行为,为这种理解提供了经验证据。

实验结果表明,从多个角度来观察,上下文学习与显式微调的行为都展现出了相似性,验证了本文理解的正确性。进一步地,受 Transformer 注意力机制和梯度下降之间对偶形式的启发,研究员们通过类比梯度下降的动量设计了基于动量的注意力。与原始的注意力机制相比,该改进的注意力机制具有更好的性能,也进一步地验证了上述理解的正确性。而更重要的是,这个改进模型的路径展示了本文的发现和结论能够被用于在未来进一步改进模型设计的潜力。

图3:根据演示样本(demonstration examples),GPT 首先通过前向计算生成上下文学习(in-context learning)的元梯度(meta-gradients),然后通过注意力机制将这些元梯度应用于模型的工作过程中。从梯度更新的角度来理解,上下文学习的元优化过程与显式微调的基于梯度下降的优化过程之间具有一种对偶形式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/37308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

声网 Agora音视频uniapp插件跑通详解

一、前言 在使用声网SDK做音视频会议开发时, 通过声网官方论坛 了解到,声网是提供uniapp插件的,只是在官方文档中不是很容易找到。 插件地址如下: Agora音视频插件 Agora音视频插件(JS) 本文讲解如何跑通演示示例 二、跑通Demo 2.1 环境安装: 参考: 2. 通过vue-…

vue3+element+sortablejs实现table表格 行列动态拖拽

vue3elementsortablejs实现table动态拖拽 1.第一步我们要安装sortablejs依赖2.在我们需要的组件中引入3.完整代码4.效果 1.第一步我们要安装sortablejs依赖 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. npm install so…

巩固一下NodeJs

1、初始化(确保当前电脑有node环境) npm init 2、安装express npm i expressnpm i ws文件结构 3、编写相关代码启动node服务(server.js) //导入下列模块,express搭建服务器,fs用来操作文件、ws用来实现webscoket const express require("expr…

Android 使用webView打开网页可以实现自动播放音频

使用webview 自动播放音视频,场景如,流媒体自动部分,音视频通话等。会出现如下问题: 解决方案如下: 配置webview 如下,这样可以自动播放音频。 webView.getSettings().setMediaPlaybackRequiresUserGestur…

原生JS实现图片裁剪功能

功能介绍:图片通过原生input上传,使用canvas进行图片裁剪。 裁剪框限制不允许超出图片范围,图片限制了最大宽高(自行修改要的尺寸),点击确认获取新的base64图片数据 注:fixed布局不适用该方案&…

在vue中点击弹框给弹框中的表格绑值

场景描述&#xff1a;如下图所示&#xff0c;我们需要点击 ‘账单生成’ 按钮&#xff0c;然后里边要展示一个下图这样的表格。 最主要的是如何展示表格中的内容&#xff0c;一起看看吧&#xff01; <template><!-- 水费 欠费--><el-dialog title"水费欠费…

短视频seo矩阵源码开发与实践分享

在短视频矩阵系统源码开发中&#xff0c;需要注意以下几个细节&#xff1a; 1. 确定系统的功能需求&#xff1a;在开发短视频矩阵系统源码时&#xff0c;必须先明确系统的功能需求&#xff0c;包括用户的基本操作、系统数据的生成和处理等。 2. 定义数据库结构&#xff1a;短…

零售数字化转型如何破局?这篇文章全说清了!

“数字化转型”&#xff0c;一个老生常谈的话题。自19世纪互联网崭露头角&#xff0c;亚马逊和eBay等电商平台崛起&#xff0c;引领电子商务的发展。传统零售业开始意识到在线渠道的重要性&#xff0c;并纷纷推出自己的电子商务网站&#xff0c;从自此进入数字化转型的赛道当中…

利用电价运行策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

STM32单片机语音识别台灯控制系统人检测亮度调节

实践制作DIY- GC00156-语音识别台灯控制系统 一、功能说明&#xff1a; 基于STM32单片机设计-语音识别台灯控制系统 二、功能说明&#xff1a; 电路&#xff1a;STM32F103C系列最小系统串口语音识别模块LED灯板1个红外传感器 1.任何时候没有人则关闭灯。有人可以自动打开灯。…

激斗云计算:互联网大厂打响新一轮排位战

大模型如同一辆时代列车&#xff0c;所有科技大厂都想上车。 自去年底ChatGPT一炮而红&#xff0c;国内外数十家科技大厂、创业公司、机构相继下场&#xff0c;一时间掀起大模型的热浪。 《中国人工智能大模型地图研究报告》显示&#xff0c;截至今年5月28日&#xff0c;中国…

contentEditable属性

我们最常用的输入文本内容便是input与textarea&#xff0c;但是有一个属性&#xff0c;可以让我们在很多标签中&#xff0c;如div,table,p,span,body等&#xff0c;可以像input输入框一样&#xff0c;实现文本编辑&#xff0c;这便是contentEditable属性 之前有用到这个属性是在…

快速搭建一个美观且易用的 Django 管理后台 —— django-xadmin

Django-xadmin&#xff08;也称为Xadmin&#xff09;是一个第三方的 Django 应用程序&#xff0c;它提供了一系列工具和模板来快速开发基于 Django 的后台管理界面。使用 Django-xadmin 可以用很少的代码就创建出一个强大的、具备实时查看数据、增、删、改等基本操作的 Django …

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…

C人脸识别

1、原始图片&#xff1a; 2、灰度化下&#xff1a; 3、均值滤波&#xff1a; 4、 二值图加边缘检测 5、生成积分图 6、把待检测的人脸区域划分为25个&#xff0c;因为是一个数组&#xff0c;这样分别统计每个区域的像素个数&#xff1a; x0: 60, y0: 100, x1: 157, y1: 200 …

介绍AI绘画课,让智能工具助力创作 释放无限想象力 助你成为绘画大师

演示地址&#xff1a; www.runruncode.com/portal/article/index/id/19458/cid/81.html 画画是一项有趣的活动&#xff0c;它让人充满无限可能。对许多人来说&#xff0c;画画既是一种放松的方式&#xff0c;也是一种与创意、文化和艺术联系的途径。如果你是一个初学者&#x…

云原生——Docker容器化实战

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 "Docker"一词指代了多个概念&#xff0c;包括开源…

uniapp实现聊天消息触,vue3和vue2实现聊天消息触底 scrollTop ,scrollHeight Pc端H5端都适用

uniapp触底SDN链接如下(本人的另一篇博客) uniapp聊天时时触底链接 Pc端 模拟手机端H5 vue3写法 <template><div><!-- 聊天窗体 --><div class"test" id"gundong"><div class"text" v-for"p in chat"&…

2023年上半年总结

2023年上半年总结 引言问答CSDN 竞赛技能树博客原力值粉丝数贡献墙个人能力图新星计划总结 引言 老顾是一个懒癌晚期患者&#xff0c;通常情况下&#xff0c;是一条不折不扣的咸鱼&#xff0c;在工作中&#xff0c;也大多数时间都用来摸鱼了。 摸鱼时间太长&#xff0c;也就有…

RabbitMQ的集群

新建一个虚拟机,重新安装一个RabbitMQ,不会安装的可以看下面的连接: 在Linux中安装RabbitMQ_流殇꧂的博客-CSDN博客 1.修改/etc/hosts映射文件,两台虚拟机都需要修改 vim /etc/hosts 127.0.0.1 node1 localhost.localdomain localhost4 localhost4.localdomain4 ::1 node1 loca…