大语言模型-GPT3-Language Models are Few-Shot Learners

一、背景信息:

GPT3是于2020 年由OpenAI 发布的预训练语言模型。

GPT3在自然语言处理(NLP)任务中表现出色,可以生成连贯的文本、回答问题、进行对话等。

GPT3的网络架构继续沿用GPT1、GPT2的是多层Transformer Decoder改的结构。

GPT3出自Language Models are Few-Shot Learners,语言模型是Few-Shot学习者。

二、整体结构:

更新改动

GPT3继续沿用在GPT2中使用的单向 Transformer Decoder 的结构。其中96层Decoder的GPT3被称作"GPT"

相较于GPT2模型结构,GPT3做了下面几项改动:

  • 模型中的Transformer采用了类似Sparse Transformer 的结构,用以节省模型训练过程中的显存占用。
  • GPT3使用的最长词向量长度为12888。
  • GPT3上下文划窗的窗口大小提升至2048个token。
  • GPT3分别使用了24、32、40、96层的Transformer Decoder。

Sparse Transformer

GPT3在 transformer 层中交替地使用稠密的(alternating Dense Attention)和局部带状稀疏(locally Band sparse Attention)的注意力模式,类似于 Sparse Transformer。

使用 sparse attention 的好处主要有以下两点:

  1. 减少注意力层的计算复杂度: 节约显存和耗时,从而能够处理更长的输入序列;
  2. 具有"局部紧密相关和远程稀疏相关"的特性: 对于距离较近的上下文关注更多,对于距离较远的上下文关注较少;
(1)Sparse Transformer 的两个模式

Sparse Transformer 原文中提到了两种不同模式stride 模式、 fixed 模式。

【stride模式】本质上也是两种基础模式的组合,即带状模式和相对的间隔模式。在多头注意力机制中,不同的头采用不同的基础模式。

【fixed模式】本质上也是两种基础模式的组合,即分块模式和固定的间隔模式。在多头注意力机制中,不同的头采用不同的基础模式。

stride模式是这样的,在二维空间中定义分解注意模式的一种自然方法是,让一个头关注位置L之前的元素(行),另一个头关注每第L个位置(列),其中L是步幅,选择接近np。

(2)Band Attention

带状稀疏注意力,也被称为滑动窗口注意力。

带状注意力假设:一个元素(或令牌、像素等)与其邻近元素的关联性通常要比与远处元素的关联性更强。因此,限制每个查询仅关注其邻近节点是一种自然且有效的方式。

因此,带状注意力通过将注意力限制在一个局部区域内,显著减少了计算量。因为它只计算和存储那些可能高度相关的元素对之间的关系。此外,这种方法还能帮助模型更加聚焦于局部上下文,这在很多任务中是非常有益的,比如在处理语言时捕捉短语层面的依赖关系,或在处理图像时关注局部特征。

(3)稀疏注意力(Sparse Attention)的理解

自注意力(Self-Attention)机制是Transformer模型核心组成部分,它允许模型在处理序列数据时动态地关注序列中的不同部分。

然而,随着序列长度的增加,标准的自注意力机制的计算复杂度和内存需求也会指数增加,这限制了模型处理长序列数据的能力。

稀疏注意力(Sparse Attention)机制的提出就是为了解决这个问题。

稀疏注意力机制的核心思想是在自注意力计算中引入稀疏性,即不是让序列中的每个位置都与其他所有位置进行注意力计算,而是仅选择部分位置进行计算。这种选择可以基于不同的策略,例如固定的模式(如局部窗口)、基于内容的选择(如与当前位置最相关的其他位置),或者是通过学习得到的模式。通过这种方式,稀疏注意力机制减少了计算量和内存占用,使得模型能够更高效地处理长序列。

dense attention:每个 token 之间两两计算 attention,复杂度 O(n²)

sparse attention:每个 token 只与其他 token 的一个子集计算 attention,复杂度 O(n*logn)

一般sparse attention 除了相对距离不超过 k 以及相对距离为 k,2k,3k,... 的 token,其他所有 token 的注意力都设为 0

三、模型评估

(1)In-context learning

(又称为few shot learning)通过少数几个例子告诉模型你想要的结果,然后模型就按照给的示例来进行执行。

GPT-3使用了"In-Context Learning"的方式,在不进行梯度更新或fine-tune的情况下,直接在上下文中进行学习。

元学习(meta-learning):

元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。

MAML(Model-Agnostic Meta-Learning)是一种元学习算法,正常的监督学习是将一个批次的数据打包成一个batch进行学习。但是元学习是将一个个任务打包成batch,每个batch分为支持集(support set)和质询集(query set),类似于学习任务中的训练集和测试集。

MAML的迭代 涉及两次参数更新,分别是内循环(inner loop)和外循环(outer loop)。内循环是根据任务标签快速的对具体的任务进行学习和适应,而外循环则是对参数进行更新。

直观的理解,我用一组MAML的参数权重去学习多个任务,如果每个任务都学得比较好,则说明这组参数是一个不错的初始化值,否则我们就去对这组参数进行更新。

GPT-3中据介绍的in-context learning(情境学习)是元学习的内循环,而基于语言模型的SGD则是外循环:

(2)性能评估

对于每个任务,在以下3种条件下评估GPT-3:

少样本学习(few-shot learning),除了任务描述外,模型还看到了一些任务示例。不执行梯度更新。

单样本学习(one-shot learning),除了任务描述外,模型会收到任务的单个示例。不执行梯度更新。

零样本学习(zero-shot learning),仅根据任务的自然语言描述来预测答案。不执行梯度更新。

发展历程

模型规模

Reference

1、Language Models are Few-Shot Learners

2、The ChatGPT Models Family

3、Generating Long Sequences with Sparse Transformers

4、Transformer综述(一):稀疏注意力

5、大模型结构基础(五):注意力机制的升级

6、大师兄-预训练语言模型之GPT-1,GPT-2和GPT-3

相关推荐
AI前沿技术追踪6 分钟前
OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载
人工智能
余~~1853816280012 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
galileo201644 分钟前
LLM与金融
人工智能
DREAM依旧1 小时前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
GocNeverGiveUp1 小时前
机器学习2-NumPy
人工智能·机器学习·numpy
B站计算机毕业设计超人2 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条2 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客2 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon2 小时前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
游客5202 小时前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