【大模型】大语言模型前沿技术系列讲座-学习笔记2:Transformer ->ChatGPT

简介: 【大模型】大语言模型前沿技术系列讲座-学习笔记2:Transformer ->ChatGPT


1. 语言模型 (Language Model)

大模型-大的语言模型,学习大模型之前必须了解什么是语言模型

语言模型可视为一个函数,输入是一个句子,输出是一个分数,此分数是评估所输入的句子是人说的话的概率

判断是不是句子,基于当前的词预测下一个词

语言模型本身是统计模型 probability of a sentence

1.1. 如何构建语言模型?

最朴素的想法是数数,就是给定大量语料,然后数输入的句子在语料中出现的次数

问题:语料可能比较稀疏(输入的句子不在语料中)-> 近似

1.2. 理解ChatGPT的关键 (自回归)

由词 x 1 , x 2 , . . . x n x_1,x_2,...x_nx1,x2,...xn 组成的序列(句子) X XX,放进语言模型得到一个概率分布 P θ ( X ) P_θ(X)Pθ(X)

语言模型构建:给定前n-1个词,估计得到第n个词

例子:

市面上大部分的大模型都是以自回归模型为基础,自回归是序列建模的一个概念,简而言之就是输入自己,然后预测自己下个位置是什么,通过i-1个词预测第i个词。

构建语言模型任务 -> 近似计算每个词的条件概率

近似 (Approximate) 计算方法:FFN / CNN / RNN / Transformer …

ChatGPT如何根据语言模型生成文本?

循环预测(将前一个输出作为后一个输入),形成序列(文本)

生成过程中有一些trick,比如防止重复输入等等,本质上都是形成决定下一个词是什么的规则

2. GPT (Generative Pre-training) 基础

GPT基础:Transformer

Transformer模块:输入长度为N的词向量,输出长度为N的词向量

如何得到第N+1个词?取出输出的最后一个词 (第N个词),线性映射然后softmax即可得到第N+1个词的概率

Transformer的一个重要模块:Multi-Head Attention 多头注意力,学习 Multi-Head Attention 之前先了解什么是 Self-Attention

2.1. 什么是Attention?

可以简单理解为加权平均

输入长度为N的词向量序列,在每个位置上对N个词向量做加权平均 (做N次),最终得到N个输出向量,每做一次加权平均,可视为对输入做了一次Attention

2.2. 什么是Self-Attention?

Self-Attention 中,加权平均用的权重 (系数) ω i j \omega_{ij}ωij 如何确定?

ω i j ′ = x i ⋅ x j \omega_{ij}'=x_i \cdot x_jωij=xixj

用自己的输入做点乘,作为权重(Self 的概念)

3个重要要素:Query (下图中每个位置左边的x 2 x_2x2)、Key (和Query做点乘计算权重的,下图中上面一层x 1 − x 4 x_1-x_4x1x4)、Value (输入向量,用于平均,下图中下面一层x 1 − x 4 x_1-x_4x1x4)

对于Attention,Query、Key和Value不一定都要来自于自己的

Self-Attention 的特点:上述3个要素均是来自自己的 (x xx),没有其他

What can we get?

  • The dot product returns large values when the two vectors are similar. The softmax normalises the resulting vectors;
  • The output y i y_iyi is the weighted sum of all input vectors, weighted by their similarity withinput x i x_ixi;
  • We have no trainable parameters.
  • The input is a position invariant, having no way to represent word order.

2.3. 如何改进Self-Attention?

改进1:

Query、Key、Value 先做映射(线性变换,乘映射矩阵W q W_qWqW k W_kWkW v W_vWv),再做Self-Attention

Advanced Self-Attention

Every input vector x i x_ixi is used in three ways in self-attention:

  • Query: compare x i x_ixi to every other vector to compute attention weights for its own output y i y_iyi;
  • Key: compare x i x_ixi to every other vector to compute attention weights for the other outputs y j y_jyj;
  • Value: use x i x_ixi in the weighted sum to compute every output vector based on these weights.

