|
|
|
@ -4,6 +4,10 @@
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240421134206905.png" alt="总体架构图" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|
> WHAT:自注意力机制模型,顾名思义,它能够自己找到不同位置的依赖关系。如在序列的任何位置直接计算出其他位置的依赖关系,从而有效捕捉长距离依赖。以及位置编码等关键组成。
|
|
|
|
|
>
|
|
|
|
|
> WHY:相比前一代主流的RNN/LSTM,它可以并行化(意味着它能够提供非常好的用户体验,逐渐能够走向大众视野)。能较好处理长距离依赖。效果上也是当时多个任务上的最佳性能。
|
|
|
|
|
|
|
|
|
|
左半边是编码器(Encoder),右半边是解码器(Decoder)。
|
|
|
|
|
|
|
|
|
|
这时候大家可能比较迷糊,为什么右边Decoder的部分也有输入(因为一般模型只有一个输出和一个输出),那是因为生成的过程中,模型还需要知道之前生成了哪些内容,以决定下一个最适合的输出。且两者都同时作用于训练和推理阶段。
|
|
|
|
@ -36,11 +40,11 @@
|
|
|
|
|
|
|
|
|
|
### 解码器(Decoder)概述
|
|
|
|
|
|
|
|
|
|
> 由于现在GPT是最主流的方向,所以后续主要讲decoder,encoder的架构也跟decoder差不多,理解了decoder也就理解了encoder
|
|
|
|
|
> WHY:由于现在GPT是最主流的方向,所以后续主要讲decoder,encoder的架构也跟decoder差不多,理解了decoder也就理解了encoder。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
<img src="../assets/image-20240421161038387.png" alt="汉化decoder" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|
通过上面的英文转中文,大家应该也能理解大致意思,也就是文字会向量化 加上 位置信息编码,输入到多头注意力机制里,去学习语义关系,通过数值缩放再到神经网络层。数值缩放后被线性映射,最后输出成百分比概率。
|
|
|
|
|
|
|
|
|
@ -52,7 +56,11 @@
|
|
|
|
|
|
|
|
|
|
### 文字向量化 & 位置编码
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
> WHY:机器无法理解文字,机器底层只能识别数值,所以文字需要转换成数值。而由于自注意力机制不具有处理序列顺序的能力,位置编码被用来保留单词的顺序信息。
|
|
|
|
|
>
|
|
|
|
|
> HOW:文字的向量化有很多种方法,我们后面再详解。
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240421205946626.png" alt="文字向量化" style="zoom: 50%;" />
|
|
|
|
|
|
|
|
|
|
> 这里用英文的输入,引文英文输入使用代码更容易理解
|
|
|
|
|
|
|
|
|
@ -64,9 +72,21 @@
|
|
|
|
|
|
|
|
|
|
### 语义关系学习(多头注意力)
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
> WHY:捕捉多种语义关系,提高模型的表达能力。如LLM是大模型的缩写,同时也是法学硕士的缩写。亦或者冬天里的能穿多少穿多少,跟夏天里的能穿多少穿多少。
|
|
|
|
|
|
|
|
|
|
<img src="/Users/xueweiguo/Desktop/GitHub/AiLearning-Theory-Applying/assets/image-20240421212923027.png" alt="语义关系学习" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|
向量传入后,通过语义关系学习(一系列计算),得出一个矩阵,维度是4 × 4的矩阵。矩阵里的每个值都是数字,数字代表了文字对应其它文字的语义关系,越高表示与其它文字的关系越近,越小则表示越疏远。
|
|
|
|
|
|
|
|
|
|
> 实际上是通过三个不同的线性变换生产Q、K和V向量(实际是3条线,为了简化前面用1条线表达),每一份对应一个头,如GPT是12头,则是向量 × 4 × 3 × 12 份数据。另外需要注意的是,每个子模块都会叠加N次,如GPT-3就据说叠加了175层。即最终是向量 × 4 × 3 × 12 × 175。当然我们这里只用向量 × 4 × 1 × 1 × 1 即 向量 × 4 × 3 1头1个子模块,以方便大家理解。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 数值缩放
|
|
|
|
|
|
|
|
|
|
> WHY:前面我们讲到,矩阵里的数字越大,表示
|
|
|
|
|
|
|
|
|
|
将语义关系学习里输出的矩阵,加上残差(输入语义关系学习)前的向量,再进行值的统一缩放,大部分情况下是缩放到[-1,1]区间()。
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240423093444733.png" alt="数值缩放" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|