热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从GPT到chatGPT(二):GPT2

GPT2文章目录GPT2前言正文摘要方法概述训练数据输入表示模型结构实验语言模型Children’sBookTest(CBT)LAMBADAWinogr


GPT2

文章目录


  • GPT2
    • 前言
    • 正文
      • 摘要
      • 方法
        • 概述
        • 训练数据
        • 输入表示
        • 模型结构

      • 实验
        • 语言模型
        • Children’s Book Test(CBT)
        • LAMBADA
        • Winograd Schema Challenge(WSC)
        • Reading Comprehension
        • Summarization
        • Translation
        • Question Answering

      • Generalization vs Memorization
      • Discussion
      • Conclusion





前言

在GPT1出来后不久,和GPT很相似的BERT也横空出世,并且几乎在全方位上吊打了GPT1,OpenAI扬长避短,提出了《Language Models are Unsupervised Multitask Learners》(GPT2)。它强调的通过无监督学习也能达到和finetune一样的效果,并且拥有更强的泛化能能力(个人猜测就是在finetune的情况下打不过BERT,所以主打无监督学习)


正文


摘要

自然语言处理任务,如问题解答、机器翻译、阅读理解和摘要,通常需要在特定于任务的数据集上进行监督学习。我们证明,当语言模型在名为WebText的数百万网页的新数据集上进行训练时,就算没有任何明确的监督,也能学习到上述的任务。当以文档加问题为条件时,该语言模型生成的答案在CoQA数据集上达到55的F1值,接近或超过3个(共4个)使用127000多个训练数据的baseline模型。语言模型的容量对于zero-shot任务转移的成功至关重要,并以log-linear的方式提高任务的性能。我们最大的模型GPT-2是一个1.5B参数的Transformer,它在8个测试语言建模数据集中的7个数据集上实现了sota,但仍然低于WebText。模型中的示例反映了这些改进,并包含连贯的文本段落。这些发现为构建语言处理系统提供了一条很有前途的道路,该系统可以从自然发生的演示中学习执行任务。


方法


概述

学习单个任务可以在概率框架中表示为估计一个条件分布




p


(


o


u


t


p


u


t





i


n


p


u


t


)



p(output|input)


p(outputinput)
。既然一个通用的系统应该能解决各种不同的任务,所以我们在考虑条件的时候不仅是通常的输入,还要考虑到任务本身,表示成公式为




p


(


o


u


t


p


u


t





i


n


p


u


t


,


t


a


s


k


)



p(output|input,task)


p(outputinput,task)
,语言模型提供了一种灵活的方式来将任务、输入和输出全部指定为一系列统一符号。举个例子,翻译训练示例可以写成序列(translate to french, english text, french text),同样,阅读理解训练示例可以写成(answer the question, document, question, answer)。
我们认为,由于有监督目标与无监督目标相同,但仅在序列的子集上进行评估,因此无监督目标的全局最小值也是有监督目标的最小值。初步实验证实,在这种玩具般的设置中,足够大的语言模型能够执行多任务学习,但学习速度比显式监督方法慢得多。


训练数据

大多数之前的工作训练的模型都是在一个特定的领域上,如新闻,维基百科,小说等。我们的方法促使构建尽可能大且多样的数据集,以便在尽可能多的领域和上下文中收集自然语言任务演示。
一个有前途的多样性和几乎无限的文本来源是诸如Common Crawl之类的网页抓取。虽然这些存档比当前的语言建模数据集大很多数量级,但它们存在严重的数据质量问题。Trinh&Le(2018)在他们关于常识推理的工作中使用了Common Crawl,但注意到大量文档“其内容大多难以理解”。我们在使用Common Crawl的初始实验中观察到了类似的数据问题。Trinh&Le(2018)的最佳结果是使用Common Crawl的一个子样本获得的,该样本仅包含与目标数据集Winograd Schema Challenge最相似的文档。虽然这是一种提高特定任务绩效的实用方法,但我们希望避免对要提前执行的任务做出假设。(个人认为这样是容易过拟合)
相反,我们创建了一个新的web抓取,强调文档质量。为了做到这一点,我们只对人类策划/过滤过的网页进行了抓取。手动过滤一个完整的网络抓取将非常昂贵,因此作为一个起点,我们从社交媒体平台Reddit抓取了所有的出站链接,该每个链接至少收到了3个karma。这可以被认为是一个启发式指标,用于判断其他用户是否觉得链接有趣、有教育意义或只是好玩。
生成的数据集WebText包含这4500万个链接的文本子集。为了从HTML响应中提取文本,我们使用了Dragnet(Peters&Leocq,2013)和Newspaper 1内容提取器的组合。本文中的所有结果都使用了WebText的初步版本,该版本不包括2017年12月之后创建的链接,并且在重复数据消除和一些基于启发式的清理之后,包含了略超过800万个文档,总共40GB的文本。我们从WebText中删除了所有Wikipedia文档,因为它是其他数据集的通用数据源,并且由于训练数据与测试评估任务重叠,可能会使分析变得复杂。


