深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-2与Zero-shot Learning

news2024/12/23 23:17:02

分类目录:《深入理解深度学习》总目录
相关文章:
· GPT(Generative Pre-Trained Transformer):基础知识
· GPT(Generative Pre-Trained Transformer):在不同任务中使用GPT
· GPT(Generative Pre-Trained Transformer):GPT-2与Zero-shot Learning
· GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning


N-shot Learning

在介绍GPT的第二代模型GPT-2之前,先来介绍机器学习中的三个概念:Zero-shot Learning(零样本学习)、One-shot Learning(单样本学习)和Few-shot Learning(少样本学习)。深度学习技术的迅速发展离不开大量高质量的数据,但在很多实际应用场景中,获取大量的高质量数据非常困难,所以模型能从少量样本中学习规律并具备推理能力是至关重要的。人类具有极其良好的小样本学习能力,能从少量数据中提炼出抽象概念并推理应用,这也是机器学习未来最主要的发展方向,这个研究方向就是N-shot Learning,其中字母N表示样本数量较少。具体而言,N-shot Learning又分为Zero-shot Learning、One-shot Learning和Few-shot Learning,三者所使用的样本量依次递增。

Zero-shot Learning是指在没有任何训练样本进行微调训练的情况下,预训练语言模型就可以完成特定的任务。用一个形象的例子解释:爸爸拿了一堆动物卡片教小维认识卡片中的动物,小维拿起一张画着马的卡片,爸爸告诉他,这就是马。之后,小维又拿起了画着老虎的卡片,爸爸告诉他:“看,这种身上有条纹的动物就是老虎。”爸爸拿起了画有熊猫的卡片,对小维说:“你看熊猫是黑白色的。”然后,爸爸给小维安排了一个任务,让他在卡片里找一种他从没见过的动物——斑马,并告诉小维有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小维根据爸爸的提示,找到了画有斑马的卡片。One-shot Learning是指在仅有一个训练样本进行微调训练的情况下,预训练语言模型就可以完成特定的任务。用一个形象的例子解释:爸爸拿了一张柴犬的卡片给小维,告诉他:“这是柴犬,是犬类的一种。”然后爸爸给了小维三张卡片,卡片上分别画有橘猫、东北虎和金毛,让小维指出哪张卡片上的动物属于犬类,小维根据柴犬的特征,指向画有金毛的卡片。Few-shot Learning是指在仅有少量训练样本进行微调训练的情况下,预训练语言模型就可以完成特定的任务。同样用一个形象的例子解释:爸爸拿了五张分别画有柴犬、柯基、边牧、哈士奇和阿拉斯加的卡片,告诉小维,这些都属于犬类,然后给了小维三张卡片,分别画有橘猫、东北虎和金毛,让小维指出哪张卡片上的动物属于犬类,小维根据已有的五张犬类卡片的特征,指向画有金毛的卡片。近年来,面向N-shot Learning的研究发展极为迅速,出现了基于度量的元学习、图网络等方法。本文和后续的文章就借助Zero-shot Learn-ing、One-shot Learning、Few-shot Learning的概念来呈现GPT系列模型的一些特性。

GPT-2的核心思想

GPT-2的核心思想并不是通过二阶段训练模式(预训练+微调)获得特定自然语言处理任务中更好的性能,而是彻底放弃了微调阶段,仅通过大规模多领域的数据预训练,让模型在Zero-shot Learning的设置下自己学会解决多任务的问题。与之相对的是,在特定领域进行监督微调得到的专家模型并不具备多任务场景下的普适性。GPT-2的惊艳之处在于,它展示了语言模型在Zero-shot Learning设置下依然能够很好地执行各种任务的能力与潜力,证明了自然语言处理领域通用模型的可能性。GPT-2在多个特定领域的语言建模任务(给定词序列,预测下一个词)上均超越了当前最佳的模型的性能,而在此之前,这些任务的最佳表现均来自特定领域数据集上微调训练得到的专家模型。GPT-2并没有使用任务提供的特定领域的训练集进行训练甚至微调,而是直接在这些任务的测试集上进行评估。让人惊讶的是,GPT-2在这些语言建模任务上的表现优于以往的专家模型的表现,在某些任务上的性能提升非常显著。

