1. 从独热编码到语义地图:Embedding的前世今生
第一次接触NLP项目时,我被一个简单问题难住了:怎么让计算机理解"苹果"在不同语境下的含义?传统独热编码(One-Hot Encoding)就像给每个词分配独立的储物柜——"水果苹果"放在A区12柜,"苹果公司"放在C区45柜,两者毫无关联。这种粗暴的处理方式导致模型需要记忆海量离散符号,却完全无法捕捉"苹果既是水果也是品牌"这样的常识。
2013年Google发布的Word2Vec彻底改变了游戏规则。记得第一次用gensim训练词向量时,当我看到vec("国王") - vec("男人") + vec("女人") ≈ vec("女王")这个经典关系式时,那种震撼感至今难忘。这就像发现了一种新的数学语言,能够将人类语境的微妙关系编码成向量空间中的几何变换。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Embedding的核心原理剖析
2.1 分布式表示的革命性突破
与传统独热编码相比,Embedding的核心突破在于实现了分布式表示(Distributed Representation)。在我的实践中,用300维向量表示一个词时,每个维度不再对应特定语义标签,而是共同编码了多层次语义特征。举个例子:
python复制# 比较两种编码方式
one_hot = [0,0,1,0] # 离散符号表示
embedding = [0.25, -0.12, 0.78, ..., 0.03] # 分布式表示
这种表示方式带来了三个关键优势:
- 维度压缩:从词汇表大小的维度(通常10^5-10^6)降到数百维
- 语义保留:相似词在向量空间中距离相近
- 关系编码:词间关系可通过向量运算表达
2.2 训练目标的本质差异
Word2Vec的两种训练方式实际上构建了不同的预测任务:
| 训练方式 | 输入 | 输出 | 适用场景 |
|---|---|---|---|
| CBOW | 上下文词窗口 | 中心词预测 | 小规模数据集 |
