使用Transformer与无监督学习,OpenAI提出可迁移至多种NLP任务的通用模型

2023-11-20

OpenAI 最近通过一个与任务无关的可扩展系统在一系列语言任务中获得了当前最优的性能,目前他们已经发布了该系统。OpenAI 表示他们的方法主要结合了两个已存的研究,即 Transformer 和无监督预训练。实验结果提供了非常令人信服的证据,其表明联合监督学习方法和无监督预训练能够得到非常好的性能。这其实是很多研究者过去探索过的领域,OpenAI 也希望他们这次的实验结果能激发更加深入的研究,并在更大和更多的数据集上测试联合监督学习与无监督预训练的性能。


OpenAI 的系统分为两阶段,首先研究者以无监督的方式在大型数据集上训练一个 Transformer,即使用语言建模作为训练信号,然后研究者在小得多的有监督数据集上精调模型以解决具体任务。研究者开发的这种方式借鉴了他们关于 Sentiment Neuron(blog.openai.com/unsupervise…)方面的研究成果,他们发现无监督学习技术在足够多的数据集上训练能产生令人惊讶的可区分特征。因此研究者希望更进一步探索这一概念:我们能开发一个在大量数据进行无监督学习,并精调后就能在很多不同任务上实现很好性能的模型吗?研究结果表明这种方法可能有非常好的性能,相同的核心模型可以针对不同的任务进行少量适应和精调就能实现非常不错的性能。

这一项研究任务建立在《Semi-supervised Sequence Learning》论文中所提出的方法,该方法展示了如何通过无监督预训练的 LSTM 与有监督的精调提升文本分类性能。这一项研究还扩展了论文《Universal Language Model Fine-tuning for TextClassification》所提出的 ULMFiT 方法,它展示了单个与数据集无关的 LSTM语言模型如何进行精调以在各种文本分类数据集上获得当前最优的性能。OpenAI 的研究工作展示了如何使用基于 Transformer 的模型,并在精调后能适应于除文本分类外其它更多的任务,例如常识推理、语义相似性和阅读理解。该方法与 ELMo 相似但更加通用,ELMo 同样也结合了预训练,但使用为任务定制的架构以在各种任务中取得当前顶尖的性能。

OpenAI 只需要很少的调整就能实现最后的结果。所有数据集都使用单一的前向语言模型,且不使用任何集成方法,超参配置也与大多数研究成果相同。

OpenAI 特别兴奋这一方法在三个数据集上得到的性能,即 COPA、RACE 和 ROCStories,它们都是旨在为常识推理和阅读理解设计的测试集。OpenAI 的模型在这些数据集上都获得了新的最佳性能,且有较大的提升。这些数据集通常被认为需要多句子推理和显著的世界知识来帮助解决问题,这表明研究者的模型通过无监督学习主要提升了这些技能。这同样表明我们可以通过无监督学习技术开发复杂的语言理解能力。

为什么使用无监督学习

监督学习是近期大部分机器学习成功方法的关键,但是,它需要大型、经过仔细清洗的数据集才能表现良好,这需要很高的成本。无监督学习因其解决这些缺陷的潜力而具备极大吸引力。由于无监督学习解决了人工标注数据的瓶颈,它在 计算能力不断增强、可获取原始数据增多的当前趋势下,仍然能够实现很好的扩展。无监督学习是非常活跃的研究领域,但是它在实际应用中仍然受到限制。

近期出现了利用无监督学习方法通过大量无标注数据来增强系统的热潮;使用无监督技术训练的词表征可以使用包含 TB 级信息的大型数据集,而且无监督方法与监督学习技术相结合能够在大量 NLP 任务上提高性能。直到最近,这些用于 NLP 任务的无监督技术(如 GLoVe 和word2vec)使用简单的模型(词向量)和训练过的信号(局部词共现)。Skip-Thought 向量是对复杂方法才能实现的改进的较早呈现。但是现在新技术用于进一步提升性能,包括预训练句子表征模型、语境化词向量(ELMo 和 CoVE)的使用,以及使用自定义架构来结合无监督预训练和监督式精调的方法,比如本文中 OpenAI 的方法。

在大型文本语料库上对模型进行预训练可以极大地改善其在较难的自然语言处理
任务(如 Winograd Schema Resolution)上的性能。OpenAI 还注意到他们能够使用底层
语言模型开始执行任务,无需训练。例如,在选择正确答案等任务中的性能随着底层
语言模型
的改进而得到改善。尽管这些方法的绝对性能与当前最优的监督方法相比仍然较低(在问答任务中,非监督方法的性能仍然不如简单的滑动窗口监督式基线模型),但是这些方法在大量任务上具备鲁棒性,这令人鼓舞。不包含任何任务和世界相关信息的随机初始化网络,其性能不比使用这些启发式方法的随机初始化网络好。这为生成性预训练为什么能够提高下游任务上的性能提供了一些洞见。

