@ -74,7 +74,7 @@
> 你可能好奇, 为什么LLM with me明明是3个词会有4个索引, 后面会详细解答, 并提供代码。另外位置编码不会向1,2,3这么简单的叠加, 后面也会详解。
>
> 768是嵌入向量的维度, 这是GPT-2模型的一个特定参数。每个嵌入向量的维度是模型设计时确定的, 并且在整个模型中保持一致。
> 768是嵌入向量的维度, 这是GPT-2模型(其中一个版本) 的一个特定参数。每个嵌入向量的维度是模型设计时确定的,并且在整个模型中保持一致。
@ -86,7 +86,7 @@
< img src = "../assets/image-20240421212923027.png" alt = "语义关系学习" width = "550" / >
向量传入后,通过语义关系学习(一系列计算,点积/内积的方法) , 得出一个矩阵, 维度是4 × 4的矩阵。矩阵里的每个值都是数字, 数字代表了文字对应其它文字的语义关系,越高表示与其它文字的关系越近,越小则表示越疏远 。
向量传入后,通过语义关系学习(一系列计算,点积/内积的方法) , 得出一个矩阵, 维度是4 × 4的矩阵。矩阵里的每个值都是数字, 数字代表了文字对应其它文字的关注程度,越高表示与其它文字的关注度越高,反正则越小 。
> 为什么数字越大表示关系越近, 现在可以简单理解, 就是每个词的查询向量( Q) 会与序列中所有单词的键( K) 向量进行点积运算, 得到一个分数, 这个分数经过softmax函数处理后, 就变成了注意力权重。即每个词都有跟全部词的向量结果, 越大表示语义关系越紧密, 权重越低则表示关系越疏远。
>
@ -100,7 +100,7 @@
>
> WHY: 前面我们讲到, 矩阵里的数字越大, 表示跟其它词的语义关系越紧密, 如果两个大值相加, 很可能就造成大的值特别大, 小的值特别小。所以要统一到一个维度, 特别是深度学习场景里, 由于深度学习是矩阵乘法, 所以大值或者小值都会被无限放大,导致模型不稳定。
将语义关系学习里输出的矩阵,加上残差(输入语义关系学习)前的向量,再进行值的统一缩放,大部分情况下是缩放到[-1,1]区间。
将语义关系学习里输出的矩阵,加上残差(输入语义关系学习)前的向量,再进行值的统一缩放,使得它们的均值为0, 方差为1。 大部分情况下是缩放到[-1,1]区间。
< img src = "../assets/image-20240424171227926.png" alt = "数值缩放" width = "550" / >
@ -126,7 +126,7 @@ Add & Norm的过程可以理解为相同位置元素相加, 再做层归一化
< img src = "../assets/image-20240424204837275.png" alt = "前馈神经网络" width = "550" / >
当数据输入到神经网络后, 经过一系列运算( 点积) , 输出的数据一般是非线形的。而且维度输出的维度与输入的维度是不变的。种设计允许FFN在不改变输入和输出维度的情况下, 增加网络的非线性和复杂性, 从而使模型能够学习更加复杂的特征表示。
当数据输入到神经网络后,经过一系列运算(点积),输出的数据一般是非线形的。而且维度输出的维度与输入的维度是不变的。这 种设计允许FFN在不改变输入和输出维度的情况下, 增加网络的非线性和复杂性, 从而使模型能够学习更加复杂的特征表示。
@ -146,7 +146,7 @@ Add & Norm的过程可以理解为相同位置元素相加, 再做层归一化
> 机器人对话场景( 如GPT)
如果训练阶段我们的总文本词汇是3个, 最终会训练成3个词的向量队列 。预测阶段输入"LLM with me",那么对于"LLM with me"中的每个标记, 线性层将输出一个长度为3的向量。如果训练阶段的总文本词汇是10,000个, 最终会训练成10,000个词的向量队列, 那么输出的则是10,000的向量( 可以理解为概率) 。预测下一个字, 就是找出向量矩阵中概率最高的对应的文字。如"LLM with me"的下一个词的概率,一般展示如下:
如果训练阶段我们的总文本词汇是3个, 最终会得到一个有3个分数的词汇表 。预测阶段输入"LLM with me",那么对于"LLM with me"中的每个标记, 线性层将输出一个长度为3的向量。如果训练阶段的总文本词汇是10,000个, 最终会训练成10,000个词的向量队列, 那么输出的则是10,000的向量( 可以理解为概率) 。预测下一个字, 就是找出向量矩阵中概率最高的对应的文字。如"LLM with me"的下一个词的概率,一般展示如下:
```
{
@ -169,7 +169,7 @@ Add & Norm的过程可以理解为相同位置元素相加, 再做层归一化
< img src = "../assets/image-20240503172341945.png" alt = "image-20240503172341945" width = "300" / >
可以简单理解为, 将前面线形层输出的值, 转化成0-1的概率分布区间 进行输出。
可以简单理解为, 将前面线形层输出的值, 转化成0-1区间的概率分布, 进行输出。