We can make attention more flexible by assuming separate, trainable weights for each of these roles: W q W_qWqW k W_kWk,and W v W_vWv.

改进2(Scaling the Dot Product):

计算权重先归一化(softmax),使得权重总和为1,符合概率分布,再做加权平均

进行softmax之前先缩放,除以 ( 512 ) \sqrt(512)(512),使得权重更平滑

2.4. 什么是Multi-Head Attention?

多头注意力机制——Attention多样化

Multi-head attention enables the model to jointly attend to different parts of the input.

拆成h份。例如输入512向量,把512维向量拆成4份,分别做Self-Attention,y2得到4个128维向量然后拼接复原至512维。

目的:每个头都可以注意不同内容,发展多样化权重分布。

这样能提升性能,但参数变多时解码速度变慢,其中一种改进方法——Multi-Query Attention,Key和Value只共享一份,用不同的Query做Self-Attention,只拆解Query,降低计算量。

3. Transformer Block

  • Self-Attention 输入输出长度一样
  • 残差连接 输入加到是输出上,使得优化变得更容易
  • Layer norm 层正则化,对每个正则化表示向量求均值和方差,然后减去均值除以方差,使特征更平滑
  • MLP 多层感知器,简单的前馈神经网络,一般是两层

3.1. 位置编码 (Position Embedding)

原本输入顺序不影响输出,不符合实际,为了体现位置的概念,设置位置编码

Transformer 原论文提出的位置编码方案:

GPT:用可学习的向量作为位置编码

3.2. 掩码 (Masking)

为了保证能够用 i 时刻的输出预测 i+1 时刻的输入,在自回归模型中引入 Masking(掩码)

加了Masking之后,下图的 x 3 x_3x3 将不会用于 y 2 y_2y2 的计算输出,这样才能用 y 2 y_2y2 预测 x 3 x_3x3

3.3. 如何解码 (decode)?

4. GPT

4.1. GPT 发展历程

语言模型(神经网络、Transformer)

GPT 是第一个用 Transformer 模型构建语言模型

最开始 GPT (GPT-1)只是用于预训练模型,需要在下游任务做微调才能用

每个下游任务都做微调似乎不太合适,人类语言可以涵盖各种NLP任务

Problems of GPT:

  • The prevalence of single task training on single dataset limits thegeneralizability. (Maybe Multi-task Learning helps?)
  • Require supervised training in order to perform a task.

lntuition: Language Model == Unsupervised Multi-task Learning

lf we train language model with “the translation of the word machinelearning in Chinese is 机器学习”, then we have a machine translationsystem which can translate “machine learning” to Chinese.

We need larger model and larger dataset.

GPT-2 相比于 GPT-1,堆叠更多的 Transformer Block,参数量变大,层级变多

把 NLP 任务建模成语言模型任务(文本生成任务)

不需要微调

GPT-3 训练曲线未收敛(数量级可以更大、训练时间可以更长)

  • Codex: 加入代码数据
  • WebGPT: 模拟人类浏览网页
  • InstructGPT: ChatGPT 的前身,让语言模型遵循人类的指令,流程如下:
    收集高质量文本补全结果(数据量不大)-> 微调 -> 收集更多数据进行 RLHF (训练奖励模型,对不同输出进行排序,然后用强化学习PPO算法优化)

4.2. 论文/报告/讨论/工具箱

InstructGPT 论文🔗 https://arxiv.org/pdf/2203.02155.pdf

Deepmind 发布的技术报告🔗 https://www.deepmind.com/blog/building-safer-dialogue-agents

讨论:

工具箱:

4.3. 未来研究方向

如何收集数据?

GPU机器维护、GPU提速

其他模型

MOE

不同前馈神经网络(FFN)(称为专家),用Router(路由)选择不同的FFN

更快地让参数量达到更大级别,但优化难度增加

有传闻 GPT-4 是 MOE 模型

一般而言,模型参数量变大,计算量增大,生成每个词的速度变慢(硬件限制),推理速度被限制,进而模型规模大小被限制

