当前位置: 首页 > ds >正文

【大语言模型入门】—— 浅析LLM基座—Transformer原理

【大语言模型入门】—— 浅析LLM基座—Transformer原理

  • 解密GPT核心技术:Transformer架构深度解析
    • 被反复强调的核心概念意味着什么?
  • GPT预测机制解析:从Next Token Prediction到任务推理
    • 核心机制的本质
    • 案例驱动的机制解析
    • 解构策略:分层突破法
    • 串联概念:经典概率模型
    • 摸清流程:Transformer 架构及流程图
    • 业务视角的逻辑流程
      • 示例数据
      • Transformer 的工作原理
    • 程序视角的逻辑:矩阵计算
    • Transformer 核心算法和结构
      • Token 和 Token 词表
    • 输入模块的核心:Embedding 向量
  • 参考文献

解密GPT核心技术:Transformer架构深度解析

被反复强调的核心概念意味着什么?

在各类技术文档中,我们总能看到这样的描述:

“GPT-3作为生成式语言模型的代表,具备1750亿参数规模,基于Transformer架构,通过海量无监督学习掌握语言统计规律与语义表示能力,可支持文本生成、分类、问答等多种NLP任务…”

这些高频出现的概念并非偶然,它们实际上构成了现代大语言模型的技术支柱。理解这些概念的价值在于:

  • 参数规模:模型容量与能力的物理载体
  • Transformer:当代大模型的底层架构范式
  • 无监督学习:突破标注数据瓶颈的关键方法
  • 语义表示:模型智能的本质体现

GPT预测机制解析:从Next Token Prediction到任务推理

核心机制的本质

GPT的核心预测原理可以表述为:

给定输入文本序列,模型通过计算所有可能候选token的概率分布,选择最可能成为下一个token的预测结果。

案例驱动的机制解析

以翻译任务为例:

输入:"翻译:今天天气真好"
输出:"The weather is nice today"

在这里插入图片描述

解构策略:分层突破法

嘿,小伙伴们!想一下子把Transformer搞得明明白白?那可太难啦,简直比在迷宫里找到出口还难!不过别怕,我这有妙招。咱们先不急着一头扎进Transformer的核心地带,就像当年“农村包围城市”一样,先从外围入手。先来剖析一个经典概率模型,把那些重要的外围辅助概念,像输入、输出、词表这些家伙先搞清楚。这些概念在Transformer里可是通用的,理解了它们,再去攻克Transformer里那三个最核心的算法和数据结构,就会轻松很多啦!

串联概念:经典概率模型

这个经典概率模型比Transformer简单10倍,非常易于理解。

假设我们要做一个汪星人的大模型,汪星人只有睡觉、跑步、吃饭三个行为,汪星语也只有下面这一种句式:

我 刚才 跑步,我 现在 吃饭
我 刚才 睡觉,我 现在 吃饭
……

我们的目标和GPT是一样的,都是用已有的文本预测下一个字,比如下面的例子:

我 刚才 跑步,我 现在 ___

要预测上面例子的横线里应该填什么,只要计算“跑步”这个行为之后哪个行为的概率最大就可以了。比如:P(吃饭|跑步) 表示汪星人在“跑步”之后,下一个行为是“吃饭”的概率。

从程序视角实现这个“大模型”,显然需要先建立一个词表(Vocabulary),存储所有的汪星词汇。看下面这张图,一共有六个词:我、刚才、现在、吃饭、睡觉、跑步。那这个词表的长度 L 就等于 6。

在这里插入图片描述
然后,根据汪星语料,计算每一个词的概率 P ( w n ∣ w i ) P(wn|wi) P(wnwi),这也就是汪星大模型的模型训练过程。在模型运行时,可以根据输入的文本, 遍历词表获取每个词的概率,输出一个结果向量(长度也为 L)。

[0, 0, 0, 0.6, 0.3, 0.1]

比如上面的向量里 4 号词概率最高,是 0.6,所以下一个字要输出“吃饭”。整个模型的程序流程图如下。
在这里插入图片描述

