01 词汇表征(Word Representation)
这一节在讲什么
这节课回答的是一个最基础的问题:
计算机到底怎么表示一个单词?
课程先讲了传统的 one-hot 表示为什么不够好,再引出更强的表示方法:词嵌入(word embedding)。
传统方法:one-hot 向量
假设词表有 10000 个词。
如果 man 在词表中的编号是 5391,那么它可以表示成:
如果 woman 的编号是 9853,那么表示成:
这里的 $O_j$ 表示一个 one-hot 向量:
- 第 $j$ 个位置是 1
- 其他位置全是 0
one-hot 的致命问题
它把每个词都看成彼此毫无关系的孤点。
比如:
apple和orange明明都很像水果king和queen明明有明显关联
但在 one-hot 里,这些词之间都一样“远”。
因为任意两个不同的 one-hot 向量内积都是:
\[O_i^T O_j = 0, \quad i \ne j\]也就是说,模型根本看不出来:
apple比king更像orangequeen比orange更像king
课程里的经典例子
假设模型已经见过:
\[\text{I want a glass of orange juice}\]那它很可能学会:
orange后面接juice很常见
但如果测试时看到:
\[\text{I want a glass of apple \_\_\_}\] one-hot 模型不容易把 orange juice 迁移到 apple juice。
因为它根本不知道 apple 和 orange 很像。
更好的办法:用特征来表示词
课程里用一个很直观的想法解释词嵌入:
不要只记录“这是词表第几个词”,
而是给每个词一个特征向量。
比如你可以想象这些特征维度:
- Gender(性别)
- Royal(是否高贵)
- Age(年龄感)
- Food(是否食物)
于是:
man在 Gender 上偏男性woman在 Gender 上偏女性king在 Royal 上很高apple在 Food 上很高
这样不同词的向量就会有结构上的相似性。
词嵌入到底是什么
课程里最终把每个词表示成一个高维向量,比如 300 维:
\[e_{5391}, e_{9853}, \dots\]更一般地,对词 $w$,写作:
\[e_w\] 这个向量不是 one-hot 那样稀疏、机械的,
而是一个“语义特征表示”。
为什么这种表示更强
因为它允许相似词拥有相似向量。
所以:
apple和orange会接近king和queen会接近man和woman会接近
于是模型就能更自然地泛化。
课程里的可视化直觉
课程提到了 t-SNE,可把高维嵌入压到 2 维来观察。
常见现象是:
- 人类相关词聚在一起
- 水果聚在一起
- 动物聚在一起
- 数字聚在一起
这说明模型学到的不是“词典编号”,而是“语义空间中的位置”。
小白怎么理解“嵌入”这个词
“嵌入”可以理解成:
每个单词都被放进一个高维空间里的某个位置。
语义相近的词,位置也更近。
所以叫 word embedding,本质上就是“把词嵌入语义空间”。
这一节最该记住的公式和记号
one-hot 表示
\[O_j\]不同 one-hot 向量正交
\[O_i^T O_j = 0, \quad i \ne j\]词嵌入表示
\[e_w \in \mathbb{R}^{d}\]其中 $d$ 可能是 50、100、300 等。
这一节最该记住的要点
要点 1:one-hot 只能区分词,不会表达词和词的关系
这是它最大的局限。
要点 2:词嵌入是稠密向量表示
它能表达语义上的相似性。
要点 3:相似词会有相似向量
这让模型更容易泛化到没怎么见过的句子。
要点 4:嵌入空间可以被可视化
t-SNE 往往能看到语义簇。
这一节一句话总结
词嵌入之所以比 one-hot 强,是因为它不再把单词看成互不相关的编号,而是把每个词放到一个带有语义结构的高维空间里,让相似词拥有相似表示。