输入表示

字节对编码(BPE)(Sennrich等人,2015)是字符和单词级语言建模之间的一个实用中间点,它有效地在频繁符号序列的单词级输入和不频繁符号序列字符级输入之间进行插值。
这种输入表示允许我们将word-levl LMs的经验优势与byte-lebel方法的通用性结合起来。由于我们的方法可以为任何Unicode字符串分配概率,因此无论预处理、标记化或vocab大小如何,这都允许我们在任何数据集上评估LMs。


模型结构

GPT2和GPT1的模型结构也是非常相似的,不过还是做了一些优化,包括LayerNorm层的前置,在最后的transformer层后加了个LayerNorm,如下图所示:
在这里插入图片描述
除此之外,我们将残差层在初始化时的权重因子设置成了




1


/



N




1/\sqrt{N}


1/N


,其中




N



N


N
是残差层数,词表大小扩展成50257,文本最大长度从512增加到1024,以及使用了更大的batchsize(512)。


实验

我们训练了四个具有大致对数均匀间隔大小的模型,并对其进行了基准测试。表2总结了体系结构。最小的模型相当于原始GPT,第二个最小的模型等同于BERT的最大模型(Devlin等人,2018)。我们最大的模型,我们称之为GPT-2,其参数比GPT多了一个数量级。每个模型的学习率都是手动调整的,以便在5%的WebText样本上获得最佳困惑。所有的模型仍然在WebText数据上欠拟合,我们可能需要更多的训练时间。


语言模型

GPT2本质上还是一个语言模型,所以我们希望在一些常见的公开zero-shot任务上和当前的sota模型进行比较,详情见下表所示:
在这里插入图片描述
可以看到,在很多任务上GPT2的效果遥遥领先,这表示在基于transformer的更大语言模型和更多的训练语料确实能够取得更好的效果。


Children’s Book Test(CBT)

CBT主要是为了检测语言模型在以下识别任务中的表现:命名实体、名词、动词、介词。CBT不以困惑度作为评价指标,而是评估自动构建的完形填空测试的准确性,其任务是预测遗漏的10个“选择”中的哪一个是正确的。遵循原始论文中介绍的LM方法,我们根据LM计算每个选择的概率以及基于该选择剩余句子的概率,并预测概率最高的一个。如下图所示,分别是GPT2在名词和命名实体任务下效果:
在这里插入图片描述


LAMBADA

LAMBADA数据集(Paperno等人,2016)测试了系统对文本中的长期依赖性建模的能力。任务是预测句子的最后一个单词,人类需要至少50个上下文标记才能成功预测。


Winograd Schema Challenge(WSC)

WSC数据集(Levsque等人,2012)旨在通过系统解决文本歧义的能力来测量其在常识推理上的效果。最近,Trinh&Le(2018)使用语言模型,通过预测具有更高概率的歧义解决,在这一挑战上取得了巨大的成果。我们的效果如下图所示:
在这里插入图片描述


Reading Comprehension

