ChatGPT基础

ChatGPT基础

GPT模型

  • GPT (Generative Pre-trained Transformer)
    GPT是由OpenAI训练的一种基于深度学习技术的自然语言处理模型,该模型是基于Transformer结构的生成式预训练模型。

  • Transformer
    Transformer是一种通用的神经网络结构,它可以用于各种序列到序列的任务,如机器翻译、文本摘要、图像生成等。GPT是一种特殊的Transformer,它只使用了Transformer中的解码器部分,一些模型都使用了Transformer,有的使用其中的编码器部分。
    GPT也可以看作是一种神经网络语言模型,它使用了Transformer作为其神经网络结构。

Transformer⭐️

详细见参考:https://zhuanlan.zhihu.com/p/338817680

更多参考:https://transformers.run/back/attention/

Transformer整体概述

用于中英文翻译的Transformer整体结构:

img

Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。

第一步:获取输入句子的每一个单词的表示向量 XX由单词的 Embedding(Embedding就是从原始数据提取出来的Feature) 和单词位置的 Embedding 相加得到。

  • 思考:单词的 Embedding和位置的 Embedding如何获得?

img

第二步:将得到的单词表示向量矩阵x(Xn*d,n表示的是句子中单词的个数,d表示的每个单词向量的维度)输入到Encoder中,经过6个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C。每一个 Encoder block 输出的矩阵维度与输入完全一致。

img

第三步:将 Encoder 输出的编码信息矩阵 C传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i+1,如下图所示。在使用的过程中,翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词。

img

Decoder 接收了 Encoder 的编码矩阵 C,然后首先输入一个翻译开始符 “”,预测第一个单词 “I”;然后输入翻译开始符 “” 和单词 “I”,预测单词 “have”,以此类推,如下图所示。

img

Transformer详细架构

img

上图是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化

Encoder 结构
image-20231018153045934

Encoder block 结构由 Multi-Head Attention, Add & Norm, Feed Forward, Add & Norm 组成。其中Multi-Head Attention详见下面的“注意力机制”部分。

Add & Norm

Add & Norm 层由 Add 和 Norm 两部分组成,其计算公式如下:

img

其中 X表示 Multi-Head Attention 或者 Feed Forward 的输入,MultiHeadAttention(X) 和 FeedForward(X) 表示输出 (输出与输入 X 维度是一样的,所以可以相加)。

AddX+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到:

img

Norm指 Layer Normalization,通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的(归一化),这样可以加快收敛。

Feed Forward

Feed Forward 层比较简单,是一个两层的全连接层,第一层的激活函数Relu,第二层不使用激活函数,对应的公式如下:

img

X是输入,Feed Forward 最终得到的输出矩阵的维度与X一致。

Decoder 结构
img

Decoder block 结构如下:

  • 包含两个 Multi-Head Attention 层。

  • 第一个 Multi-Head Attention 层采用了 Masked 操作。

  • 第二个 Multi-Head Attention 层的V,K矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder block 的输出计算。

  • 最后有一个 Softmax 层计算下一个翻译单词的概率。

注意力机制

Attention 有许多种实现方式,但是最常见的还是 Scaled Dot-product Attention。

img
Self-Attention

采用Scaled Dot-product Attention实现,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)

Self-Attention 接收的是输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 的输出。而Q,K,V正是通过 Self-Attention 的输入进行线性变换得到的。

Self-Attention 的输入用矩阵X进行表示,可以使用线性变阵矩阵WQ,WK,WV计算得到Q,K,V。计算如下图所示,注意 X, Q, K, V 的每一行都表示一个单词。

img

根据以下公式计算出Self-Attention的输出:

img

公式中计算矩阵QK每一行向量的内积,为了防止内积过大,因此除以**dk**的平方根。矩阵Q与K的转置计算得到的矩阵行列维度均为n,n表示的时句子中单词的个数,计算得到的矩阵表示了单词之间的attention强度。

img

得到QKTQK^T之后,使用 Softmax 计算每一个单词对于其他单词的 attention 系数,公式中的 Softmax 是对矩阵的每一行进行 Softmax,即每一行的和都变为 1.

img

得到 Softmax 矩阵之后可以和V相乘,得到最终的输出Z

img

上图中 Softmax 矩阵的第 1 行表示单词 1 与其他所有单词的 attention 系数,最终单词 1 的输出 Z1 等于所有单词 i 的值**Vi**根据 attention 系数的比例加在一起得到,如下图所示:

img
Multi-Head Attention