OpenAI 还使用模型中的现有语言功能来执行情感分析。研究人员使用了 Stanford Sentiment Treebank 数据集,该数据集包含积极和消极的电影评论句子,研究人员可以使用语言模型通过在一个评论句子后输入单词「very」,并查看该模型预测该单词是「积极」或「消极」的概率,来猜测这条评论是积极还是消极的。这种方法无需将模型针对特定任务进行调整,它与经典基线模型的性能持平——大约 80% 的准确率。

该研究也是对 Transformer 架构的鲁棒性和实用性的验证,表明无需针对特定任务进行复杂的定制化或调参,也可以在大量任务上达到当前最优的结果。

缺点

该项目也有几个突出的问题值得注意:

  • 计算需求:很多之前的解决 NLP 任务的方法可以在单块 GPU 上从零开始训练相对较小的模型。OpenAI 的方法在预训练步骤中需要很高的成本——在 8 块 GPU 上训练 1 个月。幸运的是,这仅需要做一次,OpenAI 会发布他们的模型,从而其他人可以避免这一步。它也是一个很大的模型(相比于之前的工作),因而需要更多的计算和内存。OpenAI 使用了一个 37 层(12 个模块)的 Tranformer 架构,并且在达到 512 个 token 的序列上训练。多数实验都是在 4 和 8 块 GPU 的系统上构建的。该模型确实能很快速地精调到新的任务上,这缓解了额外的资源需求。

  • 通过文本学习而导致的对世界理解的局限和偏差:在互联网上可用的书籍和文本并没有囊括关于世界的完整甚至是准确的信息。近期的研究表明特定类型的信息很难仅通过文本学习到,其它研究表明模型会从数据分布中学习和利用偏差。

  • 泛化能力仍然很脆弱:虽然 OpenAI 的方法在多种任务中提高了性能,目前的

    深度学习
    NLP 模型仍然展现出令人吃惊的和反直觉的行为,特别是当在系统化、对抗性或超出数据分布的方式进行评估的时候。OpenAI 的方法相比于之前的纯
    神经网络
    的方法在文本蕴涵任务上展示了提升的词法鲁棒性。在 Glockner 等人的论文《Breaking NLI Systems with Sentences that Require Simple Lexical Inferences》引入的数据集中,他们的模型达到了 83.75% 的
    准确率
    ,和 KIM(Knowledge-based Inference Model,来自《NATURAL LANGUAGE INFERENCE WITH EXTERNAL KNOWLEDGE》)的性能相近(通过 WordNet 整合了外部知识)。

未来方向

  • 扩展该方法:研究者观察到

    语言模型
    性能的提高和下游任务的提高有很大关联。他们目前使用的是商用 GPU(单个 8GPU 机器)以及仅包含数千本书籍的训练数据集(约 5GB 的文本)。这意味着如果使用验证效果好的方法以及更多的计算资源和数据,该模型还有很大的提升空间。

  • 改善精调过程:研究者的方法目前还很简单。有可能使用更复杂的适应和迁移技术例如在 ULMFiT 中所探索的方法,可以让该模型获得显著的提升。

  • 更好地理解生成式预训练的有效性:虽然本文中片面地讨论了一些思想,更多的目标指向的实验和研究将帮助分辨不同的解释。例如,实验中观察到的性能增益有多少是由于处理更广泛上下文的能力的提高,有多少是由于世界知识的提高。

附录:数据集示例

论文:Improving Language Understanding by Generative Pre-Training

摘要:自然语言理解包括很广泛的任务类型,例如文本蕴涵、问答、语义相似性评估以及

文本分类
。虽然存在大量的未标记文本语料库,但是为学习这些特定任务而标注的数据是较匮乏的,从而令有区别地训练表现足够好的模型变得很有挑战性。我们在本研究中表明通过在多个未标记文本语料库上对语言模型进行生成式预训练,然后有区别地对每个特定任务进行精调,可以在这些任务上取得很大的增益。相比于之前的方法,我们在精调以获得有效迁移的过程中利用了任务相关的输入转换,同时仅需要对模型架构做极小的改变。结果表明我们的方法在自然语言理解的很广泛的基准上具备有效性。我们不基于任务的模型超越了那些为每个任务特别设计架构而分别进行训练的模型,在研究的 12 项任务的 9 项中显著提高了当前最佳结果。例如,我们在常识推理(Stories Cloze Test)、问答(RACE)、文本蕴涵(MultiNLI)中分别达到了 8.9%、5.7%、1.5% 的绝对提高。


原文链接:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Transformer与无监督学习,OpenAI提出可迁移至多种NLP任务的通用模型 的相关文章

