文章

01 词汇表征(Word Representation)

01 词汇表征(Word Representation)

这一节在讲什么

  这节课回答的是一个最基础的问题:

计算机到底怎么表示一个单词?

  课程先讲了传统的 one-hot 表示为什么不够好,再引出更强的表示方法:词嵌入(word embedding)。

传统方法:one-hot 向量

  假设词表有 10000 个词。

  如果 man 在词表中的编号是 5391,那么它可以表示成:

\[O_{5391}\]

  如果 woman 的编号是 9853,那么表示成:

\[O_{9853}\]

  这里的 $O_j$ 表示一个 one-hot 向量:

  • 第 $j$ 个位置是 1
  • 其他位置全是 0

one-hot 的致命问题

  它把每个词都看成彼此毫无关系的孤点。

  比如:

  • appleorange 明明都很像水果
  • kingqueen 明明有明显关联

  但在 one-hot 里,这些词之间都一样“远”。

  因为任意两个不同的 one-hot 向量内积都是:

\[O_i^T O_j = 0, \quad i \ne j\]

  也就是说,模型根本看不出来:

  • appleking 更像 orange
  • queenorange 更像 king

课程里的经典例子

  假设模型已经见过:

\[\text{I want a glass of orange juice}\]

  那它很可能学会:

  • orange 后面接 juice 很常见

  但如果测试时看到:

\[\text{I want a glass of apple \_\_\_}\]

  one-hot 模型不容易把 orange juice 迁移到 apple juice

  因为它根本不知道 appleorange 很像。

更好的办法:用特征来表示词

  课程里用一个很直观的想法解释词嵌入:

  不要只记录“这是词表第几个词”,
而是给每个词一个特征向量。

  比如你可以想象这些特征维度:

  • Gender(性别)
  • Royal(是否高贵)
  • Age(年龄感)
  • Food(是否食物)

  于是:

  • man 在 Gender 上偏男性
  • woman 在 Gender 上偏女性
  • king 在 Royal 上很高
  • apple 在 Food 上很高

  这样不同词的向量就会有结构上的相似性。

词嵌入到底是什么

  课程里最终把每个词表示成一个高维向量,比如 300 维:

\[e_{5391}, e_{9853}, \dots\]

  更一般地,对词 $w$,写作:

\[e_w\]

  这个向量不是 one-hot 那样稀疏、机械的,
而是一个“语义特征表示”。

为什么这种表示更强

  因为它允许相似词拥有相似向量。

  所以:

  • appleorange 会接近
  • kingqueen 会接近
  • manwoman 会接近

  于是模型就能更自然地泛化。

课程里的可视化直觉

  课程提到了 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 强,是因为它不再把单词看成互不相关的编号,而是把每个词放到一个带有语义结构的高维空间里,让相似词拥有相似表示。

本文由作者按照 CC BY 4.0 进行授权