Multi-Head Attention 是由多个 Self-Attention 组合形成的,下图是论文中 Multi-Head Attention 的结构图。

img

Multi-Head Attention 包含多个 Self-Attention 层,首先将输入X分别传递到 h 个不同的 Self-Attention 中,计算得到 h 个输出矩阵Z。如下图是 h=8 时候的情况,此时会得到 8 个输出矩阵Z

img

得到 8 个输出矩阵 Z1Z_1Z8Z_8 之后,Multi-Head Attention 将它们拼接在一起 (Concat),然后传入一个Linear层,得到 Multi-Head Attention 最终的输出Z

img

可以看到 Multi-Head Attention 输出的矩阵Z与其输入的矩阵X维度是一样的

GPT-3的训练使用了情境(上下文)学习(In-context Learning),它是元学习(Meta-learning)的一种,元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。

In-context Learning

“In-context Learning”(上下文学习)是一种自然语言处理(NLP)中的方法,通常用于训练和微调大型预训练模型,以使其适应特定的任务或应用场景。这个方法强调将模型放置在特定上下文中,以让它更好地理解和生成与该上下文相关的文本。

下面是"In-context Learning"的一些关键特点和概念:

  1. 特定上下文:这意味着将模型置于特定的对话、环境或任务中,以模拟真实世界的情境。这可以包括对话历史、任务描述、问题陈述等。

  2. 微调模型:通常,"In-context Learning"涉及微调一个已经进行了大规模预训练的模型,例如GPT(Generative Pre-trained Transformer)模型。微调的目的是使模型更好地适应特定任务,根据上下文生成更相关的文本。

  3. 多模态学习:"In-context Learning"也可以涉及将多个模态的数据(例如文本、图像、音频)结合在一起,以更好地处理多模态任务,例如文本到图像生成或图像到文本生成。

  4. 任务细化:这种方法可用于各种任务,包括自然语言理解、文本生成、问题回答、对话、图像标注等。通过在特定上下文中微调模型,可以使其更好地执行这些任务。

  5. 实时决策:"In-context Learning"还可以用于模拟代理与环境互动,进行实时决策,例如机器人控制、自动驾驶汽车、虚拟助手等领域。

img

In Context Learning(ICL)的关键思想是从类比中学习。上图给出了一个描述语言模型如何使用 ICL 进行决策的例子。首先,ICL 需要一些示例来形成一个演示上下文。这些示例通常是用自然语言模板编写的。然后 ICL 将查询的问题(即你需要预测标签的 input)和一个上下文演示(一些相关的 cases)连接在一起,形成带有提示的输入,并将其输入到语言模型中进行预测。

Meta-learning

元学习Meta Learning,含义为学会学习,即learn to learn,就是带着这种对人类这种“学习能力”的期望诞生的。Meta Learning希望使得模型获取一种“学会学习”的能力,使其可以在获取已有“知识”的基础上快速学习新的任务。

img

机器学习中的Function直接作用于特征和标签,去寻找特征与标签之间的关联;而元学习中的Function是用于寻找新的f,新的f才会应用于具体的任务。

MAML与Model Pre-training的区别:
img

模型无关元学习(MAML)

“模型无关元学习”(Model-Agnostic Meta-Learning),是一种用于元学习的机器学习算法。MAML 的核心思想是训练一个模型,使其能够快速适应新任务或数据集。与传统的机器学习方法不同,MAML 不专注于学习特定任务,而是关注如何学会学习(learn to learn)。

MAML算法流程:

img

提示学习(Prompt Learning)和指示学习(Instruct Learning)

Prompt是激发语言模型的补全能力,例如根据上半句生成下半句,或是完形填空等。Instruct是激发语言模型的理解能力,它通过给出更明显的指令,让模型去做出正确的行动。

  1. 提示学习:给女朋友买了这个项链,她很喜欢,这个项链太____了。

  2. 指示学习:这句话的情感是非常正向的:给女朋友买了这个项链,她很喜欢。

强化学习(Reinforcement learning)

强化学习是除了监督学习非监督学习之外的第三种基本的机器学习方法。

强化学习通过奖励(Reward)机制来指导模型训练,奖励机制可以看做传统模型训练机制的损失函数。

强化学习的思路是通过对奖励的大量采样来拟合损失函数,从而实现模型的训练。

undefined

强化学习的典型框架:智能体在环境中采取一种行为(Action),环境将其转换为一次回报(Reward)和一种状态(State)表示,随后反馈给智能体(Agent)。

基于人类反馈的强化学习

img
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 Guijie Wang
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信