词向量是什么?分布式表示的工作原理详解

作者:Nicky2026.11.04 07:10浏览量:0

简介:词向量(Distributed Representation)是将词语映射为低维稠密实数向量的表示技术,使语义相近的词在向量空间中彼此接近。本文系统讲解词向量的定义与价值、发展脉络、跳字模型的核心数学原理与训练过程、典型应用场景及使用注意事项,帮助读者真正理解词向量从何而来、如何工作、边界在哪。

一、概念定义:词向量是什么

词向量,又称分布式表示(Distributed Representation),是自然语言处理中用于表示词语的一种基础技术:它把词表中的每个词映射为一个固定长度的低维稠密实数向量(常见维度为 50、100、300 维),并让向量之间的几何关系反映词与词之间的语义关系——语义相近的词(如“电脑”与“计算机”)在向量空间中距离较近,语义无关的词则相距较远。

理解这个定义要抓住三点:

  • “分布式”的含义:一个词的语义不由向量中某一维单独决定,而是分散在所有维度上共同表达;反过来,向量的每一维也不对应某个可命名的语义特征,而是一种“隐性特征”。这正是它与“一位代表一个特征”的稀疏编码的根本差异。
  • 与独热表示相对:传统做法把每个词表示为长度等于词表大小的稀疏向量,仅对应位置为 1,其余为 0。这种表示维度极高、任意两词正交,完全无法表达词之间的相似性。
  • 词向量是学出来的,不是设计出来的:它本质上是从大规模语料的上下文统计规律中训练得到的参数,其质量由语料规模、领域覆盖和训练方法共同决定,并非人工定义的规则。

二、背景与价值:为什么需要词向量

在分布式表示普及之前,让计算机“理解词语”面临三个典型困难:

  1. 语义鸿沟:独热表示下任意两个不同词的相似度完全相同,“猫”与“狗”的距离和“猫”与“火箭”毫无区别,模型无法利用语义相似性做泛化。
  2. 维度灾难:真实词表可达数十万量级,独热向量既占存储,又让后续模型参数量爆炸。
  3. 泛化能力差:基于人工规则或简单共现统计的表示,很难稳定迁移到新数据、新领域。

分布式表示针对性地解决了这些问题,其价值包括:

  • 低维稠密:几十到几百维即可表达一个词,便于存储与计算;
  • 语义可计算:可用余弦相似度、欧氏距离度量词间关系,甚至能以向量运算表达类比关系(经典的“国王 − 男 + 女 ≈ 女王”现象);
  • 可泛化:训练时未直接共现的词,只要上下文分布相似,也能获得相近向量;
  • 可迁移:作为下游任务(分类、匹配、排序)的输入特征,大幅降低各任务对标注数据的依赖。

从技术演进看,词向量的构造方法大致经历三个阶段:

  • a. 统计分解阶段:以基于奇异值分解(SVD)的潜在语义分析为代表,先构建词—文档或词—词共现矩阵,再做矩阵分解降维,思路是“全局统计 + 线性代数”;
  • b. 浅层神经网络阶段:以跳字模型(skip-gram)和连续词袋模型(CBOW)为代表的预测式方法,用轻量神经网络在海量无标注语料上直接训练词向量,效果与效率显著提升,成为经典的静态词向量方案;
  • c. 上下文相关阶段:基于自注意力机制的预训练语言模型让同一个词在不同语境中获得不同向量,克服了静态词向量无法处理一词多义的局限。

三、核心组成:一套词向量训练方案的要素

  1. 训练语料库:大量无标注自然语言文本,是词向量的信息来源;
  2. 词表 V:经分词、去噪、低频过滤后保留的全体词集合;
  3. 滑动窗口:在句子上移动的固定大小范围,用来界定“谁与谁互为上下文”;
  4. 两套向量:词表中每个词 w 都有两个向量——作为中心词时的向量 v_w,以及作为上下文词时的向量 u_w。训练结束后通常只保留 v_w(或对两者取平均)作为最终词向量;
  5. 打分函数:用向量内积衡量中心词与候选上下文词的匹配程度;
  6. 训练目标:最大化语料中真实出现的“中心词—上下文词”对的概率,等价于最小化相应损失。

四、工作原理:以跳字模型为例

跳字模型的直觉来自分布假设:一个词的含义由它的上下文决定。反过来说,若两个词总出现在相似的上下文里,它们大概率语义相近。训练过程用大白话概括就是:

  • 初始时,所有词的向量都是随机赋值的,没有任何语义;
  • 模型的任务:在语料上滑动窗口,用中心词尽可能准确地预测窗口内的上下文词;
  • 每次预测不理想,就依据误差微调相关词的向量;
  • 经过海量“预测—纠错”循环后,向量趋于稳定:凡是习惯出现在相同上下文里的词,其向量自然靠拢。此时训练结束,得到的向量表就是词向量。

数学上,给定中心词 c 时,预测上下文词 o 的条件概率采用对全词表归一化的 softmax:

  1. P(o|c) = exp(u_o^T · v_c) / Σ_{w∈V} exp(u_w^T · v_c)

分子是目标上下文词 o 的向量与中心词向量的内积取指数;分母则对整个词表求和,保证所有候选词的概率之和为 1。以语料 “the cat sat on the mat”、窗口大小为 2 为例:

  1. 中心词:sat
  2. 窗口内上下文:the, cat, on, the
  3. 最大化:P(the|sat)、P(cat|sat)、P(on|sat)、P(the|sat)
  4. 窗口右移一个位置,重复上述过程

