点击上方蓝字关注我们


本系列文章是原作者Rohit Patel的长篇雄文《Understanding LLMs from Scratch Using Middle School Math-A self-contained, full explanation to inner workings of an LLM》的深度学习与解读笔记。本篇是系列第四篇。我们强烈建议您在开始前阅读并理解前文(点击下方目录)。
4. 嵌入(Embeddings)
5. 子词分词器(Sub-word tokenizers)
6. 自注意力机制(Self-attention)
7. Softmax
8. 残差连接(Residual connections)
9. 层归一化(Layer Normalization)
10. Dropout
11. 多头注意力(Multi-head attention)
12. 位置嵌入(Positional embeddings)
13. GPT 架构
14. Transformer 架构
4
嵌入(Embeddings)



你可能在RAG(检索增强生成)应用中了解了如何利用嵌入与向量实现语义检索。但请注意嵌入是语言模型得以工作的基础而非RAG。

01
从简单的字符映射到嵌入
a = 1
,b = 2
,依此类推。这种方法虽然简单,但存在明显的缺陷:这些数字没有任何语义信息,无法捕捉字符之间的丰富的语义关系或上下文。02
嵌入(向量表示)是如何训练出来的?
输入数据:将字符或单词输入模型。 计算输出:通过神经网络计算输出结果。 计算损失:将输出与预期结果进行比较,计算损失(即误差)。 调整权重:通过梯度下降调整模型的权重,以最小化损失,开始新一轮训练。 -
多轮迭代:经过多轮的迭代,最终将会把权重调整到一个合适的值。
初始化嵌入:首先为每个字符分配一个随机的向量,即一组数字。 输入到网络:我们将这些向量传递到神经网络中进行处理。 -
优化向量:与优化权重类似,通过计算损失函数,来优化这些嵌入向量的值。通过梯度下降,不断调整这些向量,使得模型输出更接近我们期望的结果。
03
向量如何输入神经网络?
-
输入层的扩展:原本的输入层可能只有12个神经元(每个字符对应一个神经元),但现在扩展到了120个神经元。每个字符的向量被依次排列,输入到网络中。 -
所有的嵌入向量长度必须相同,否则我们就无法将所有字符组合输入到网络中。例如,“humpty dumpt” 和下一次迭代中的 “umpty dumpty”,在这两种情况下,我们都要向网络中输入 12 个字符,如果这 12 个字符不是都由长度为 10 的向量表示,我们就无法可靠地将它们全部输入到 120 个长度的输入层中。
04
嵌入矩阵
-
什么是嵌入矩阵?嵌入矩阵是一个二维数组,其中每一列对应一个字符或单词的向量。例如,假设我们有26个字母,每个字母的向量长度为10,那么嵌入矩阵的大小就是 10 × 26。

-
如何使用嵌入矩阵?当我们需要表示某个字符时,只需查找嵌入矩阵中对应的列。例如,字母“a”的向量就是嵌入矩阵的第一列。

end
福利时间
为了帮助LLM开发人员更系统性与更深入的学习RAG应用,特别是企业级的RAG应用场景下,当前主流的优化方法与技术实现,我们编写了《基于大模型的RAG应用开发与优化 — 构建企业级LLM应用》这本长达500页的开发与优化指南,与大家一起来深入到LLM应用开发的全新世界。
更多细节,点击链接了解
此处购买享5折优惠