摸清流程:Transformer 架构及流程图

甚至你可以用 Python 代码实现这个“大模型”。接下来的 Transformer 程序流程虽然比这个复杂,但是和外围辅助概念 输入、输出、词表 相比,结构和功能是一样的,只是概率计算方法不同。所以,我们完全可以在这个流程图的基础上进一步细化理解 Transformer 程序流程。

在真正开始细化这个流程之前,我们必须先搞清 Transformer 的整体架构。我引用了一张 Transformer 论文里的架构图,这张图对熟悉机器学习的朋友来说逻辑非常清晰。

在这里插入图片描述

从这张图中,我们可以看到 Transformer 的核心组件包括编码器(Encoder)和解码器(Decoder),它们通过自注意力机制(Self-Attention)和多头注意力机制(Multi-Head Attention)来处理输入和输出。每一个编码器和解码器都由多个层组成,每一层都包含多个子层,这些子层协同工作,实现了对输入序列的深度学习和特征提取。

我们可以用“分治法”把 Transformer 架构先用红框分为 3 大部分,输入、编解码、输出,更容易一步步理解它。

在这里插入图片描述

业务视角的逻辑流程

示例数据

You:我爱你
GPT:i love you

Transformer 的工作原理

Transformer 是怎么做到通过输入一段文本,GPT 模型就能预测出最可能成为下一个字的字的呢?这个问题,我想下面的图已经表示得非常清楚了。

在这里插入图片描述

第一步,当 Transformer 接收到“我爱你”这个输入,经过 1- 输入层2- 编解码层,输出下一个字符 i

关键是第二步,此时的输入变为了“我爱你”加上第一步的输出 iTransformer 预测的输出是 love

总的来说,就是 Transformer 架构的输入模块接收用户输入并做内部数据转换,将结果输出给编解码模块,编解码模块做核心算法预测概率,输出模块根据计算得到的概率向量查词表得到下一个输出字符。其中,输出模块和刚才的经典概率模型一致,后续我们重点细化理解 “1- 输入模块”“2- 编解码模块” 就可以了。

Transformer 架构图里,每一个方框代表一个算法。对普通工程师而言,Transformer 架构图不好理解的部分无非就是每个方框里的算法细节,这也是我们下面要学习的知识点。

程序视角的逻辑:矩阵计算

Transformer 架构里的所有算法,其实都是矩阵和向量计算。先看一个 N x M 的矩阵数据结构例子。可以理解为程序中的 n 行 m 列 的数组。
在这里插入图片描述
其中,当 N = 1 时,就叫做 M 维向量

在这里插入图片描述
简单起见,我们可以把每一个方框里的算法统一描述为下图。这张图可能有点复杂,我来说明一下。
在这里插入图片描述

你看,每一个算法的输入都是 N1 x M1 的矩阵,每个算法都是在这个输入基础上和其他矩阵进行计算。假设有 i 个相关参数矩阵,那么最后都会输出矩阵 N2 x M2,它也会成为下一个算法的输入。

这些在箭头上的 Ni x Mi 矩阵的每次计算都是动态的,而作为运算参数的 Ci x Di 矩阵都是模型提前训练好的。Ni x Mi 矩阵是用户输入和算法的中间结果,Ci x Di 里的具体参数其实就是模型参数。

编解码层数为 Nx,表示同样的算法要做 Nx 次,但是要注意,每一层里的 Ci x Di 参数矩阵具体数值是不同的,也就是有 Nx 套这样的参数。

这样说的话,例 1 的实现逻辑就是:“我爱你” 字符串通过 Transformer 已经训练好的一系列矩阵参数通过多层计算后,就能获得最大概率的下一字 i

OK,这样抽象出来之后,我们接下来就不用再关注非核心的算法流程,只要重点理解 输入模块编解码模块 的过程就好了。

Transformer 核心算法和结构

我们集中注意力,依次细化最核心的三个算法和结构:Token 词表Embedding 向量Self-Attention 算法,并且在经典模型的程序流程图上进行细化。先从相对更好理解的 TokenToken 词表 开始说起。

