GPT-2 是一种人工智能的大型语言模型,由 OpenAI 在2019年提出²。它是基于变压器(Transformer)模型的,使用了自注意力(Self-Attention)机制来处理文本序列。GPT-2 的目标是生成与人类语言相似的文本,它可以用于翻译、问答、摘要等多种任务。GPT-2 的特点是它只使用了无监督的预训练阶段,没有使用有监督的微调阶段,也就是说它不需要针对特定任务的标注数据。GPT-2 的模型参数有15亿个,是 GPT-1 的十倍,它的训练数据集也是一个名为 WebText 的新数据集,包含了数百万网页的文本。
Source: Conversation with Bing, 2023/5/13
(1) GPT-2 - Wikipedia. https://en.wikipedia.org/wiki/GPT-2.
(2) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(3) 一招鉴别真假ChatGPT,并简要介绍ChatGPT、GPT、GPT2 … https://blog.csdn.net/suiyingy/article/details/129106431.
(4) GPT-2 Explained | Papers With Code. https://paperswithcode.com/method/gpt-2.
Source: Conversation with Bing, 2023/5/13
(1) 完全图解GPT-2:看完这篇就够了(一) - 知乎专栏. https://zhuanlan.zhihu.com/p/79714797.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-2 的主要局限和缺点有以下几点:
Source: Conversation with Bing, 2023/5/13
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(2) GPT-1/GPT-2/GPT-3/GPT-3.5 语言模型详细介绍 - 知乎. https://zhuanlan.zhihu.com/p/620494604.
(3) NLP模型应用之三:GPT与GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/106462515.
GPT-2 不是通过显式的规则或标签来识别输入文本的类型的,而是通过隐式地学习大量的英文文本中的语言模式和语境来判断的。GPT-2 的输入文本格式是一个连续的文本序列,它可以包含任意的标点符号、换行符、空格等。GPT-2 会根据输入文本序列中的词汇、语法、语义等特征,以及它们之间的关联性和一致性,来生成下一个词的概率分布¹²。例如:
Source: Conversation with Bing, 2023/5/13
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) GitHub - openai/gpt-2: Code for the paper "Language Models … https://github.com/openai/gpt-2.
(3) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(4) Text Generation API | DeepAI. https://deepai.org/machine-learning-model/text-generator.
Source: Conversation with Bing, 2023/5/13
(1) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(4) 完全图解GPT-2:看完这篇就够了(一) - 知乎专栏. https://zhuanlan.zhihu.com/p/79714797.
GPT-2 的网络结构是基于 Transformer 的解码器部分,使用了多层自注意力机制来生成文本。跟 GPT-1 的网络结构相比,GPT-2 的主要差别有以下几点:
Source: Conversation with Bing, 2023/5/13
(1) GPT-2:结构、数据和字节对编码 - 知乎. https://zhuanlan.zhihu.com/p/136138225.
(2) GitHub - openai/gpt-2: Code for the paper "Language Models … https://github.com/openai/gpt-2.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-2 为什么要修改 layer norm 层的位置?有一些可能的原因和解释。¹
layer norm 是一种归一化方法,它可以减少梯度消失或爆炸的问题,提高模型的收敛速度和泛化能力。² layer norm 的位置会影响模型的表现,不同的位置可能适合不同的任务和数据集。³
GPT-2 是基于 Transformer 的语言模型,它主要由多个自注意力子层和全连接子层组成。¹ GPT-2 相比 GPT 的一个改变是,将 layer norm 从每个子层的输出移动到每个子层的输入,类似于 pre-activation residual network。¹ 另外,GPT-2 在最后一个 Transformer 的输出那里,增加了一个 layer norm。¹
这样做的好处可能有以下几点:
当然,这些都是一些推测和假设,可能并不完全正确或充分。GPT-2 的作者没有给出明确的理由或证据来说明为什么要修改 layer norm 的位置。他们可能是通过实验发现这样做可以提高模型的性能,并没有深入探究背后的原理或机制。¹
Source: Conversation with Bing, 2023/5/14
(1) GPT-2:结构、数据和字节对编码 - 知乎. https://zhuanlan.zhihu.com/p/136138225.
(2) ADAPTING GPT, GPT-2 AND BERT LANGUAGE MODELS … https://arxiv.org/pdf/2108.07789v1.
(3) GPT-2 Explained | Papers With Code. https://paperswithcode.com/method/gpt-2.
字节对编码是一种数据压缩算法,它可以将最常见的一对相邻字节替换为一个新的字节,从而减少数据的长度。² 举个具体的例子,假设我们有一个数据 aaabdaaabac,我们可以用以下步骤进行字节对编码:
这样就完成了字节对编码,我们可以用一个字典来记录每个新字节和原来的一对字节之间的对应关系,比如 {Z: aa, Y: ab}。²
在自然语言处理中,字节对编码也可以用来将单词分割成子词单元(subword units),这样可以减少词汇表的大小,并且能够处理未知词和罕见词。³ 例如,假设我们有一个语料库,其中包含单词 old, older, finest 和 lowest,我们可以用以下步骤进行基于子词的字节对编码:
这样就完成了基于子词的字节对编码,我们可以用一个子词列表来表示语料库中的每个单词。³ 例如,如果我们设置子词数量限制为 10,那么我们可能得到以下子词列表:
{a, d, e, f, i, l, n, o, s, t}
并且我们可以用这些子词来表示语料库中的单词:
old -> o l d
older -> o l d e r
finest -> f i n e s t
lowest -> l o w e s t
如果我们继续增加子词数量限制,那么我们可能得到更长的子词列表,并且能够用更少的子词来表示语料库中的单词。³ 例如,如果我们设置子词数量限制为 15,那么我们可能得到以下子词列表:
{a, d, e, f, i, l, n, o, s, t, es, ld, ol, ow, st}
并且我们可以用这些子词来表示语料库中的单词:
old -> ol d
older -> ol d e r
finest -> f i n st
lowest -> l ow es
这样就能够更有效地利用子词列表来压缩数据,并且能够处理未知词和罕见词。³
Source: Conversation with Bing, 2023/5/14
(1) 理解NLP最重要的编码方式 — Byte Pair Encoding (BPE),这 … https://zhuanlan.zhihu.com/p/424631681.
(2) 十分钟弄懂字节对编码_愤怒的可乐的博客-CSDN博客. https://blog.csdn.net/yjw123456/article/details/120050865.
(3) 字节对编码-Byte Pair Encoding - 知乎. https://zhuanlan.zhihu.com/p/369625931.
GPT-2 能够理解字节对编码后的文本吗?这对于 GPT-2 来说会不会太过抽象了?
GPT-2 能够理解字节对编码后的文本,因为它是在字节对编码后的文本上进行预训练和微调的。 对于 GPT-2 来说,字节对编码后的文本并不是太过抽象,而是一种更有效的文本表示方式。
字节对编码后的文本可以减少词汇表的大小,缓解数据稀疏问题,处理未知词和罕见词,提高模型的泛化能力和鲁棒性。 GPT-2 可以从字节对编码后的文本中学习到更多的语义和语法信息,而不是只关注表面的字符或词。
当然,字节对编码后的文本也有一些缺点,比如可能会破坏一些词内的结构信息,比如形态学或拼写规则。 但是,GPT-2 通过使用 Transformer 结构和自注意力机制,可以捕捉到更长距离的依赖关系,从而弥补这些缺失的信息。
GPT-2 的核心机制是自注意力机制,它是一种让模型学习如何将不同位置的输入序列中的词关联起来的方法。GPT-2 使用了掩码自注意力机制,它可以防止模型在生成文本时看到未来的词。GPT-2 还使用了多头自注意力机制,它可以让模型同时关注不同方面的信息。¹²
GPT-2 的自注意力机制可以分为以下几个步骤:
Source: Conversation with Bing, 2023/5/14
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) 完全图解GPT-2:看完这篇就够了(二) - 知乎专栏. https://zhuanlan.zhihu.com/p/343925685.
(3) 完全图解GPT-2:看完这篇就够了(一) - 知乎专栏. https://zhuanlan.zhihu.com/p/79714797.
(4) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
GPT-2 的输入层是一个词嵌入层,它将输入序列中的每个词转换为一个向量,并加上一个位置编码。¹
GPT-2 的中间层是由多个 Transformer 解码器层组成的,每个解码器层包含一个掩码自注意力子层和一个前馈神经网络子层。¹²
GPT-2 的输出层是一个线性层,它将中间层的输出映射到词汇表的大小,并使用 softmax 函数得到每个词的概率分布。¹²
Source: Conversation with Bing, 2023/5/14
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(2) GitHub - openai/gpt-2: Code for the paper "Language Models … https://github.com/openai/gpt-2.
(3) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
GPT-2 的位置向量是固定的,不需要学习。它们是根据公式计算出来的,不是通过梯度下降来更新的。
GPT-2 的位置向量的公式如下:
PE ( p o s , 2 i ) = sin ( p o s 1000 0 2 i / d m o d e l ) PE ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i / d m o d e l ) \begin{aligned} \text{PE}_{(pos,2i)} &= \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right) \\ \text{PE}_{(pos,2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) \end{aligned} PE(pos,2i)PE(pos,2i+1)=sin(100002i/dmodelpos)=cos(100002i/dmodelpos)
这是 GPT-2 的论文中给出的公式,其中 PE \text{PE} PE 是位置向量, p o s pos pos 是位置索引, i i i 是维度索引, d m o d e l d_{model} dmodel 是模型维度。
GPT-2 的位置向量可以捕捉输入序列中词之间的相对位置关系,而不依赖于绝对位置。¹²
Source: Conversation with Bing, 2023/5/14
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) GitHub - openai/gpt-2: Code for the paper "Language Models … https://github.com/openai/gpt-2.
(3) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
输入层是把整个序列输入到中间层的,但是中间层中的Masked Multi-Head Attention会使用一个掩码矩阵,来遮挡掉当前位置后面的单词的信息,从而实现只看前面的序列的效果。这个掩码矩阵是一个上三角形的矩阵,它的对角线和下方都是0,上方都是负无穷。当这个矩阵和注意力得分矩阵相加时,会使得当前位置后面的单词的注意力得分变成负无穷,然后经过softmax函数后变成0,从而忽略掉它们的影响。这样就可以保证只有前面的序列对当前位置的预测有贡献。
例如:
0 | -∞ | -∞ | -∞ |
---|---|---|---|
0 | 0 | -∞ | -∞ |
0 | 0 | 0 | -∞ |
0 | 0 | 0 | 0 |
GPT-2 的位置向量是一种用于表示每个词在序列中位置的向量。GPT-2 使用了绝对位置编码,即每个位置都有一个固定的向量,而不是相对于其他位置的向量。⁴
GPT-2 的位置向量的长度是固定的,即 768 维。这意味着它只能处理长度不超过 768 的序列。如果要扩展到更长的序列,就需要修改位置向量的长度或者使用其他的位置编码方法。⁴
一种可能的方法是使用相对位置编码,即每个位置的向量是根据它与其他位置的距离来计算的。这样就可以处理任意长度的序列,而不需要预先定义一个最大长度。⁵
Source: Conversation with Bing, 2023/5/14
(1) OpenAI GPT2 - Hugging Face. https://huggingface.co/docs/transformers/model_doc/gpt2.
(2) [R] GPT-2 Position Embeddings Visualized : r/MachineLearning. https://www.reddit.com/r/MachineLearning/comments/iifw9h/r_gpt2_position_embeddings_visualized/.
(3) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(4) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(5) GPT-2 - Wikipedia. https://ja.wikipedia.org/wiki/GPT-2.
GPT-2 是一个基于 Transformer 的语言模型,它可以处理不同长度的输入序列,因为它使用了自注意力机制¹。自注意力机制可以让模型对输入序列中的每个单词都分配一个权重,从而捕捉到不同位置之间的关系²。GPT-2 的输入序列长度是 1024 个单词¹,但是它也可以处理更短或更长的序列,只要在序列的开头和结尾加上特殊的标记³。
Source: Conversation with Bing, 2023/5/14
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) 完全图解GPT-2:看完这篇就够了(一) - 知乎专栏. https://zhuanlan.zhihu.com/p/79714797.
GPT-2的激活函数是GeLU,即高斯误差线性单元。¹² 它的数学表达式是:
GeLU ( x ) = x Φ ( x ) = x 1 2 [ 1 + erf ( x 2 ) ] \text{GeLU}(x) = x \Phi(x) = x \frac{1}{2} \left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right] GeLU(x)=xΦ(x)=x21[1+erf(2x)]
其中 Φ ( x ) \Phi(x) Φ(x)是标准正态分布的累积分布函数, erf ( x ) \text{erf}(x) erf(x)是误差函数。其中,erf
是误差函数,其图像如下:
GeLU 的曲线图如下:
GeLU的特点是它是一个平滑的非线性函数,它可以近似模拟ReLU的性质,但是又避免了ReLU的一些缺点,比如梯度消失和死亡神经元。³ GeLU也可以更好地适应Transformer的结构,因为它可以保持输入和输出的均值和方差不变。
GPT-2使用GeLU作为中间层和输出层的激活函数,以提高模型的表达能力和学习效率。
Source: Conversation with Bing, 2023/5/12
(1) GPT models explained. Open AI’s GPT-1,GPT-2,GPT-3 … https://medium.com/walmartglobaltech/the-journey-of-open-ai-gpt-models-32d95b7b7fb2.
(2) Activation function and GLU variants for Transformer models. https://medium.com/@tariqanwarph/activation-function-and-glu-variants-for-transformer-models-a4fcbe85323f.
(3) OpenAI peeks into the “black box” of neural networks with … https://arstechnica.com/information-technology/2023/05/openai-peeks-into-the-black-box-of-neural-networks-with-new-research/.
GeLU的导数图像如下:
可以看到,当x越大时,导数越接近1,当x越小时,导数越接近0,而在零点附近是一个平滑的曲线,没有ReLU的尖锐变化。
GeLU的缺点有以下几点:
Source: Conversation with Bing, 2023/5/12
(1) relu, GeLU , swish, mish activation function comparison. https://chadrick-kwag.net/relu-GeLU-swish-mish-activation-function-comparison/.
(2) [1606.08415] Gaussian Error Linear Units (GeLUs) - arXiv.org. https://arxiv.org/abs/1606.08415.
(3) GeLU activation explained | Towards AI. https://pub.towardsai.net/is-GeLU-the-relu-successor-deep-learning-activations-7506cf96724f.
(4) GeLU Explained | Papers With Code. https://paperswithcode.com/method/GeLU.
GPT-2 的损失函数是交叉熵损失函数,它和对数似然函数在数学上是等价的²。交叉熵损失函数的公式是:
L ( θ ) = − 1 N ∑ i = 1 N ∑ j = 1 V y i j log p θ ( y i j ∣ x i ) L(\theta) = -\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{V}y_{ij}\log p_{\theta}(y_{ij}|x_i) L(θ)=−N1i=1∑Nj=1∑Vyijlogpθ(yij∣xi)
其中, N N N 是样本数量, V V V 是词汇表大小, y i j y_{ij} yij 是第 i i i 个样本的第 j j j 个词的真实标签(0 或 1), p θ ( y i j ∣ x i ) p_{\theta}(y_{ij}|x_i) pθ(yij∣xi) 是模型预测的第 i i i 个样本的第 j j j 个词的概率, θ \theta θ 是模型参数。
Source: Conversation with Bing, 2023/5/14
(1) 笔记:李沐老师GPT系列讲解 - 知乎. https://zhuanlan.zhihu.com/p/477227937.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-1 的损失函数使用对数似然函数,而 GPT-2 使用交叉熵损失函数的原因是⁴:
Source: Conversation with Bing, 2023/5/14
(1) GPT-2 和 GPT-1 这两个模型有什么区别? - 知乎专栏. https://zhuanlan.zhihu.com/p/399986545.
(2) OpenAI ChatGPT(二):十分钟读懂 GPT-1 - 知乎. https://zhuanlan.zhihu.com/p/604625917.
(3) 预训练语言模型之GPT-1,GPT-2和GPT-3 - 知乎. https://zhuanlan.zhihu.com/p/350017443.
(4) GitHub - akshat0123/GPT-1: Pytorch implementation of GPT-1. https://github.com/akshat0123/GPT-1.
(5) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
假设我们有一个数据集 X = { x 1 , x 2 , … , x n } X=\{x_1,x_2,\dots,x_n\} X={x1,x2,…,xn},每个数据点 x i x_i xi 都有一个标签 y i ∈ { 0 , 1 } y_i \in \{0,1\} yi∈{0,1}。我们的模型是一个二分类器,它给出了每个数据点属于类别 1 的概率 p ( y = 1 ∣ x ; θ ) p(y=1|x;\theta) p(y=1∣x;θ),其中 θ \theta θ 是模型的参数。我们的目标是找到最优的 θ \theta θ,使得模型能够最好地拟合数据。
对数似然函数是一种常用的评估模型拟合程度的方法,它定义为:
log L ( θ ) = ∑ i = 1 n y i log p ( y = 1 ∣ x i ; θ ) + ( 1 − y i ) log p ( y = 0 ∣ x i ; θ ) \log L(\theta) = \sum_{i=1}^n y_i \log p(y=1|x_i;\theta) + (1-y_i) \log p(y=0|x_i;\theta) logL(θ)=i=1∑nyilogp(y=1∣xi;θ)+(1−yi)logp(y=0∣xi;θ)
这个函数的含义是,给定模型参数 θ \theta θ,数据集 X X X 出现的概率的对数。我们希望最大化这个函数,也就是找到使数据集出现概率最大的参数 θ \theta θ。这就是最大似然估计(MLE)的思想。
交叉熵损失函数是一种常用的评估模型预测误差的方法,它定义为:
L ( θ ) = − 1 n ∑ i = 1 n y i log p ( y = 1 ∣ x i ; θ ) + ( 1 − y i ) log p ( y = 0 ∣ x i ; θ ) L(\theta) = -\frac{1}{n} \sum_{i=1}^n y_i \log p(y=1|x_i;\theta) + (1-y_i) \log p(y=0|x_i;\theta) L(θ)=−n1i=1∑nyilogp(y=1∣xi;θ)+(1−yi)logp(y=0∣xi;θ)
这个函数的含义是,给定模型参数 θ \theta θ,模型预测的概率分布和真实标签的概率分布之间的距离。我们希望最小化这个函数,也就是找到使模型预测和真实标签最接近的参数 θ \theta θ。这就是最小交叉熵(MCE)的思想。
可以看出,对数似然函数和交叉熵损失函数只有两个不同之处:一个是符号相反,一个是有一个系数 1 n \frac{1}{n} n1。但是这两个不同并不影响它们在数学上的等价性,因为:
因此,我们可以得出结论:交叉熵损失函数和对数似然函数在数学上是等价的,它们都可以用来评估模型的好坏,并且都可以通过求导和梯度下降等方法来优化。
Source: Conversation with Bing, 2023/5/14
(1) Cross Validated - the relationship between maximizing the … https://stats.stackexchange.com/questions/364216/the-relationship-between-maximizing-the-likelihood-and-minimizing-the-cross-entr.
(2) Cross-entropy and Maximum Likelihood Estimation - Medium. https://medium.com/konvergen/cross-entropy-and-maximum-likelihood-estimation-58942b52517a.
(3) Relationship between log-likelihood function and entropy … https://stats.stackexchange.com/questions/504136/relationship-between-log-likelihood-function-and-entropy-instead-of-cross-entro.
(4) Connection between loss and likelihood function - Cross … https://stats.stackexchange.com/questions/295784/connection-between-loss-and-likelihood-function.
GPT-2 的优化器是 Adam,它是一种基于梯度下降的优化算法,可以自适应地调整学习率和动量。GPT-2 使用了一些特殊的设置,比如:
Source: Conversation with Bing, 2023/5/14
(1) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) GPT-2 - Wikipedia. https://ja.wikipedia.org/wiki/GPT-2.
GPT-2 评估语言模型的性能主要使用了两个指标:困惑度(perplexity)和零次采样(zero-shot)¹。困惑度是一种衡量语言模型预测下一个词的能力的指标,它反映了语言模型对输入序列的不确定性,数值越低表示预测越准确¹。零次采样是一种测试语言模型生成文本的能力的方法,它不需要任何额外的训练数据或标签,只需要给定一个文本片段作为输入,然后让语言模型自动续写后续的文本²。GPT-2 在不同规模的数据集上都表现出了优异的困惑度和零次采样结果¹。
Source: Conversation with Bing, 2023/5/14
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
困惑度是语言模型对测试集的预测能力的度量,它反映了语言模型对未知文本的不确定性。困惑度越低,说明语言模型越准确,越能够预测下一个词。困惑度的计算公式是:
GPT-2 的超参数分别有以下几种³:
Source: Conversation with Bing, 2023/5/14
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(4) 预训练语言模型之GPT-1,GPT-2和GPT-3 - 知乎. https://zhuanlan.zhihu.com/p/350017443.
GPT-2 的参数数量是 15亿¹²。它相比于之前的语言模型有很大的提升,因为它使用了更大更深的 Transformer 的结构,利用了更多更广泛的 WebText 数据集进行预训练²。它还 取消了 Fine-tuning 的步骤,直接用预训练的语言模型来解决多个下游任务²。它在 zero-shot 设置下,在8个测试数据集中有7个实现了 SOTA²。
Source: Conversation with Bing, 2023/5/14
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://bing.com/search?q=GPT-2+%e5%8f%82%e6%95%b0%e6%95%b0%e9%87%8f.
(2) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-2 是一种基于 Transformer 的大型语言模型,它使用了自回归的方式来预测下一个词。GPT-2 的训练方法如下:
Source: Conversation with Bing, 2023/5/15
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-2是一种基于Transformer的语言模型,它可以根据给定的文本生成后续的文本。它的基本原理是使用自回归(autoregressive)的方法,即预测下一个词的概率分布,然后从中采样一个词作为输出,再将这个词作为输入,重复这个过程,直到生成一个完整的文本¹²。GPT-2使用了多层的Transformer Decoder结构,每一层都包含了自注意力(self-attention)和前馈神经网络(feed-forward neural network)两个子层³⁴。GPT-2还使用了位置编码(position encoding)和层归一化(layer normalization)等技术来提高模型的效果⁴。
Source: Conversation with Bing, 2023/5/15
(1) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(2) Text Generation API | DeepAI. https://deepai.org/machine-learning-model/text-generator.
(3) 项目实战(十) - - GPT-2实现文本生成 - CSDN博客. https://blog.csdn.net/sollasido/article/details/108001249.
(4) 完全图解GPT-2:看完这篇就够了(一) - 知乎专栏. https://zhuanlan.zhihu.com/p/79714797.
GPT-2使用了一种称为top-k sampling的采样策略,它是指在每个时间步,只从概率最高的k个词中随机选择一个词作为输出,而忽略其他词¹。这样可以避免生成一些低概率的词,提高生成文本的质量。但是,这种方法也有一个缺点,就是可能导致生成一些重复或无意义的文本,因为它没有考虑到上下文的信息²。
为了解决这个问题,GPT-2还使用了一个温度参数(temperature parameter),它是一个正数,用来调节概率分布的形状²。温度参数越大,概率分布越平坦,越倾向于探索不同的词;温度参数越小,概率分布越尖锐,越倾向于选择最高概率的词²。温度参数可以根据不同的任务和需求进行调整,以达到最佳的生成效果。
Source: Conversation with Bing, 2023/5/15
(1) GPT-2: 1.5B release - OpenAI. https://openai.com/research/gpt-2-1-5b-release.
(2) gpt2 · Hugging Face. https://huggingface.co/gpt2.
(3) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
GPT-2 不使用微调,因为 GPT-2 强调的少样本,也就是说只需要在输入文本中举几个你想要问的问题的类似的例子,
GPT-2 就能够学会你想要问的问题是什么,以及需要怎么样回答你的问题。
Source: Conversation with Bing, 2023/5/15
(1) OpenAI ChatGPT(三):十分钟读懂 GPT-2 - 知乎. https://zhuanlan.zhihu.com/p/613895056.
(2) 进一步改进GPT和BERT:使用Transformer的语言模型 - 知乎. https://zhuanlan.zhihu.com/p/64448382.
(3) GPT综述-各模型之间的对比 - 知乎. https://zhuanlan.zhihu.com/p/450074465.
Source: Conversation with Bing, 2023/5/15
(1) GitHub - graykode/gpt-2-Pytorch: Simple Text-Generator with … https://github.com/graykode/gpt-2-Pytorch.
(2) Generating Text Summaries Using GPT-2 on PyTorch … https://blog.paperspace.com/generating-text-summaries-gpt-2/.
(3) GitHub - karpathy/minGPT: A minimal PyTorch re … https://github.com/karpathy/minGPT.