返回首页

Roadmap
更新于 2026年11月7日 全文 833 字未阅读

词嵌入:交互式练习#

在上一节内容中,我们把“嵌入空间”和“静态嵌入”讲成了理论,这一节我们换个方式直接通过交互式的方式上手玩一玩“词向量”。

下面这个交互组件基于 TensorFlow 的 Embedding Projector,它把 10,000 个 word2vec 静态向量压扁进了一个 3D 空间。

提示:尽管把高维向量压成 3D 能够帮助我们观察,但是它会损失部分原有的样本信息。因此可能出现在原始高维空间里挨得很近的两个点,投影到 3D 之后反而可能显得很远。所以这张图更适合用来观察大致的分群和趋势,而不是当作“真实距离”的严格证据。

组件里,Isolate __ points 可以设定要高亮的最近邻数量 $n$,最靠前的 $n$ 个点会被染成紫色,右侧边栏则列出这些最近邻到底是谁。

接下来的几个练习,就在上面这个组件里玩 word2vec 嵌入。

任务 1#

先试着找出下面这些词的 20 个最近邻,看看这些词群在点云里都落在哪些位置:

  • iii、third 与 three

  • tao 与 way

  • orange、yellow 与 juice

这些结果里,你注意到了什么?

任务 2#

再来试着摸清一些训练数据的特征。比如,找出下面这些词的 100 个最近邻,看看它们在点云里是怎么分布的:

  • boston、paris、tokyo、delhi、moscow 与 seoul(这是一道陷阱题)

  • jane、sarah、john、peter、rosa 与 juan

任务 3#

嵌入并不限于文字,图像、音频以及其他数据同样可以被嵌入。这一次我们换个数据集:

  1. 打开 TensorFlow 的 Embedding Projector。

  2. 在左侧标题为 Data 的边栏里,选择 Mnist with images。这会调出 MNIST 手写数字数据库的嵌入投影。

  3. 点击停止旋转,然后选中一张具体的图像。按需要放大或缩小。

  4. 到右侧边栏查看最近邻。有什么让你意外的吗?

  • 为什么有些 7 的最近邻是 1?为什么有些 8 的最近邻是 9?

  • 投影空间边缘的图像,与中心区域的图像相比,似乎有什么不一样的地方?

这里要留个心:制造这些嵌入的模型拿到的是图像数据——也就是像素——然后为每张图像挑一个数值向量表示。模型并不会自动在“手写数字的图像”和“数字本身”之间建立心理联想。

MLWM: 上面三个练习里反复出现的 word2vec 静态词向量究竟是怎么训出来的、CBOW 与 Skip-gram 有什么区别,参见“Word2Vec原理:词向量训练与语义表示方法”与“Word2Vec训练与使用:CBOW、Skip-gram 与词向量应用”;嵌入空间与静态嵌入的完整梳理见上一节。


关键术语:

  • 嵌入向量(Embedding vector)
  • 嵌入空间(Embedding space)
阅读 --