大语言模型系列-GPT-2

文章目录

  • 前言
  • 一、GPT-2做的改进
  • 二、GPT-2的表现
  • 总结

前言

《Language Models are Unsupervised Multitask Learners,2019》

前文提到,GPT-1利用不同的模型结构微调初步解决了多任务学习的问题,但是仍然是预训练+微调的形式,GPT-1在未经微调的任务上有一定效果(zero-shot ),但是其泛化能力远远低于经过微调的有监督任务,GPT-2主要基于该点进行了改进。

ps:GPT1:发现预训练模型具有 zero-shot 的能力,并且能随着预训练的进行不断增强。为了进一步验证 zero-shot 的能力,OpenAI 在 GPT-1 提出一年后,推出了 GPT-2。

GPT-2的目标旨在训练一个泛化能力更强的词向量模型,它并没有对GPT-1的网络进行过多的结构的创新与设计,只是使用了更多的网络参数(1.5B)和更大的数据集。

GPT-2 的核心思想就是,当模型的容量非常大且数据量足够丰富时,仅仅靠语言模型的学习便可以完成其他有监督学习的任务,不需要在下游任务微调。即为多任务学习,和T5类似。

也就是说所有的有监督学习都是无监督语言模型的一个子集。例如当模型训练完“Micheal Jordan is the best basketball player in the history”语料的语言模型之后,便也学会了(question:“who is the best basketball player in the history ?”,answer:“Micheal Jordan”)的Q&A任务。

few-shot:在模型做预测的时候,给模型少量标注后的优质样本来作为条件。(如GPT-3)
one-shot:和few-shot类似,但是只允许看到一个样本。
zero-shot:和one-shot类似,但是不允许看到任何样本。直接做预测。(如GPT-2)

ps:few-shot、one-shot、zero-shot均在推理输入阶段起作用,不会更新梯度,举例如下:

  • few-shot:“这个任务要求将中文翻译为英文。你好->hello,再见->goodbye,购买->purchase,销售->”
  • one-shot:“这个任务要求将中文翻译为英文。你好->hello,销售->”
  • zero-shot:“这个任务要求将中文翻译为英文。销售->”

一、GPT-2做的改进

  1. 去掉了fine-tuning层: 不再针对不同任务分别进行微调建模,即不定义这个模型应该做什么任务,模型自动识别需要做什么任务。就像T5的text to text。
  2. Larger Dataset: WebText,GPT-2收集了更加广泛、数量更多的语料组成数据集。该数据集包含800万个网页,大小为40G
  3. Larger Model: GPT-2将Transformer堆叠的层数从12层增加到48层,隐层的维度为1600,参数量达到了15亿(Bert的参数量3亿、T5参数量110 亿)。
  4. Larger dictionary,larger sequnece length and larger batch size。 GPT-2将词汇表数量增加到50257个;最大的上下文大小 (context size) 从GPT的512提升到了1024 tokens;batchsize增加到512。
  5. 调整LN层:将layer normalization放到每个sub-block之前,并在最后一个Self-attention后再增加一个layer normalization。
  6. 初始化:修改初始化的残差层权重,维缩放为原来的 1 / N 1/ \sqrt N 1/N ,其中N是残差层的数量。

二、GPT-2的表现

  1. 在8个语言模型任务中,仅仅通过zero-shot学习,GPT-2就有7个超过了state-of-the-art的方法;
  2. 在“Children’s Book Test”数据集上的命名实体识别任务中,GPT-2超过了state-of-the-art的方法约7%;
  3. “LAMBADA”是测试模型捕捉长期依赖的能力的数据集,GPT-2将困惑度从99.8降到了8.6;
  4. 在阅读理解数据中,GPT-2超过了4个baseline模型中的三个;
  5. 在法译英任务中,GPT-2在zero-shot学习的基础上,超过了大多数的无监督方法,但是比有监督的state-of-the-art模型要差;
  6. GPT-2在文本总结的表现不理想,但是它的效果也和有监督的模型非常接近。

总结

先看一下GTP2在不同数据集上的精度:
在这里插入图片描述

