计算机只认数字,怎么把“猫”这样的词交给它处理?词嵌入给每个词分配一串数字,让意思相近的词在空间中彼此靠近。本文讲清为什么向量能表达语义,以及那些广为流传的类比例子为何成立。
核心要点
- 词嵌入把词语映射为稠密向量,用方向的差异表达语义上的差别。
- 语义相近的词在向量空间中距离更近,这是训练过程的自然结果。
- 同一套向量还能支持类比推理,反映出词与词之间的结构关系。
从编号到坐标
计算机只认数字,最朴素的办法是给词表里的每个词编个号。但编号相近不代表意思相近,而编号之间的距离在模型眼里是有含义的。词嵌入换个思路:给每个词分配一串数字,也就是空间中的一个坐标,让这个位置本身携带语义。
另一种早期做法是独热编码:一个词对应一个极长的向量,只有自己的位置是 1,其余全是 0。它的问题除了维度爆炸,还有所有词两两正交,模型看不出两个常见动物名称有什么共同点。稠密的词嵌入把每个词压缩到几百维,同时保留相似性结构。
意思相近就离得近
这些坐标不是人手工填的,而是学出来的。训练目标通常很朴素:出现在相似上下文里的词,含义应当接近。于是两个常见动物名称因为常和宠物、喂食一起出现,坐标会被拉到一起;而动物与家电很少共处,坐标自然相隔很远。
衡量远近常用余弦相似度,只看两个向量的方向是否一致,而不在意长度。方向一致说明它们激活的语义维度相似。训练完成后把向量投影到二维平面上,会看到动物聚成一团、食物聚成另一团,这种自发形成的结构正是它最让人着迷的地方。
向量里藏着关系
更奇妙的是,向量之间的差值也带有意义。一个流传很广的例子是:国王的向量减去男人的向量再加上女人的向量,结果最接近女王的向量。这说明训练过程中,性别、时态、国家与首都这类关系被编码成了空间中大致一致的方向,模型无意间学会了类比。
需要说明的是,静态词嵌入有个硬伤:一个词只有一个向量,无法区分上下文。“这种水果很好吃”和“这家公司发布了新机”里的同一个词含义完全不同。这个缺陷后来由上下文相关的动态表示解决——同一个词在不同句子里会得到不同的向量,这也是现代语言模型的通行做法。
常见问题
词嵌入的维度是不是越大越好?
不是。维度增加能表达更细的语义差别,但也会带来更多参数和更高的过拟合风险,收益很快就饱和。常见选择是几百维,具体要看数据规模和任务复杂度,用验证集上的表现来确定,而不是机械地往上加。
本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。