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

【大语言模型入门】—— 浅析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原理

相关文章:

  • 面试八股---HTML
  • 【51单片机节日彩灯控制器设计】2022-6-11
  • Linux的基础IO
  • Segment Anything in High Quality之SAM-HQ论文阅读
  • 浮油 - 3 相分层和自由表面流 CFX 模拟
  • 消息队列:Redis Stream到RabbitMQ的转换
  • 【libm】 7 内核余弦函数 (k_cos.rs)
  • 大模型本周进展(0623~0629)
  • WSL安装发行版上安装podman
  • 常用期权定价模型
  • AI金融科技/区块链合规相关研究的经验
  • 力扣第85题-最大矩形
  • Java中对JSON的操作
  • StarRocks 3.5 新特性解读:Snapshot 快照恢复、大导入性能全面升级、分区管理更智能
  • redisson看门狗实现原理
  • OD 算法题 B卷【阿里巴巴找黄金宝箱4】
  • Vue 与react 生命周期对比
  • 机器学习-02(深度学习的基本概念)
  • chapter02_AbstractBeanfactory与模板方法
  • 力扣第87题-扰乱字符串