当前位置: 首页 > article >正文

经典大语言模型解读(3):参数量更大、泛化性能更强的生成式模型GPT-2

概述

在GPT-1的基础上,OpenAI提出了包含15亿参数(GPT-1参数量的10倍以上)的GPT-2模型。该模型在一个更大规模的文本数据集WebText上进行预训练。与GPT-1依赖特定任务上的有监督微调来提升性能不同,GPT-2具备更强的零样本(zero shot)学习能力,能在未专门微调的任务上表现出色。

Zero shot learning(零样本学习):模型能够在没有见过特定类别训练数据的情况下识别新类别。

GPT-2框架

训练数据

大多数先前的工作都在单一文本领域上(新闻文章、维基百科等)训练语言模型。为此,本文构建了一个更大,更多样性的数据集WebText,该数据集中包含了超过800万个文档,总数据量达到了40GB。

输入表示

GPT-2采用Byte Pair Encoding(BPE)方式来对文本进行编码,BPE 是一种常用于压缩和处理自然语言的算法,它通过反复合并最频繁出现的字符对,将词汇分割为子词单元,以生成固定大小的词汇表。这种方法使模型可以处理常见词、罕见词,甚至是未见过的词。

关于BPE,维基百科给出了一个很好的示例。假定要编码的数据为:

aaabdaaabac

其中字节对aa出现的最频繁,因此它将被数据中未使用的字节替换,例如Z。替换结果如下:

ZabdZabac
Z=aa

之后可以看出ab出现的最频繁,采用同样的方式,用Y来替换它:

ZYdZYac
Y=ab
Z=aa

剩下的唯一字节对ac仅出现一次,编码可以在此处停止。或者,可以继续进行压缩编码,即将出现多次的ZYX来替换:

XdXac
X=ZY
Y=ab
Z=aa

该数据无法通过字节对编码进一步压缩,压缩过程结束。在解压时,只需按相反顺序执行替换即可。

需要注意的是,GPT-2对BPE进行了改进。文中指出,BPE 包含了许多常见单词的不同版本,比如 dog,因为它们在很多变体中出现,如 dogdog!dog?。这导致了有限词汇槽和模型容量的次优分配。为了避免这种情况,GPT-2阻止 BPE 在任何字节序列中跨字符类别进行合并。但空格例外,这显著提高了压缩效率。

模型

GPT-2的架构仍然是基于Transformer解码器,但对Transformer进行了一些的修改:

  • Layer Normalization被移动到每个子模块的输入,并在最后的自注意块之后添加额外的Layer Normalization。
  • 在初始化时按 1 / N 1/\sqrt{N} 1/N 的比例缩放残差层的权重,其中 N N N 为残差层的数量。
  • 词汇扩展到 50 , 257 50,257 50,257
  • 上下文长度从 512 512 512增加到 1024 1024 1024,这意味着GPT-2 能够处理更长的文本片段,从而在生成和理解长文本时表现更好。
  • 使用了更大的批处理大小 512 512 512

在实验中设置了4中不同容量的模型版本,具体见下图,其中参数量最小的模型相当于GPT-1,第二小的模型相当于BERT的最大模型,参数量最大的模型被称之为GPT-2。

GPT-2-Model-Size

结语

GPT-2通过将参数数量提升一个数量级,采用字节对编码(BPE)技术进行文本编码,并在更广阔的数据集上进行预训练,同时在训练过程中将上下文长度增加了一倍。这些改进显著增强了GPT-2相对于其前身GPT-1的文本生成能力。
以上便是本文的全部内容,若是觉得不错可以支持一下博主,你们的支持是博主更新的不竭动力。若是有任何问题也敬请批评指正。


http://www.kler.cn/news/315981.html

相关文章:

  • 低代码开发平台系统架构概述
  • js进阶——函数作用域和块作用域
  • 卷积神经网络(CNN):深度学习中的视觉奇迹
  • 【论文阅读】Benchmarking Retrieval-Augmented Generation for Medicine
  • Redis 持久化数据
  • 【详细解答】指出下面指令的错误:IN AL,300H
  • MySQL高阶1939-主动请求确认消息的用户
  • 占用消防通道监测摄像机
  • MyBatis-Plus 插件扩展
  • linux强制关闭再启动后zookeeper无法启动
  • 使用Python免费将pdf转为docx
  • JVM频繁Full GC问题的排查与解决方案
  • 展锐平台的手机camera 系统开发过程
  • 2024年最新前端工程师 TypeScript 基础知识点详细教程(更新中)
  • Java启动Tomcat: Can‘t load IA 32-bit .dll on a AMD 64-bit platform报错问题解决
  • 【小沐学GIS】blender导入OpenStreetMap城市建筑(blender-osm、blosm)
  • 数据要素如何重塑企业价值?
  • SpringBoot开发——Spring Boot Controller 最佳实践
  • 数据库 - MySQL介绍
  • 离职员工客户如何管理?解锁2024企业微信新功能
  • 清空当前机器所有Docker容器和镜像
  • C#通过键盘钩子实现二维扫描枪传输数据的接收
  • 亮相世界制造业大会,智象未来(HiDream.ai)揭示产业发展新趋势
  • python爬虫:将知乎专栏文章转为pdf
  • JMeter(需要补充请在留言区发给我,谢谢)
  • Mysql梳理7——分页查询
  • 经验笔记:Python 脚本打包为可执行文件(.exe)
  • 「Java开发指南」如何用MyEclipse搭建Adobe和Spring Flex?(二)
  • 自由切换存储方式:本地 or OSS
  • 《深度学习》卷积神经网络CNN 原理及其流程解析