Token 和 Token 词表

Transformer 中的 Token 词表和前述的词表作用相同,但 Token 是一个比词更细的单位。比如输入:“我叫xx”,会被拆成 4 个 Token:我 / 叫 / x / x。

拆分成 Token 的目的是控制词表的大小,因为在自然语言中,类似“xx”的长尾词占到了 90%。

比照经典模型的词表,刚才的例子都可以做成一张图表示 Token 词表

Token 在 Transformer 里会作为基本运算单位,用户的输入“我爱你”和“i”转换成 Token 表示就是 [ 我, 爱,你,#i ]。注意,Transformer 里的每个 Token 并不仅仅只有一个序号,而是会用一个 Embedding 向量表示一个 Token 的语义。

通过这种方式,Transformer 能够高效地处理各种输入,同时控制词表的大小,避免因长尾词导致的词表膨胀问题。

输入模块的核心:Embedding 向量

Embedding 向量 具体形式如下。

#i --> [0.1095, 0.0336, ..., 0.1263, 0.2155, ...., 0.1589, 0.0282, 0.1756]

长度为 M,则叫 M 维向量。对应的,它的 Token 词表 在逻辑上可以细化为下图。

在这里插入图片描述

Transformer 架构输入部分第一个流程就是 Embedding。以这个例子里的输入 Token [我, 爱, 你, #i] 为例,你可以把这个过程理解为:Token 挨个去词表抽取相应的 Embedding,这个过程我用图片表示出来了。
在这里插入图片描述

你看,假设词表总长度是 L,比如“我”这个 TokenEmbedding 就可以直接从词表里取出来。这个例子输入的总 Token 数量 N = 4Embedding 向量的维度是 M,此时抽取的矩阵是一个 4 x M 的矩阵。

GPT-3 里,Embedding 的维度 M = 12288,这个例子里 N = 4,所以最终输入模块得到的矩阵就是下面这样的。

在这里插入图片描述

这个矩阵将作为 Transformer 架构中后续处理的基础输入。

一个 Embedding 维度代表一个 Token 的语义属性,维度越高,训练成本就越高,GPT-3 的经验是 M = 12288 维,就足够涌现出类似人类的智能。好了,到此为止,我们已经把输入模块做了足够细化,下面是第一次细化后对应的程序流程图。
在这里插入图片描述

参考文献

  1. 原理:一个例子讲清楚Transformer原理
http://www.xdnf.cn/news/14863.html

相关文章:

  • Hive SQL 快速入门指南
  • Linux基本命令篇 —— less命令
  • 华为云Flexus+DeepSeek征文|利用华为云一键部署的Dify平台构建高效智能电商客服系统实战
  • 【论文阅读笔记】知网SCI——基于主成分分析的空间外差干涉数据校正研究
  • java进阶
  • 基于Uniapp+SpringBoot+Vue 的在线商城小程序
  • matplotlib 绘制水平柱状图
  • Java面试题030:一文深入了解MySQL(2)
  • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
  • 印度和澳洲的地理因素
  • BUUCTF [ACTF新生赛2020]music 1
  • TCP 和 UDP 是什么?
  • nginx基本使用 linux(mac下的)
  • MSPM0G3507之GPIO配置报错 #Sysconfig报错
  • 数据结构与算法 --- 双向链表
  • 从 AJAX 到 axios:前端与服务器通信实战指南
  • VR训练美国服务器:高性能解决方案与优化指南
  • 可编程逻辑器件的发展与比较
  • 逆向入门(22)程序逆向篇-TraceMe
  • FPGA设计的上板调试
  • Cisco FMC events无法加载并且cpu high故障- Cisco bug
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • AngularJS Git 提交消息规范
  • VS Code 配置本地 Dev Container
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • 翻译服务器
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • 第一章 从零开始学习大型语言模型-搭建环境
  • Spring Cloud:微服务架构的基石与实践指南
  • 从0开始学习计算机视觉--Day04--损失函数