科普之旅 | 大语言模型中的词嵌入Word Embedding

360影视 欧美动漫 2025-04-18 07:08 2

摘要:在这个信息爆炸的时代,你是否曾幻想过与机器流畅交谈,或是让AI助你笔下生花,创作出惊艳的文章?这一切,都离不开大语言模型的神奇魔力。今天,让我们一起揭开这层神秘的面纱,走进大语言模型的科普奇幻之旅!

作者:胡赟豪

本文约2400字,建议阅读9分钟

本文将探讨解密词嵌入。

导读

在这个信息爆炸的时代,你是否曾幻想过与机器流畅交谈,或是让AI助你笔下生花,创作出惊艳的文章?这一切,都离不开大语言模型的神奇魔力。今天,让我们一起揭开这层神秘的面纱,走进大语言模型的科普奇幻之旅!

一、词嵌入(Word Embedding)的产生

由于自然语言很难直接被模型所处理,所以我们往往需要先将自然语言变成一个个的向量,再让模型来基于向量进行计算,这一过程就是词嵌入(Word Embedding)。人们在尝试将自然语言映射到向量空间时,首先能想到的是简单地让向量中的每一个维度代表一个词,用0和1来代表该词是否出现。这样一来,如果字典中总共有V个词,就需要V个V维的向量才能表示出所有的词,这就是词袋模型(Bag of Words)。

词袋模型虽然成功地将自然语言转换成了向量,但还存在着许多的问题。首先从字典角度看,不在字典中的词是无法处理的,这一问题后来在子词模型中得到了部分解决。其次从向量本身的角度来看,词袋模型产生的向量过大也过于稀疏了。例如一个有100万词的词典,就需要100万个100万维的向量才能逐一表示,而且这些向量中绝大部分的数字都是0。基于这些向量进行模型训练,将需要非常大的存储量和计算量。此外,词袋模型产生的向量并不和词的语义或者语法挂钩,也不能描述词之间的关系。基于这些向量的模型训练将需要更多的样本数据和更长的收敛时间。

那么,我们要如何将词袋模型的向量维度进行压缩,又要如何让这些向量能够和词本身的含义相关联呢?其实早在1954年,Zellig Harris就提出了词的分布假设(Distributional Hypothesis),认为词的分布和意义可以通过其上下文来进行推断。也就是说,通过对词与上下文之间关系进行适当建模,我们将可以得到更为理想的词嵌入结果。

二、CBOW和Skip-gram模型

2013年,Tomas Mikolov等在论文《Efficient Estimation of Word Representations in Vector Space》中提出了CBOW(Continuous Bag of Words)和Skip-gram模型,使用神经网络成功地建模了词与上下文之间的关系。

CBOW模型训练步骤:

1.构建全连接的三层神经网络,包括一个V维的输入层、N维的线性变换隐藏层和V维的输出层

2.在语料中依次滑动选择中心词,取中心词的前后C个单词作为上下文,计算这些词向量(此时还是词袋模型向量,长度为字典大小V)计算平均向量作为模型输入,输出层的训练标签则为中心词的词向量

3.使用标签和模型输出结果计算梯度,通过随机梯度下降和反向传播对模型参数进行更新

4.训练结束后依次取第v个词对应的隐藏层结果作为Embedding(即参数矩阵的第v行)

Skip-gram模型训练步骤:

1.构建全连接的三层神经网络,包括一个V维的输入层、N维的线性变换隐藏层和V维的输出层;

2.使用V维的中心词的向量作为输入,取中心词前后的C个单词的向量分别作为输出;

3.对每一个中心词,都使用上下文的C个单词分别作为标签预测C次,再通过随机梯度下降和反向传播对模型参数进行更新;

4.训练结束后依次取第v个词对应的隐藏层结果作为Embedding(即参数矩阵的第v行)。

图片来源:论文word2vec Parameter Learning Explained,arXiv:1411.2738v4

从上面模型的训练步骤可以看出,两个模型都是从语料中取出目标词和其上下文,作为模型的输入输出,再使用三层神经网络进行训练。两者的主要区别在于CBOW是用上下文预测目标词,而Skip-gram则是用目标词来预测上下文。两者相比,Skip-gram由于需要预测多个上下文词,计算量更大,所以训练得更慢一些。CBOW对于常见词的特征的描述的能力更强,但对罕见词的描述能力弱于Skip-gram(词向量平均可能损失了部分信息)。此外,实验结果显示CBOW更擅长捕捉词之间的语法关系,而Skip-gram更擅长捕捉词之间的语义关系。

通过以上两个模型,人们成功地生成了能够描述语义且维度更少(N维)的词向量。将部分词向量结果通过PCA投影到二维平面时,可以清楚地看到词之间的关系,例如下面Skip-gram模型的结果:

图片来源:论文Distributed Representations of Words and Phrases and their Compositionality,arXiv:1310.4546v1

三、层次softmax和负采样

在上面的模型中,需要训练的总参数量为V×N+N×V,在V很大的时候模型的计算量依然很大。为提高模型的训练效率,减少计算量,Tomas Mikolov等先后引入了层次softmax(Hierarchical Softmax)和负采样(Negative Sampling)对模型的输出层进行优化。

层次softmax方法将模型的输出层从V维的向量替换成了一个通过Huffman编码(常用词路径更短)得到的二叉树。二叉树的每个叶子节点对应一个词,而模型的预测标签将是词在二叉树的路径(使用0、1分别表示左子树和右子树)。这样一来V维的输出层将变成维,大大降低隐藏层到输出层的参数数量。例如,对于一个100万词的词典,每个词的向量长度将由100万下降至20。

负采样的方法则是在每次训练时,通过负样本抽样来减少计算次数。原始模型中每次使用V维标签更新时,相当于使用了1个正样本和V-1个负样本。如果这时只随机抽取k个词作为负样本进行参数更新的话,输出层的计算量将从N×V下降到可控且固定的N×(C+k)了。负样本的抽样基于词的出现概率调整后得到的分布,例如在Tomas Mikolov的论文中,实验发现抽样概率与词频的3/4次方成正比时效果比较好。

两个方法对输出层的调整如下图所示。通过这些方法降低计算的复杂度后,模型将能够更高效地处理更大的数据集,从而提高模型效果。

图片来源:改自论文word2vec Parameter Learning Explained,arXiv:1411.2738v4

四、词嵌入技术的发展

在CBOW和Skip-gram模型之后,大量的词嵌入技术开始涌现,并围绕这两个模型的局限性进行改进。比如以GloVe为代表的基于计数的模型,通过让词向量的点积拟合全局的词共现矩阵来训练词向量,从而更好地捕捉了词之间的关系。FastText模型则通过字符级的特征来表示单词,更好地描述了单词内部的结构,从而优化了罕见词的处理。直到2018年ELMo(Embeddings from Language Models)、BERT模型被提出,预训练的Transformer架构逐渐成为主流,词的嵌入也从静态变为动态(根据上下文动态生成)。此后,在Transformer架构的基础上,GPT等一系列模型被提出,进一步推动了词嵌入技术的发展,并开启了大语言模型时代。

作者简介

来源:数据派THU一点号

相关推荐