ps:模型精度指标:

  • PPL(Perplexity,困惑度):在自然语言处理中,语言模型的任务是对给定的文本序列进行概率估计,即根据先前的单词预测下一个单词的概率。困惑度提供了一个衡量语言模型对给定文本序列预测的不确定性程度的度量。
    具体来说,困惑度是对模型在给定数据集上的概率分布进行评估的指标。在一个给定的文本序列上,困惑度是一个标量值,表示模型对该序列的预测的平均困惑程度,即模型认为该序列所对应的概率的逆数。困惑度越低,表示模型在给定的序列上的预测越准确,模型对数据集的拟合程度越好。
    在这里插入图片描述
    即, P P L = 2 H ( P , Q ) PPL=2^{H(P,Q)} PPL=2H(P,Q) H ( P , Q ) = − ∑ x P ( x ) l o g Q ( x ) H(P,Q)=-\sum_xP(x)logQ(x) H(P,Q)=xP(x)logQ(x),预测序列Q和真实序列P
  • ACC(Accuracy,准确率):衡量模型在指定任务上(完形填空任务、文本分类任务等)的准确率。
    在这里插入图片描述
  • BPC(Bits Per Character,每字符比特数):BPC 是一种衡量模型性能的指标,用于评估模型生成文本的效率和质量。BPC 衡量了模型生成的文本与真实文本之间的差异,其计算方式通常是使用交叉熵损失(Cross Entropy Loss)除以每个字符的比特数。这个值越低,表示模型生成的文本越接近真实文本,模型的性能越好。
    在这里插入图片描述

ps:数据集解释:

  1. LAMBADA:LAMBADA是一个用于语言模型评估的数据集,其中包含了来自小说文本的句子。任务是给定前文并要求模型预测下一个单词,但这些句子在结尾处被截断,要求模型在没有上下文线索的情况下进行预测。即英文完形填空模式:
    在这里插入图片描述
  2. CBT-CN 和 CBT-NE:CBT(Children’s Book Test)是一个用于测试机器阅读理解的数据集,由Facebook于2016年提出。任务是从一本儿童读物中选出21个连续的句子。然后,将前20个句子视为上下文,然后推断第21个句子中缺少的单词。CBT-CN(Children’s Book Test-Chinese)和CBT-NE(Children’s Book Test-Natural Language Explanation)是CBT的中文版本和自然语言解释版本。
  3. WikiText2 和 WikiText103:WikiText是从维基百科收集的用于语言模型预训练和评估的数据集。WikiText2是包含较小语料库的版本,而WikiText103是包含较大语料库的版本。(其中的文本被用来训练模型以预测下一个单词或字符,即在给定先前的文本序列后预测下一个单词或字符的概率。)
  4. PTB(Penn Treebank):PTB是一个常用的用于语言建模和序列预测任务的数据集,包含了华尔街日报的文章。
  5. enwik8 和 text8:这是两个常用的用于字符级别语言建模任务的数据集。enwik8是维基百科的一个子集,而text8是enwik8的一个更小的子集,用于快速训练和评估模型。
  6. 1BW:1BW是一个用于预训练语言模型的数据集,包含来自互联网的多语言文本,总计约10亿字节。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring高级】第2讲:容器实现类

目录 BeanFactory实现BeanDefinition后置处理器单例bean创建后置处理器顺序总结 ApplicationContext实现ClassPathXmlApplicationContextFileSystemXmlApplicationContextAnnotationConfigApplicationContextAnnotationConfigServletWebServerApplicationContext BeanFactory实…

Ubuntu环境配置-LinuxQQ篇

本教程下载Linux QQ的版本是linuxqq_3.0.0-571_amd64.deb 一、下载LinuxQQ 直接使用wget命令下载链接,下载文件 wget https://dldir1.qq.com/qqfile/qq/QQNT/c005c911/linuxqq_3.0.0-571_amd64.deb 二、安装LinuxQQ 当下载完成后,运行命令:…

图像锐化-拉普拉斯算子 Sobel算子

算子解释 广义的讲,对任何函数进行某一项操作都可以认为是一个算子,甚至包括求幂次,开方都可以认为是一个算子,只是有的算子我们用了一个符号来代替他所要进行的运算罢了,所以大家看到算子就不要纠结,他和f…

Sentinel 规则持久化,基于Redis持久化【附带源码】

B站视频讲解 学习链接🔗 文章目录 一、理论二、实践2-1、dashboard 请求Redis2-1-1、依赖、配置文件引入2-1-2、常量定义2-1-3、改写唯一id2-1-4、新Provider和Publisher2-1-5、改写V2 2-2、应用服务改造2-2-1、依赖、配置文件引入2-2-2、注册监听器 三、源码获取3…

Talk|加州大学圣地亚哥分校程旭欣:视觉反馈下足式机器人的全身操作与运动

本期为TechBeat人工智能社区第576期线上Talk。 北京时间3月6日(周三)20:00,加州大学圣地亚哥分校博士生—程旭欣的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “视觉反馈下足式机器人的全身操作与运动”,向大家系统地介绍…

智能驾驶规划控制理论学习07-规划算法整体框架

一、解耦合策略 1、路径-速度解耦策略概述 路径-速度解耦指的是将车辆的运动分成路径规划和速度规划两部分,对两个部分分别进行研究。 路径规划: 假设环境是“静态的”,将障碍物投射到参考路径上,并规划一条避开它们的路径&…

【C语言】linux内核napi_gro_receive和netif_napi_add

