楼主:
newwu (frankwu)
2025-09-12 07:59:19※ 引述《Supasizeit (Shitpost King)》之铭言:
: 阿北当年联考数学95
: 可是没有念资工
: 今天心血来潮
: 尝试理解LLM transformer 原理
: 可是讲到token就听不懂了
: 然后又变成embedding
: 弄一弄变成weights
: 怎么突然就变成attention block
: 这不是大学生每个都懂的东西吗
不是
: 我是不是失智了
所谓语言模型在处理什么?其实就是人类的语言嘛。
所以除了要数学上的思考,也要站在人类语言的角度去理解。
那么,token 是什么?
其实就是模型读入的最小单位。
这个 token 可能是word subword(类似字首字根) character等等。
英文主流的做法多半是用subword来分(如果有错请纠正 XD)。
为什么要这样分?
想一想其实很合理。对人类来说,语言中意义的最小单位是什么?
像 "dog" 这个字没什么好拆的,如果拆成 "d" 和 "og",对人类完全没意义,和“狗”无关。
但有些字是由小单位的意义组成,例如 re-organ-ization。
怎么切的话,算是算法决定的,
不过,表现好的切法,通常人类看了也会觉得切得有道理。
Embedding 就是把每个词转换成向量。
因为模型只能处理数字,
所以需要建立一个 token → embedding(向量) 的对应表,
再把语言的意义透过向量来处理。
问题是,怎么建立这个对应表?
在机器学习里,最简单的方式就是 one-hot。
例如:
dog → (1,0,0)
cat → (0,1,0)
mouse → (0,0,1)
可是这样效率很差。
语言里动辄上万个 token,多语言甚至可能上百万。
这样输入输出的维度就超大,还有很多同义词、近义词白白浪费空间。
因此通常不会用 one-hot,而是对应到一个“较小维度”的向量空间(几百到几千维)。
而且这些向量对应不是随便定义,而是透过模型训练学出来的。
这样才能让向量比较具备语义,例如:
cat 与 kitty 的距离最近
cat 与 dog 比较远
cat 与 car 几乎没关系
简单来说,embedding 就是在机器学习里,
模型可读取的意义/资讯表达,通常是一个多维向量。
是机器理解概念的方式。
至于 Transformer,可以想成对人类理解语言方式的一种模仿。
网络流行说:“每个字都看得懂,但合起来却看不懂。”
这正是语言理解的关键——
人会先读懂单字,再把上下文合起来理解。
文字摆在一起才有整体意义,
而单字的意义常常是上下文决定的。
举例:
英文的 interest 可以指“利益”、“利息”、“兴趣”。
当前后文提到贷款和数字时,我们会理解成“利息”。
当出现娱乐相关语境时,就会理解成“兴趣”。
Transformer 的重点就是:
从原本的单词意义出发(token/embedding),找出上下文关联,合成新的语意,
新的、更精准的含上下文embedding (contextual embedding)。
哪些字彼此有关联,模型就会把它们合起来看。
例如 interest 与 loan 一起出现时,模型就会发现它们高度相关,进而推断这里指的是
“利息”。
Transformer 的核心是 自注意力机制。
它的训练目标之一,就是让模型学会:
某个 token(或 embedding)应该去“注意”哪些其他 token。
这就是所谓的“注意力”。
意思是:当看到这个词时,应该去关注哪些相关的词,
而这些相关词会帮助模型正确理解它的意义。
所以不管是 token → embedding 的对应,还是 Transformer 的结构与训练,
核心其实都是 字与字之间的关系。
也因此可以说:单一词汇本身不构成意义,关系才构成意义。
现代机器学习方法,很多都是在模仿人类思考。
有时候拿来跟人类的理解、学习、思考方式对比,
会发现很有趣。