词嵌入
把「词」变成「坐标」——近义词自动聚在一起,语义第一次可以被加减
定义
词嵌入把离散的词映射为连续向量,使语义相近的词在空间里彼此靠近。早期方法(Word2Vec、GloVe)为每个词学习一个固定向量;上下文化方法(ELMo、BERT)则依据上下文为同一个词产生不同的向量,以区分多义词。
直观理解
one-hot 表示像给每个词发一张只有自己那一位是 1 的超长号码牌:任意两个词两两正交,距离都一样,模型无法知道「猫」和「狗」比「猫」和「吉他」更接近。词嵌入换成给每个词在地图上标一个坐标,近义词自然挤成街区,连类比关系都能用向量差表达:国王 − 男人 + 女人 ≈ 女王。
Skip-gram 的训练样本:中心词与窗口内的上下文词彼此拉近,无关词被推远
词嵌入的几何结构:国家与其首都之间保持近乎相同的偏移向量,二维投影即可看见这种平行关系(悬停看坐标)
工作原理
- 01
从 one-hot 到稠密向量
词表若有一百万词,one-hot 就是百万维、只有一位非零的稀疏向量,既占内存又无法表达相似度。嵌入把它压缩成几百维的稠密向量,用可学习的权重矩阵完成查表。
- 02
用上下文预测学习向量(Word2Vec)
CBOW 用周围词预测中心词,Skip-gram 用中心词预测周围词。核心假设是「上下文相似的词,意思也相似」。直接用 softmax 预测全词表太慢,负采样改成把真实上下文词与少量随机负例做二分类,训练量大减。
- 03
用全局共现统计(GloVe)
GloVe 先统计整个语料里词对的共现频次,再让两个词的向量内积去拟合共现次数的对数。它把 Word2Vec 的局部窗口预测换成了全局矩阵分解,训练更稳定,也更容易并行。
- 04
上下文化嵌入(ELMo / BERT)
静态嵌入给「bank」永远同一个向量,无法区分河岸与银行。ELMo 用双向 LSTM、BERT 用双向 Transformer,按整句上下文逐词生成向量,同一词在不同句子里得到不同表示,多义词问题大幅缓解。
词类比任务的报告准确率:从静态嵌入到子词方法,量级逐步提高(各论文数据集与设置不同,此处仅作量级参考)
应用场景
- 语义检索与 RAG:把文档和提问编码到同一空间,直接取最近邻
- 推荐与广告:用户向量与物品向量做内积,得分越高越可能点击
- 聚类与主题探索:把语料投影到二维,观察词与文档的天然分组
- 下游模型输入:为大模型提供第一层词表示,是所有 NLP 任务的地基
常见误区
- 静态嵌入无法区分多义词。同一个「苹果」在公司语境和水果语境下被迫共享一个向量,语义被平均,下游容易出错。
- 类比运算并非普适真理。它成立的前提是语料中该关系高度规律,「国王 − 男人 + 女人」有效,换成冷门关系就常常失效,并会把语料中的性别、文化偏置原样保留。
- 维度并非越大越好。维数增加会带来更多参数与更高的过拟合风险,收益通常在几百维后明显递减。
关键术语
- one-hot
- 只有一位为 1 的稀疏向量,词之间完全正交
- Skip-gram
- 用中心词预测周围词的训练目标
- 负采样
- 用少量随机负例替代全词表 softmax
- 余弦相似度
- 比较两个向量方向的一致程度,取值 −1 到 1