引言:从颜色例子开始
我们先从一个例子开始,假设有三种颜色:红色、绿色、蓝色。 你需要让电脑能理解他们,但是电脑不能理解文字,它只能理解数字。
于是你想了个办法,直接用数字表示它们,比如红色=1,绿色=2,蓝色=3,但这样的话,电脑可能会误以为这些数字有大小关系(比如3>2>1)。
但实际上颜色之间没有大小关系。为了避免这种问题,有人脑袋一热就想到了一热编码。

什么是 One-Hot 编码?
一热编码是一种常见的向量表示方法,主要用于将离散的类别数据转换为机器学习模型易于处理的数值形式。
它是一种稀疏向量,其核心特点是:在向量中只有一个位置为 1,其余所有位置均为 0。
这种表示方式确保了不同类别之间没有隐含的顺序关系。
实际例子:句子分词与词汇表
现在假设我们有这样一句语料:“他喜欢喝咖啡加糖”
首先,模型使用分词工具将句子拆分成词,我们假设分词结果是这样:[“他”, “喜欢”, “喝”, “咖啡”, “加糖”]
然后模型为每个词分配一个从0开始的索引,这样例形成一个“词汇表”。
我们这个词汇表比较简单,只有5个词,所以它的V = 5。
One-Hot 向量的具体表示
接着,将词汇表中的每个词转换为 one-hot 向量,用来表示词的“身份”。
向量长度等于词汇表大小, 例如这里是 5。 每个词的 one-hot 向量在对应索引位置为 1,其他位置为 0。
“他” (索引 是0),那么第0位是1,其它位为0 [1, 0, 0, 0, 0]
“喜欢” (的索引 是1): 那么第1位是1,其它位是0 [0, 1, 0, 0, 0]
“喝” (索引 2): [0, 0, 1, 0, 0]
“咖啡” (索引 3): [0, 0, 0, 1, 0]
“加糖” (索引 4): [0, 0, 0, 0, 1]
One-Hot 编码的优点
这就形成了我们的one-hot向量。
可能你也发现了,one-hot编码不假设词之间有任何数值关系,避免了误解,也非常便于矩阵运算。
One-Hot 编码的缺点
但是它的缺点也很明显,one-hot向量维度等于词汇表大小,我们例子中的词汇表大小是5,如果我们的词汇表很大,比如 10 万个词,那么每个词的 one-hot 向量就是 10 万维,而且大多是 0,非常稀疏,它的存储成本高。
并且它无法捕捉语义关系。
One-Hot 在词向量训练中的作用(CBOW 模型)
那它在词向量的训练过程中到底起什么作用呢?
在 CBOW 模型中,one-hot向量是“起点”。
上下文词的One-Hot向量会做为输入数据和一个权重矩阵相乘,从而映射到低维稠密向量。这个稠密向量是模型学习的核心。
稠密向量会存储在嵌入矩阵中,最开始的时候,嵌入矩阵的每个元素会被随机初始化。
具体计算过程示例
在我们这个视频中,我们的词汇表大小是5,为了简化,我们假设模型设定的词向量维度为d=3(实际中会更高,如100或300维度)。
那么模型会有一个这样的权重矩阵W:
W = [
[0.23, -0.15, 0.67], // “他”的词向量
[0.12, 0.45, -0.33], // “喜欢”的词向量
[-0.56, 0.78, 0.19], // “喝”的词向量
[0.34, -0.22, 0.88], // “咖啡”的词向量
[-0.17, 0.65, -0.41] // “加糖”的词向量
]
当输入一个One-Hot向量(如“他”的One-Hot向量[1, 0, 0, 0, 0]),通过矩阵乘法,结果会得到权重矩阵W的第一行,也就是得到“他”的稠密向量:[0.23, -0.15, 0.67]。
稠密向量经过计算之后会再和一个形状为3×5的权重矩阵W’相乘,用于将3维稠密向量再映射到5维的得分向量。
h × W’ = [s0, s1, s2, s3, s4]
这里它对应词汇表中每个词的得分。
然后再使用softmax函数将这些得分归一化为概率。
损失计算与模型优化
例如,现在假设我们的目标词是‘喝’ 它的one-hot向量是:[0, 0, 1, 0, 0]
在经过某一轮推理得到的softmax结果如下 [ 0.1, 0.2, 0.85, 0.1, 0.2]
我们看到,这一轮推理结果中,第2位等于0.85,不够接近 1,其他位置也不接近 0,说明预测有误差。
在CBOW中,这一步通常会使用交叉熵损失来衡量预测概率与目标 One-Hot 向量的差距。
L = -log(y2)
模型的目标是让 目标概率 接近 1(例如 0.999),从而使损失接近 -log(0.999)≈ 0.001。
在我们这个例子中目标词‘喝’的预测概率是0.85,代入公式得到损失约等于 0.0706。
显然这个损失值过大,于是模型会通过反向传播,计算损失对嵌入矩阵 W 和输出层矩阵 W’的梯度。
最终通过多次迭代,嵌入矩阵 W 的行(也就是词向量)就会学习到词的语义关系。
总结思考
One-Hot 编码作为大语言模型中的基础知识点,虽然存在维度灾难和无法捕捉语义的局限性,但它为后续的词嵌入学习奠定了重要基础。
怎么样,你学会了吗?