而采用 MOE 模型,在训练时可以投入更多的算力,在推理时只需要用被激活的专家做推理,减少推理时的计算量

5. 直播间问题

(1) post-layer norm和pre-layer norm有啥讲究吗?

答:下图为 post-layer norm,layer norm 在 self attention 后面

最初采用这种形式,后来发现这种结构会使得优化不稳定,进而把 layer norm 放在 self attention 前面,即 pre-layer norm。post-layer norm 和 pre-layer norm 性能差不多,但 pre-layer norm 更适合更深的模型。

(2) 使用multi-head attention会减少参数量吗?

答:不会。拆成h份之后,Q、K、V映射的矩阵仍然是一样的大小。

(3) query value key这三个矩阵每次是随机生成的吗?

答:Query value key 是模型的训练参数,和模型其他位置的训练参数是一样的,最开始都是随机生成的。

(4) 如果想在个人笔记本先做LLM的训练,推理方面的,老师有什么工具推荐?

答:gptq(大模型量化)

🔗 Making LLMs lighter with AutoGPTQ and transformers

(5) chatgpt使用的时候将temperature=0, 为何结果还有随机性呢?

答:可以设为0,则不会有随机性。

(6) 如何计算推理到对应并发所需要的GPU?

答:Try and error

对于我这种NLP入门不久的小白来说,学这些有点吃力,先记录下来,或许以后就理解了。

相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型时代的挑战与机遇:ChatGPT之后的下一个突破
【8月更文第8天】自从ChatGPT横空出世以来,其在自然语言处理(NLP)领域取得了前所未有的成就。ChatGPT不仅展示了大模型的强大能力,而且也为后续的技术发展指明了方向。本文将探讨大模型时代所带来的挑战与机遇,并预测ChatGPT之后可能出现的新技术和应用场景。
67 0
|
1月前
|
机器学习/深度学习 人工智能 并行计算
DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
DeepSpeed Chat 是一款革命性的平台,专为简化和加速类ChatGPT模型的训练而设计。通过一键式脚本,用户可以轻松完成从预训练模型到生成自定义ChatGPT模型的全过程。该系统复刻了InstructGPT的RLHF训练方法,并集成了一系列优化技术,如DeepSpeed Hybrid Engine,大幅提升了训练效率和经济性。使用DeepSpeed Chat,即使是拥有数千亿参数的大模型,也能在短时间内完成训练,且成本显著降低。无论是单GPU还是多GPU集群环境,DeepSpeed Chat都能提供卓越的性能和易用性,让RLHF训练变得更加普及。
DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
|
2月前
|
数据采集 自然语言处理 监控
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
正是通过微调大模型使得GPT3成为了可以聊天发布指令的ChatGPT。聊天大模型在通用大模型的基础上加一层微调就实现人人能用的大模型,使得通用大模型的能力被更多人使用和了解。
54 4
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】ChatGPT模型原理介绍(下)
【AI大模型】ChatGPT模型原理介绍(下)
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】ChatGPT模型原理介绍(上)
【AI大模型】ChatGPT模型原理介绍(上)
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
让非算法同学也能了解 ChatGPT 等相关大模型
让非算法同学也能了解 ChatGPT 等相关大模型
让非算法同学也能了解 ChatGPT 等相关大模型
|
3月前
|
人工智能 分布式计算 自然语言处理
ChatGPT 等相关大模型问题之建设一个prompt平台来提升业务效率如何解决
ChatGPT 等相关大模型问题之建设一个prompt平台来提升业务效率如何解决
|
3月前
|
自然语言处理 数据挖掘 BI
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
|
3月前
|
机器学习/深度学习 自然语言处理
ChatGPT 等相关大模型问题之Attention 机制的定义如何解决
ChatGPT 等相关大模型问题之Attention 机制的定义如何解决
|
3月前
|
机器学习/深度学习 人工智能 算法
ChatGPT 等相关大模型问题之人工智能的过拟合 / 欠拟合的定义如何解决
ChatGPT 等相关大模型问题之人工智能的过拟合 / 欠拟合的定义如何解决