Word embeddings词嵌入向量浅析
先从大家最关心的一个基本概念说起——词嵌入向量。这个看似简单的操作,其实是Transformer整个技术体系正常运转的基石所在。
一个值得留意的细节:模型本身会预设一个庞大的词汇库,比如包含50000个词。在这个库里,最先接触到的是一个被称为“嵌入矩阵”的模块,它为词汇表中的每一个单词单独分配一列。这些列的核心作用,是定义单词在初始阶段转换成的向量——也就是
Wₑ
在Transformer出现之前,“把单词转化为向量”的做法在机器学习中就已经非常普遍。虽然对初学者来说,这可能有些反直觉,但它却是整个技术链条的起点,值得花些时间理解清楚。这种转化方式通常被称为
词嵌入
模型权重
三个数字的组合可以直观地在三维空间中表示为一个坐标,但词向量的维度远不止于此。以GPT-3为例,其嵌入维度高达12,288。选择这样一个高维空间的意义在于,我们可以在其中找出大量的方向供模型利用。就像从三维空间中取一个二维切片,将所有点投影上去一样,为了让输出的词向量在动画演示中更易于理解,我也做了类似处理——从高维空间中选择一个三维“切片”,把词向量映射上去进行展示。
背后的关键思想是:在训练过程中,模型会持续调整权重,从而决定每个词被嵌入为向量的具体方式。它会倾向于找到一组嵌入,使这个空间中的特定方向能够承载明确的语义含义。就拿我目前运行的这个简单词向量模型来说,如果搜索所有与“塔”最相似的词向量,你会发现结果都是一些带有“塔”感的词汇。如果你想在家用Python复现,这就是我制作动画时使用的模型。虽然它本身不是Transformer,但足够说明一个问题:
空间中的方向确实可以传达特定的语义
向量
经典例子
一个流传很广的例子是:如果你计算“女人”和“男人”向量之间的差值,会发现这个差值大致等于连接两个词尖端的小向量,而这个差异与“国王”和“女王”之间的差值非常相似。于是,即便你不知道“女性君主”这个词,也可以通过向“国王”向量添加“女人减男人”的方向,并搜索最接近该点的词向量来获得它。至少在理论上,这能行。
当然,实际的“女王”嵌入会比这个方法预想的稍远一些——原因可能是训练数据中,“女王”并不只是“国王”的女性版本。经过深入挖掘,我发现用家族关系来解释会更恰当。关键不在这里,而在于:训练过程中,模型发现用这种嵌入方式更为有利——空间中的一个方向就能编码性别信息。
另一个例子:如果你从“意大利”向量中减去“德国”向量,再加上“希特勒”向量,结果会非常接近“墨索里尼”向量。这好比模型学会了将某些方向与“意大利”特性关联,其他方向则与二战轴心国领导人关联。
我个人最喜欢的一个案例是:在某些模型中,计算“德国”和“日本”的向量差,然后加上“寿司”向量,结果会非常接近“德国香肠”。另外,在寻找最近邻居时,我还惊喜地发现“猫”离“野兽”和“怪物”都很近。
数学计算---点积
有一个数学概念对理解后续章节至关重要:两个向量的
点积
举个例子:假设你在测试这个模型,从“cats”(复数)的向量中减去“cat”(单数)的向量,可能会在空间中找到表示复数概念的方向。为了验证这一点,可以计算某个向量与一些单数名词嵌入的点积,再与对应复数名词的点积进行比较。试一下就会发现,复数名词的点积通常高于单数名词,说明两者在某个方向上更对齐。更有趣的是,将同样的操作应用于“一”、“二”、“三”等词汇的嵌入,得到的数值是逐渐递增的——几乎可以量化地衡量模型认为一个词的“复数程度”。
GPT-3
需要再次强调:单词的嵌入方式是通过数据学习得到的。这个嵌入矩阵揭示了每个词汇的变化过程,属于模型中的第一批权重。根据GPT-3的数据,其词汇量具体为50,257——但要注意,这里说的不是单词本身,而是
Tokens
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名