napi_gro_receive 一、注释 // napi_gro_receive是网络设备接口的一个函数,它被NAPI(New API)网络轮询机制使用,用于接收和处理接收到的数据包。 // 这个函数通过通用接收分组(GRO,Generic Receive Offlo…

Ubuntu安装conda以后,给jupyter安装C++内核

前言 大家都知道,jupyter notebook 可以支持python环境,可以在不断点调试的情况下,打印出当前结果,如果代码错了也不影响前面的内容。于是我就想有没有C环境的,结果还真有。 参考文章: 【分享】Ubuntu安装…

【金三银四的季节看下Java ORM的走向和性能对比】总结

写在最后 经过将近一周时间的框架收集、学习、实验、编码、测试市面上常见的ORM框架,过程中拜读了很多作者的博文、样例,学习很多收获很多。 重新梳理下整理的框架:mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、…

什么是工业交换机?

如今,工业交换机在能源、环保、交通、智慧城市监控等各个行业都发挥着至关重要的作用,其需求也日益增长。本文将全面介绍工业交换机,帮助你进一步加深了解。 什么是工业交换机? 工业交换机,又称工业以太网交换机&…

《探索自动驾驶技术的前景与挑战》

自动驾驶技术,作为现代科技的一大突破,正逐渐改变着我们的交通方式、生活方式以及整个社会结构。本文将围绕自动驾驶技术的现状、优势、局限性以及未来发展趋势展开探讨。 自动驾驶技术的现状概述 自动驾驶技术作为当今科技领域的一项前沿技术,已经取得了巨大的进展并在不同…

安卓开发之资源概述、优劣分析与优化方案

摘要 随着智能手机的普及,Android操作系统已成为全球最广泛使用的移动平台之一。在Android应用开发中,资源管理是构建高效、响应迅速且用户友好的应用程序的关键要素。 本文主要探讨了安卓应用程序开发过程中的资源管理机制,包括其基本结构、…

一键清除JavaScript代码中的注释:使用正则表达式实现

这个正则表达式可以有效地匹配 JavaScript 代码中的各种注释&#xff0c;并且跳过了以 http: 或 https: 开头的链接。 /\/\*[\s\S]*?\*\/|\/\/[^\n]*|<!--[\s\S]*?-->|(?<!http:|https:)\/\/[^\n]*/gvscode 实战&#xff0c;ctrlF 调出查找替换工具&#xff0c;点…

如何把网页调用变为代码调用

1.背景 最近有一个需求&#xff0c;猜测一段十六进制流的校验方式&#xff0c;挨个尝试非常耗时&#xff0c;需要写代码&#xff0c;调用网页上的功能。 2.解决方案 可以使用Python的 requests 库来发起HTTP请求&#xff0c;并通过POST请求将数据发送给服务器进行计算CRC校验和…

【备战蓝桥杯系列】Java组国二选手笔记一:蓝桥杯中的常用语法特性

蓝桥杯Java国二选手笔记一&#xff1a;蓝桥杯中的常用语法特性 前言 参加了好几次蓝桥杯了&#xff0c;C组参加了&#xff0c;Java也参加过&#xff0c;也会用python刷算法。下面给出常用的Java语法特性在蓝桥杯中的使用&#xff0c;以及常见的需要注意的Java语法规范。有准备…

【MySQL】-知识点整理

1、存储引擎 -- 查询数据库支持的存储引擎 show engines; -- 查询当前数据库使用的存储引擎 show variables like %storage_engines%; 主要的存储引擎说明&#xff1a; 1&#xff09;MyISAM&#xff1a;无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表…

基于el-tree实现懒加载穿梭条

一、关键代码 <template><div><!-- 左侧待选列表 --><div class"left-box"><p>待选列表</p><el-input placeholder"输入关键词过滤" v-model"leftFilterText" clearable/><el-treeref"tree…

便捷在线导入:完整Axure元件库集合,让你的设计更高效!

Axure元件库包含基本的工具组件&#xff0c;可以使原型绘制节省大量的重复工作&#xff0c;保持整个设计页面的一致性和标准化&#xff0c;同时显得专业。Axure元件库就像我们日常生活中的门把手、自行车踏板和桌子上的螺丝钉&#xff0c;需要组装才能使用。作为一名成熟的产品…

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手 Vue模板代码 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue模板</title> </head> <body> <div id"…

redis 性能优化二

前言 性能优化的第二篇文章&#xff0c;将重点讲一下Redis 的响应延迟&#xff0c;响应延迟如何对redis 进行优化。这个延迟不是说一个命令或者几个命令变慢了&#xff0c;延迟了几秒&#xff0c;就说Redis 变慢了。在不同的软硬件环境下&#xff0c;Redis 本身的绝对性能并不…