人与人用语言交流,机器与向量交流。本章要把“语言”翻译成“向量”,再让向量学会“理解”语言。
14.1 词嵌入:把单词扔进向量空间
14.1.1 独热之痛
- 维度爆炸:词典多大,向量多长。
- 毫无语义:任何两个不同词的相似度永远是 0。
- 无法泛化:没见过的新词直接“社死”。
14.1.2 自监督的 word2vec
核心公式
Skip-gram:最大化
∏ₜ ∏_{-m≤j≤m,j≠0} p(w_{t+j}|w_t)
CBOW:反过来,用上下文预测中心词。
一句话总结:让相邻词互相“猜”,猜对了就把它们放在向量空间里做邻居。
14.1.3 Skip-gram 与 14.1.4 CBOW
| 模型 | 输入 | 输出 | 训练速度 | 低频词友好度 | 常用场景 |
|---|---|---|---|---|---|
| Skip-gram | 中心词 | 上下文 | 慢 | 高 | 小语料、低频词 |
| CBOW | 上下文 | 中心词 | 快 | 低 | 大语料、高频词 |
14.2 近似训练:让 softmax 不再爆炸
14.2.1 负采样
- 把多分类变成 K+1 个二分类,K≈5。
- 采样分布:P(w)∝U(w)^{3/4},3/4 次方是经验魔法。
14.2.2 层次 softmax
- 把词典建成一棵 Huffman 树,复杂度从 O(|V|) 降到 O(log|V|)。
- 高频词靠近根节点,路径更短。
14.3 数据集:从原始文本到训练样本
14.3.1 读入 PTB
sentences = read_ptb() # 42069 行
vocab = Vocab(sentences, 10) # 67

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