对话问答数据集(CoQA)Reddy等人(2018)由来自7个不同领域的文档组成,将提问者和回答者之间关于文档的自然语言对话配对。CoQA测试阅读理解能力,以及模型回答依赖于对话历史的问题的能力(例如“Why?”)


Summarization

我们测试了GPT-2在CNN和每日邮报数据集上执行摘要的能力(Nallapati等人,2016),结果如下表所示:
在这里插入图片描述


Translation

我们在WMT-14英-法数据集上测试了GPT2的机器翻译能力,无论是英语翻法语还是法语翻英语,GPT2都比当前sota模型有较大差距。但令人惊讶的是,GPT2的训练语料在预处理时专门过滤掉了非英文网页。为了证实这一点,我们在WebText上运行了一个字节级语言检测器,该检测器仅检测到10MB的法语数据,比先前无监督机器翻译研究中常见的单语法语语料库小约500倍。


Question Answering

测试语言模型中包含哪些信息的一种潜在方法是评估它生成事实类问题正确答案的频率。从结果来看,GPT-2的性能仍然比将信息检索与提取文档问答相结合的开放域问答系统的30%到50%范围差得多(Alberti等人,2019)。 但GPT仍然有很大潜力。


Generalization vs Memorization

计算机视觉的最新研究表明,常见的图像数据集包含大量的近似重复的图像。例如,CIFAR-10在列车图像和测试图像之间有3.3%的重叠。这导致了对机器学习系统泛化性能的过度报道。随着数据集大小的增加,这个问题变得越来越可能,这表明类似的现象可能发生在WebText上。因此,分析有多少测试数据也出现在训练数据中是很重要的。
为了研究这个问题,我们创建了包含 8-grams WebText训练集标记的Bloom filter。为了提高召回率,字符串被规范化为只包含小写字母数字单词,并使用单个空格作为分隔符。Bloom filter的构造使得 the false positive rate 上限为




1


/


1



0


8




1/10^8


1/108
通过生成1M字符串进一步验证了 the low false positive rate,其中0个字符串被filter发现。

在给定一个数据集时,Bloom filter让我们可以计算来自于这些数据集的8-grams 也存在于WebText训练集中的百分比。表6显示了公共LM基准测试集的这种重叠分析。普通LM数据集的测试集与WebText训练集的重叠率在1-6%之间,平均重叠率为3.2%。有些令人惊讶的是,许多数据集与它们自己的训练分割有更大的重叠,平均重叠率为5.9%。
在这里插入图片描述


Discussion

目前有许多研究致力于学习、理解和批判性评估有监督和无监督的预训练方法。我们的研究结果表明,无监督任务学习是一个很有前途的研究领域。这些发现可能有助于解释针对下游NLP任务的预训练技术的广泛成功,因为我们认为,在极限条件下,这些预训练技术能够直接解决各种任务,而无需监督适应或修改。

在阅读理解中,GPT-2在zero-shot环境下的表现与有监督的baseline相竞争。然而,在总结等其他任务上,虽然它能够执行任务,但根据量化指标,它的性能仍然只是初级的。虽然研究结果具有一定的启发性,但从实际应用来看,GPT-2的zero-shot的表现还远远不能满足要求。


Conclusion

当一个大型语言模型被训练在一个足够大和多样的数据集上时,它能够在许多域和数据集上表现良好。在八分之七的测试语言模型数据集上,GPT-2 zero-shot 到最先进的性能。该模型能够在zero-shot setting下执行的任务的多样性表明,经过训练以使文本语料库充分变化的可能性最大化的高容量模型开始学习如何执行数量惊人的任务,而不需要明确的监督。







推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 开发笔记:(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • x86 linux的进程调度,x86体系结构下Linux2.6.26的进程调度和切换
    进程调度相关数据结构task_structtask_struct是进程在内核中对应的数据结构,它标识了进程的状态等各项信息。其中有一项thread_struct结构的 ... [详细]
  • 本文整理了Java中org.apache.pig.backend.executionengine.ExecException.<init>()方法的一些代码 ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了10分钟了解Android的事件分发相关的知识,希望对你有一定的参考价值。什么是事件分发?大家 ... [详细]
author-avatar
吴静爽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有