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

开始理解大型语言模型(LLM)所需的数学基础

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

要提出像GPT这类大型语言模型的概念,并从事严肃的人工智能研究,确实需要扎实的数学功底。然而好消息是,如果只是想理解这些模型的工作原理,所需的数学并不复杂。只要曾经在1960年代以后接受过高中数学教育,就已经掌握了基本的知识,比如向量、矩阵等内容。

需要注意的是,本文讲解的是理解“推理”过程所需的数学知识——也就是如何使用一个已经训练好的人工智能模型,而不是关于如何训练它的过程。虽然训练所需的数学也并不复杂,但那部分内容将留待后续文章介绍。

明确这一点后,正式开始深入讲解。

向量与高维空间

博主使用了“向量”一词,基本等同于软件工程师所说的“数字数组”。但在数学意义上,一个长度为 n 的向量不仅是一个数组,它还表示一个 n 维空间中的方向和距离,或者等价地,可以看作是从原点出发,沿着这个向量到达某个点。

在二维空间中,向量 (2, -3) 意味着“向右两单位,下移三单位”,也就是从原点出发移动后所处的位置。三维空间中的向量 (5, 1, -7) 则意味着“向右五单位、上移一单位、远离观察者七单位”(某些情况下可能表示向观察者移动七单位)。当维度更高时,人类无法直观想象,但概念上是一致的。

在LLM中,向量用于表达各种含义。例如,模型输出的logits向量(见上一篇)代表了对下一个token的不同可能性的预测。在这种情形下,可以将logits看作存在于一个高维空间中,这个空间表示了“意义”的分布。

词汇空间(Vocab Space)

每个token对应的logits值是一组数字,每个数字表示该token在当前上下文中作为下一个token的可能性。在书中分析的GPT-2模型中,其tokenizer包含50,257个token,因此每个logits向量的长度也是50,257。比如,token ID为464的是“The”,那么logits向量中第464位的数值表示“The”作为下一个token的相对概率。

可以将每一个logits向量视为一个存在于50,257维空间中的点。这个空间的每一个位置都代表了对下一token的各种可能性组合。本文将这个空间称为“词汇空间”。

不过,这是一个“混乱”的词汇空间。假设一个简化的LLM,其词汇表中只有三个token,那么两个logits向量 (1, 2, 3) 和 (-9, -8, -7) 虽然数值不同,但表达的是相同的排序:第一个token最不可能,第二个次之,第三个最可能。

为了整理这种冗余,可以将logits向量传入softmax函数,从而得到一组真实的概率分布。这组概率数值介于0到1之间,总和为1。这样,所有表达相同排序的logits向量将映射为同一个概率向量。例如,(1, 2, 3) 和 (-9, -8, -7) 都会被softmax映射为大约 (0.09, 0.24, 0.66)。

需要指出的是,其他向量也可能表达相同的排序,但概率分布不同。例如,(1, 2, 5) 虽然仍是“第三个token最可能”的排序,但其softmax结果会是类似 (0.02, 0.05, 0.94) 的分布,显示出第三个token的优势更加明显。

因此,可以将词汇空间分为两类:一种是“混乱”的、未经归一化的向量空间;另一种是经过softmax函数后得到的、表示真实概率分布的“整洁”空间。

还有一种特殊情况是所谓的“one-hot向量”,其中只有一个数值为1,其余均为0,表示某个token的概率为100%。这种向量在下一篇文章中将发挥关键作用。

嵌入空间(Embedding Space)

嵌入空间是另一种高维空间,向量在此代表“意义”。如果将这些向量视为点,那么在语义上相近的词汇会在空间中聚集在一起。

“意义”的定义因任务而异。比如,在一个为动物学家设计的嵌入空间中,“家猫”、“狮子”和“老虎”可能聚集成一个簇,而“狗”、“狼”和“郊狼”则形成另一个簇。这种分类体现了对猫科动物和犬科动物的区分。

而在日常应用中,可能更希望看到“家猫”和“狗”聚在一起,远离“狮子”或“狼”等野生动物。这种嵌入空间更适合用于普通文本的处理和分析。

嵌入空间的维度和定义方式是灵活多样的,可以从表达复杂概念的“丰富空间”,一直到仅根据词性(如动词、名词、形容词)来聚类的“简单空间”。

一个可能令人困惑的事实是,在嵌入空间中,向量的长度往往并不重要。比如,(1, 2) 和 (8, 16) 方向一致,因此可视为表达相同的意义。

矩阵乘法实现空间投影

复习一下:矩阵本质上是多个向量的集合。例如,将两个二维向量 (2, -3) 和 (5, 1) 并排组合成矩阵:

[2 5]
[-3 1]


或按行排列:

[2 -3]
[5  1]


矩阵的维度用“行×列”表示。上面两个都是2×2矩阵。另一个例子是2×3矩阵:

[ 2 -3  7]
[ 5  1 -8]


矩阵可以相乘。这种乘法可用于几何变换。例如,下面这个2×2旋转矩阵:

[cosθ  -sinθ]

Shortcode

可以将点绕原点逆时针旋转θ度。将所有点放入一个n×2矩阵X(每行一个点),与旋转矩阵R相乘得到结果矩阵Y:

Y = X · R