在问答、阅读理解及自动摘要等具有不同输入和输出格式的语言任务中,GPT-2直接采用与GPT一致的输入数据转换方式,得到了令人惊艳的结果。虽然性能无法与专家模型相比,但是从论文给出的模型参数与任务性能趋势图来看,现有的GPT-2模型存在巨大的上升空间。如下图所示,从左至右分别是GPT-2在Zero-shot Learning设置下在阅读理解、机器翻译、摘要生成及开放式问答这4个任务上的表现。虽然GPT-2在Zero-shot Learning设置下的表现远不如SOTA模型,但基本超越了简单模型。除了摘要生成任务,GPT-2在其余三个任务上都表现出了性能随模型规模的增大而提升的趋势,且提升十分明显。这意味着若继续扩大GPT-2的规模,其性能还能提升。
在Zero-shot Learning设置下,GPT-2在4个任务上的表现

GPT-2模型结构

与第一代GPT模型相比,GPT-2在模型结构上的改动极小。在复用GPT的基础上,GPT-2做了以下修改:

  • LN层被放置在Self-Attention层和Feed Forward层前,而不是像原来那样后置
  • 在最后一层Transformer Block后新增LN层
  • 修改初始化的残差层权重,缩放为原来的 1 N \frac{1}{\sqrt{N}} N 1。其中, N N N是残差层的数量
  • 特征向量维数从768扩大到1600,词表扩大到50257
  • Transformer Block的层数从12扩大到48。GPT-2有4个不同大小的模型,它们的参数设置如下表所示
总参数量层数特征向量维数
117M12768
345M241024
762M361280
1542M481600

其中最小的模型其实就是第一代GPT,参数量也达到了1.17亿;而参数量高达15亿的最大模型,一般被称为GPT-2。模型扩大了10多倍,意味着需要增加足够的数据量,否则会出现欠拟合现象。第一代GPT使用的训练语料是BookCorpus数据集,包含超过7000本未出版的书籍。GPT-2使用的训练语料是从800多万个网页中爬取到的单语数据,数据量是第一代GPT所使用数据量的10多倍,而来自众多网页的语料,涵盖了各个领域、各种格式的文本信息,在一定程度上提升了GPT-2在Zero-shot Learning设置下处理特定任务的能力。GPT-2的不俗表现,证明它是一个极其优秀的预训练语言模型,虽然OpenAI并没有给出GPT-2微调后在各下游任务中的表现,但可以预期的是,其效果一定很好,在监督微调阶段的训练方式与第一代GPT并无差别。

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

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

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

相关文章

软考:软件工程:软件维护与项目管理

软考:软件工程:软件维护与管理 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &…

如何挑选合格的在线教育解决方案?

现在市面上的知识付费系统繁多,你可以说百花齐放,也可以说良莠不齐,如果不具备一定的专业素养,根本就无法从中挑选出真正的好产品,劣币驱逐良币反而成为常态。 本文将从几个常见维度分析一个好产品应该具备的基本要素…

CSS基础总结

CSS基础总结 CSS基础总结基础认知基础选择器**选择器的作用**标签选择器类选择器id选择器**通配符选择器** 字体和文本样式字体样式字体大小:font-size字体粗细:font-weight字体样式:font-style字体类型:font-family字体类型&…

【MYSQL篇】mysql性能优化总结

前言 说到MYSQL性能调优,大部分时候想要实现的目标是让我们的查询更快。一个查询的动作又是由很多个环节组成的,每个环节都会消耗时间,我们要减少查询所消耗的时间,就要从每一个环节入手。 关于MYSQL的sql语句执行流程&#xff0…

ARM-驱动/总结一

Linux设备驱动 驱动:能够控制硬件实现特定功能的软件代码就是驱动 ARM裸机驱动和驱动区别? ARM裸机驱动是不基于操作系统的软件代码,通常这份代码都是有开发者独立编写完成的。 驱动是基于内核(Linux)架构的基础上的…

chatGPT 指南:秒变 Excel 大神

Excel 是一款功能强大的电子表格软件,而 ChatGPT 则是一种智能语言模型,可以为 Excel 用户提供帮助和指导。本文将探讨 Excel 与 ChatGPT 的关系,并从初级、中级和高级 Excel 用户三个层次,介绍如何利用 ChatGPT 来提升 Excel 技能…

leetcode416. 分割等和子集(动态规划-java)

分割等和子集 leetcode416. 分割等和子集题目描述 暴力递归代码演示 动态规划解题思路代码演示 动态规划专题 leetcode416. 分割等和子集 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/partition-equal-subset-sum 题目…

高级数据结构——平衡二叉树(AVL树)

