当前位置: 首页 > 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原理
http://www.lqws.cn/news/569791.html

相关文章:

  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • 【系统分析师】2021年真题:案例分析-答案及详解
  • SpringCloud系列(41)--SpringCloud Config分布式配置中心简介
  • 《从Backprop到Diffusion:深度学习的算法进化树全景图》
  • C++洛谷P1001 A+B Problem
  • 7类茶叶嫩芽图像分类数据集
  • 低延时高速数据链技术在无人平台(无人机无人船无人车)中的关键作用与应用
  • 2025年前端最新面试题及答案
  • S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
  • 【算法设计与分析】(三)二分搜索技术与大整数乘法
  • Spring Cloud:分布式事务管理与数据一致性解决方案
  • stm32之普通定时器
  • C++并发编程-5.C++ 线程安全的单例模式演变
  • 从代码学习深度学习 - 自然语言推断:使用注意力 PyTorch版
  • burp suit使用
  • 自动化提示工程:未来AI优化的关键突破
  • mysql数据库完整备份导出
  • 板凳-------Mysql cookbook学习 (十--15)
  • Java面试宝典:基础四
  • 消息队列:Redis Stream到RabbitMQ的转换
  • allegro 铜皮的直角边怎么快速变成多边形?
  • Python 数据分析与可视化 Day 11 - 特征工程基础
  • MyBatis的添加(insert)操作
  • vue-30(理解 Nuxt.js 目录结构)
  • Ubuntu基础(上传文件和部署Python)
  • [database] Closure computation | e-r diagram | SQL
  • FastAPI + 大模型流式AI问答助手实战教程
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • ROS常用的路径规划算法介绍
  • Redis初识第五期---List的命令和使用场景