在传统数学教学中,点通常是列向量组成的2×n矩阵,此时矩阵乘法写作R · X。但在机器学习中,更常采用“行优先”的格式,将每个点表示为行向量,组合成n×2矩阵,再与R右乘,即X · R。本文从此将采用这一方式。

可以将这个旋转矩阵R理解为一种函数,将输入的点变换成另一个空间中的点。也可以将其看作是将点从一个二维空间投影到另一个旋转过θ度的空间中。

更广泛地说,矩阵乘法可用于在不同维度的空间之间进行投影。例如:

  • 3×2矩阵可将三维空间中的点投影到二维平面(用于图形显示)

  • 50,257×768矩阵可将50,257维空间投影到768维空间

  • 768×50,257矩阵则实现从768维空间到50,257维空间的投影

这种投影可能是“有损”的,也就是说,在降维过程中会丢失一部分信息,即使再投影回来,也无法恢复原始数据。例如将两个不同远近的正方体投影到二维平面后,可能变成大小相同的图形。

神经网络的本质

一个神经网络的单层可以简化表示为:

Z = ϕ(XWᵗ + B)


其中ϕ是激活函数,B是偏置项。若忽略这两个部分,则简化为:

Ẑ = XWᵗ


其中:

  • X 是输入数据,形状为 n × d_in

  • W 是权重矩阵,形状为 d_out × d_in,转置后为 d_in × d_out

  • Ẑ 是输出矩阵,形状为 n × d_out

因此,神经网络中的一层实质上就是一个矩阵乘法过程,即从一个输入维度的空间投影到输出维度的空间。偏置项B仅仅是一个线性平移,激活函数则可选。

总结

以上便是目前为止理解大型语言模型所需的基本数学概念。正如文章开头所述,这些内容基本不超出高中数学的范畴。尽管涉及的矩阵较大、空间维度较高,但核心数学原理仍然相对简单。


文章转载自:

http://YCEdqK4E.nrfrd.cn
http://2KG5kDbW.nrfrd.cn
http://0Kexnd96.nrfrd.cn
http://tSKAjvIV.nrfrd.cn
http://F5HPTGMZ.nrfrd.cn
http://UMvii3HE.nrfrd.cn
http://X5zc546m.nrfrd.cn
http://sS0enp5M.nrfrd.cn
http://5glrphIZ.nrfrd.cn
http://bGNx8t1s.nrfrd.cn
http://bdeNiAZL.nrfrd.cn
http://sWtyDgXL.nrfrd.cn
http://alVkMHTb.nrfrd.cn
http://ehKUC3w5.nrfrd.cn
http://stDnvi4k.nrfrd.cn
http://YyiVFYch.nrfrd.cn
http://ttywT0G5.nrfrd.cn
http://nPQey7xU.nrfrd.cn
http://JxSIB39i.nrfrd.cn
http://XNOUXofv.nrfrd.cn
http://h4k8c4Ou.nrfrd.cn
http://vv81wr9f.nrfrd.cn
http://wF8LIwkc.nrfrd.cn
http://P6BPw9z0.nrfrd.cn
http://LzYKSDZ9.nrfrd.cn
http://AgSbLRKx.nrfrd.cn
http://IBeC5VXL.nrfrd.cn
http://bt5KX413.nrfrd.cn
http://uiJkzlBp.nrfrd.cn
http://5pmWtk5N.nrfrd.cn
http://www.dtcms.com/a/372732.html

相关文章:

  • 搭论文大纲逻辑乱易跑题?AI 3 步梳理框架,自动串逻辑链
  • C#SqlSugar的简单使用
  • 【军事类】军舰识别检测数据集:3400+图像,4类,yolo标注
  • 基于若依框架Vue+TS导出PDF文件的方法
  • ArcGIS学习-18 实战-降雨量空间分布插值分析
  • OpenCV 银行卡号识别
  • CentOS 8重启后网卡不见了解决办法
  • Nginx反向代理和负载均衡详解及使用Nginx和tomcat共同实现动静分离配置
  • UDP的使用
  • WGAI项目图像视频语音识别功能
  • 9.3深度循环神经网络
  • 【嵌入式硬件实例】-555定时器实现自动晚灯(220V)
  • Linux Shell | set、env、export 用法区别
  • 浅聊一下微服务的服务保护
  • Nginx 实战系列(五)—— Nginx流量监控:从stub_status到nginx-module-vts的进阶指南
  • 34. 什么是反射
  • YOLO11 改进、魔改|通道自注意力卷积块CSA-ConvBlock,实现 “轻量化特征增强”
  • 优先搜索(DFS)实战
  • 计算机视觉opencv----银行卡号码识别
  • 第六章、从transformer到nlp大模型:编码器-解码器模型 (Encoder-Decoder)
  • pymodbus启动一个简单的modbus tcp server
  • 【NowCoder】牛客周赛 Round 108 EF (背包问题 | SOSDP)
  • 【ARMday02】
  • OFDR设备开机到出图的5个关键操作步骤
  • ArcGIS学习-19 实战-表面分析
  • 【算法】双指针(二)复写零
  • 视频串行解串器(SerDes)介绍
  • PyTorch 动态图的灵活性与实用技巧
  • 【P01_AI测试开发课程-导论】
  • 从社交破冰到学习规划,鸿蒙5开启智慧校园新生活