整体训练目标可写成对数似然形式:

  1. L = Σ_{t∈语料} Σ_{o∈窗口(t)} log P(o | center(t))

训练使用随机梯度下降:每步取出一对“中心词—上下文词”样本,计算 −log P(o|c),再分别对 v_c 与各 u_w 求梯度并更新。梯度更新有直观解释:每次更新都会“拉近”真实上下文词的向量,同时由于 softmax 归一化的分母存在而“推远”其他词;语料中亿万次样本的反复拉扯,最终把语义相近的词推到一起。

代价与加速:softmax 分母需要遍历整个词表,当词表达数十万时每步开销难以承受。经典加速手段包括:

  • 负采样:不做全词表归一化,改为“真实上下文词判为正例 + 随机抽取少量噪声词判为负例”的二分类训练,把单步计算量从与词表同阶降为常数阶;
  • 层次 softmax:用哈夫曼树组织词表,把多分类拆成一串二分类,复杂度降为对数级;
  • 高频词降采样:对“的、是、在”等高频词按概率跳过部分样本,让信息量更大的中低频词得到更充分学习。

伪代码示意(通用流程,与任何特定工具无关):

  1. 初始化:为词表中每个词随机赋值 v_w、u_w
  2. for 每个训练轮次:
  3. for 每个位置 t 的中心词 c 及窗口内上下文词 o:
  4. p = softmax(u^T · v_c)
  5. loss = −log p[o]
  6. 对 v_c 与相关 u_w 按梯度反向更新
  7. 输出:每个词的向量 v_w,即词向量表

需要强调两点:其一,词向量的每个维度没有可解释的命名含义,它是训练中“涌现”的分布式编码;其二,词向量完全由语料的上下文统计规律决定,不是凭空得来的——换一份语料重新训练,得到的向量数值体系就完全不同。

五、典型应用场景

  1. 搜索与推荐:将查询与候选内容映射到同一向量空间做语义召回,弥补关键词精确匹配的不足,如“笔记本”与“手提电脑”这类同义表达能够互相命中;
  2. 文本分类与情感分析:对句中词向量取平均或加权池化后作为分类特征,降低标注数据需求;
  3. 序列标注任务:命名实体识别、关键词抽取等任务可将预训练词向量作为模型嵌入层的初始化,加快收敛;
  4. 同义词归纳与主题聚类:对词向量做聚类,可自动发现同义词组与主题词族;
  5. 跨语言任务:语义对齐的向量空间可用于双语词典归纳、跨语言检索;
  6. 理解现代大模型的第一步:现代大模型使用的是上下文相关表示,但“把离散符号映射为稠密向量”这一思想正始于词向量。工业实践中,词向量也常与云平台上的向量检索、语义搜索、文本相似度计算等通用能力(例如百度智能云上提供的此类基础服务)配合,构建端到端的语义计算链路。

六、相关概念辨析

  • 词向量 vs 独热表示:稀疏与稠密、维度等于词表与固定低维、无语义结构与有语义几何结构之别。
  • 词向量 vs 词嵌入:两者常混用。严格说,“词嵌入”指把词映射到连续空间这一过程与框架,“词向量”是映射后得到的向量结果。
  • 静态词向量 vs 上下文相关词向量:静态方案中每个词只有一个固定向量,无法区分一词多义(“苹果手机”与“苹果好吃”中的“苹果”向量相同);基于自注意力机制的预训练模型则依据整句上下文动态生成表示。静态方案胜在轻量、易部署、查表推理几乎零成本。
  • 词向量 vs 句向量/文档向量:后者对整句或整篇文档编码,常见做法是对词向量加权平均,或使用专门训练的句级编码模型。
  • 词向量 vs 模型嵌入层:词向量通常指“训练完成后落盘、离线查表可得的向量表”;神经网络第一层的嵌入参数则随任务端到端联合训练。两者思想同源。

七、使用注意事项

  1. 语料决定上限:领域不匹配会让向量失真,例如用通用语料训练的向量直接服务于医疗文本效果有限,有条件时应在领域语料上微调或重训;
  2. 超参数需结合任务验证:维度过低损失区分度、过高易过拟合高频词(常取 50–300 维);窗口小偏“语法相似”,窗口大偏“主题相似”;
  3. 未登录词问题:静态词向量查不到新词,需设计回退策略(子词切分、字符级向量或占位符处理);
  4. 一词多义局限:静态向量会把多义词语义混叠,需要消歧的任务应谨慎使用;
  5. 偏见继承:语料中的社会偏见(性别、地域等)会被向量学习并固化,敏感场景需做偏见检测与缓解;
  6. 版本一致性:词表或语料变更后重训的向量空间不可与旧版本混用,线上应以“词表 + 向量版本号”为单位整体更新,避免查表错位;
  7. 相似度的正确用法:余弦相似度衡量的是“上下文分布的相似性”,与人工语义判断并不完全一致,业务阈值需基于真实数据校准。

八、总结

回到定义本身:词向量(分布式表示)是通过大规模语料的上下文统计规律学习得到的低维稠密向量表示,其核心思想是“一个词的含义由其上下文决定”。它解决了独热表示无法表达语义相似、维度爆炸、泛化差三大问题。以跳字模型为代表的经典方案,通过“随机初始化 + 中心词预测上下文 + softmax 归一化 + 梯度反复调整”训练出具有语义几何结构的向量空间,可作为搜索、分类、推荐、聚类等任务的通用特征底座;同时它在多义词、未登录词与偏见控制上存在明确边界。理解了词向量,也就掌握了从静态表示走向上下文相关表示、再到大模型嵌入机制的整条技术演进路径的第一块基石。