目录 1. 底层结构 2. AVL数的概念 3. AVL树节点的定义 4. 基本框架 5. AVL树的插入 6. AVL树的旋转 6.1 左单旋 6.2 右单旋 6.3 左右双旋 6.4 右左双旋 7. AVL树的验证 8. AVL树的查找 9. AVL树的删除 10. AVL树的性能 11. 总代码 11.1 AVLTree 11.2 Test.c…

mac本地创建ssh key连接github

起因 今天克隆自己github上面的笔记到新电脑上,用http连接进行克隆,然后要我输入账号密码,输入完报了个提示“remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”…

JavaScript 手写代码 第一期

文章目录 1.为什么要手写代码?2.手写代码2.1 手写Object.create()方法2.1.1 基本使用2.1.2 使用实例2.1.3 手写实现 2.2 手写实现instanceof方法2.2.1 基本使用2.2.2 使用实例2.2.3 手写实现 2.3 手写实现new操作符2.3.1 基本使用2.3.2 使用实例2.3.3 手写实现 1.为…

分享一个下载按钮

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>下载按钮</title><link href"https://fonts.googleapis.com/css2?familyHind&amp;d…

Redisson源码-单线程加解锁流程

Redisson源码-单线程加解锁流程 以下源码分析基于redisson-3.17.6版本&#xff0c;不同版本源码会有些许不同需注意。 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.17.6</version>&l…

推荐5 款好用的 Linux 音乐播放器

目前 Linux 上有几十个音乐播放器&#xff0c;这使得找到一个最好用的变成很困难。之前我们已经回顾了其中的一些播放器&#xff0c;如 Cantata&#xff0c;Exaile&#xff0c;甚至不那么出名的 Clementine&#xff0c;Nightingale 和 Quod Libet。 在本篇文章中我将涵盖更多的…

python学习——pandas数据处理 时间序列案例 matplotlib绘图案例

目录 pandas数据处理1.合并数据1) 堆叠合并2) 主键合并3) 重叠合并 2.分组和聚合3.索引和符合索引4.去除重复值5.处理缺失值6.处理离群值7.标准化数据1) 离差标准化函数2) 标准差标准化函数3) 小数定标差标准化函数 8.转换数据--离散处理9.时间序列【案例】时间序列案例案例1&a…

C++测试

开始对C嘎嘎下手&#xff01; 1.有关char数组 定义长度为5&#xff0c;但是实际长度是定义长度减1 突然就想到计网安全中的栈溢出问题了&#xff0c;C语言是不检查你是否越界的&#xff0c;如果通过让实参溢出覆盖掉原程序的返回地址&#xff0c;通过精心控制是可以让计算机执…

高级数据结构——红黑树

目录 1. 红黑树的概念 2. 红黑树的性质 3. 红黑树 6. 红黑树的验证 7. 红黑树的删除 8. 红黑树与AVL数的比较 9. 红黑树的应用 10. 完整代码 10.1 RBTree.h 10.2 test.cpp 1. 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存…

49天精通Java,第37天,可变参数列表

目录 一、可变参数列表二、可变参数列表的优缺点1、优点2、缺点 三、可变参数列表的适用场景1、函数重载2、命令行参数解析3、集合操作4、函数式编程 大家好&#xff0c;我是哪吒。 &#x1f3c6;本文收录于&#xff0c;49天精通Java从入门到就业。 全网最细Java零基础手把手…

SpringBoot 如何使用 @ResponseStatus 注解处理异常状态码

SpringBoot 如何使用 ResponseStatus 注解处理异常状态码 在 SpringBoot 应用程序中&#xff0c;异常处理是一个非常重要的话题。当应用程序出现异常时&#xff0c;我们需要对异常进行处理&#xff0c;以保证应用程序的稳定性和可靠性。除了使用异常处理器外&#xff0c;Sprin…

重新理解微服务之终究绕不过这4个坎之(一)

写在前头 大家曾经有没有遇过日常技术交流的时候&#xff0c;会讨论某某技术之间的关系是什么&#xff0c;某些技术是否应该用到微服务。我相信热爱技术交流的您&#xff0c;就算不是在微服务这里领域&#xff0c;或多或少都会跟其他同行会做一些争议话题的探讨&#xff0c;而…

华为OD机试真题B卷 JavaScript 实现【字符串分隔】,附详细解题思路

一、题目描述 输入一个字符串&#xff0c;请按长度为8拆分每个输入字符串并进行输出&#xff0c;长度不是8整数倍的字符串请在后面补数字0&#xff0c;空字符串不处理。 二、输入描述 连续输入字符串(每个字符串长度小于等于100)。 三、输出描述 依次输出所有分割后的长度…