随机推荐

  • 正确打开visual studio2015

    找到visual studio2015的安装目录 点击其中的devenv exe打开
  • 02-RabbitMQ之Docker安装Rabbit单机与集群

    一 docker安装单机rabbit 1 查找rabbitmq镜像或者在docker仓库查看rabbitmq镜像 docker search rabbitmq 2 拉取最新的rabbitmq docker pull rabbitmq 3 运
  • KEIL经常出现 Encountered an improper argument 弹窗

    关于 keil5 使用在线调试时 经常出现 Encountered an improper argument 弹窗 经实测 可有如下方法 方法1 下载UV4 exe 替换本机电脑 Keil UV4目录下的UV4 exe 更换后 如果不能编译
  • 7-14 解一元一次方程 (17 分)

    请编写程序 解一元一次方程 ax b 0 一元一次方程求解公式为 x ab 求解要求 a 0 方程有唯一解 输出解 a 0 b 0 方程无解 输出no solution a 0 b 0 则方程有无穷多解 输出Infinitely solut
  • The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar

    错误提示 org apache jasper JasperException file H netbeans workspace netbeans 6 9 ShoppingSystemOnline build web system fron
  • [LDUoj 倍增] 题解

    星星之火 可以燎原 细节的地方慢慢补充 欢迎提出问题 私聊 留言均可 A 跳跳棋 较难 B 聚会 板子题 C 祖孙询问 板子题 D Dis 板子题 E 次小生成树 严格次小生成树 难 F 异象石 难度适中 G 暗的连锁 难度适中 H 点的距
  • 3D游戏编程实践——Priests and Devils

    编程实践 Priests and Devils github链接 https github com ctlchild SYSU unity3d learning tree master hw2 Priests and Devils is a
  • 给Protobuf中的repeated类型变量添加子项

    Protobuf为repeated类型变量生成的自动代码 不提供通常的类似add item item 的添加子项的成员函数 Protobuf的做法是 UserDocChangesResp changes DocChangeInfo chan
  • Linux shell 编程之 - 合并两个文件

    两个文件a1 b1 内容分别如下 a1 1 2 3 b1 a b c 如何把它们合在一起内容如下的 1 a 2 b 3 c paste d a1 a2 SUN的Solaris只能合并12个文件 sco5 5下ksh只能合并6个文件 在aix
  • Allegro PCB封装焊盘介绍(一)

    PCB封装焊盘结构 焊盘结构如图 1所示 图 1焊盘结构 锡膏层 SMT刷锡膏贴片用 一般贴片焊盘要选 跟焊盘等大 阻焊层 把焊盘裸露出来 不开的话 焊盘会被油墨盖住 这样无法焊接哦 一般比焊盘大0 1mm 顶层 底层焊盘 实际焊盘大小 电
  • tensorRT 与 torchserve-GPU性能对比

    实验对比 前端时间搭建了TensorRT Torchserve GPU 最近抽时间将这两种方案做一个简单的实验对比 实验数据 Cuda11 0 Xeon 6242 3 1 80 RTX3090 24G Resnet50 TensorRT T
  • nosql练习

    1 string类型数据的命令操作 1 设置键值 2 读取键值 3 数值类型自增1 4 数值类型自减1 5 查看值的长度 2 list类型数据的命令操作 1 对列表city插入元素 Shanghai Suzhou Hangzhou 2 将列
  • Qt中代码添加背景图

    第一步 选择一张背景图下到本地 第二步 在qt中点击添加新文件选择图中位置 随便起个名字 点击下一步 这时项目中多出一个目录 选择打开资源编辑器 底部添加前缀 注意该前缀是在内部使用图的路径 点击添加 gt 添加前缀 我这里直接使用的 作为
  • STM32F4实现SD卡读写

    更多交流欢迎关注作者抖音号 81849645041 目的 熟悉SD卡和SDIO工作原理 掌握SD卡的读写 原理 大多单片机系统都需要大容量存储设备 以存储数据 目前常用的有 U 盘 FLASH 芯片 SD 卡等 他们各有优点 综合比较 最适
  • 2020网易笔试编程题(一)

    题目 在一次聚会中 教授们被要求写下自己认可哪位教授的学术成果 也可以写自己 且可能出现重复 已知 如果教授A认可教授B 且教授B认可教授C 那么即可视为教授A也认可教授C 现在我们想知道多少对教授是两两互相认可的 输入举例 输入教授人数
  • oracle中replace怎么用,oraclereplace函数怎么用

    1 REPLACE函数怎么用 REPLACE 参数1 参数2 参数3 参数4 参数1 是要替换其部分字符的文本 参数2 是要用参数4替换的参数1中字符的起始位置 参数3 是希望REPLACE用参数4替换参数1中从参数2开始算起的字符个数 参
  • js 将一维数组转为二维数组并分组

    let arr a W b W01 a W b W02 a WC b WC01 a WC b WC02 a WC b WC02 a WC b WC02 let map arr forEach item gt if map item a ma
  • 理解Spring定时任务@Scheduled的两个属性fixedRate和fixedDelay

    fixedRate和fixedDelay都是表示任务执行的间隔时间 fixedRate和fixedDelay的区别 fixedDelay非常好理解 它的间隔时间是根据上次的任务结束的时候开始计时的 比如一个方法上设置了fixedDelay
  • js 手机、邮箱、身份证格式验证

  • 使用Transformer与无监督学习,OpenAI提出可迁移至多种NLP任务的通用模型

    OpenAI 最近通过一个与任务无关的可扩展系统在一系列语言任务中获得了当前最优的性能 目前他们已经发布了该系统 OpenAI 表示他们的方法主要结合了两个已存的研究 即 Transformer 和无监督预训练 实验结果提供了非常令人信服的