CodeRoadMap
路线图学习路径文章题库资源社区

浏览

首页路线图学习路径知识库题库文章资源社区我的学习
CodeRoadMap

中文编程学习导航:路线图、讲义与题库,进度可同步。

路线图学习路径文章题库社区

© 2026 CodeRoadMap

津ICP备2026012044号-1|coderoadmap@126.com
首页/AI 人工智能入门 · 微软 12 周课/嵌入

课程目录

  1. 01人工智能简介
  2. 02知识表示与专家系统
  3. 03神经网络简介
  4. 04神经网络入门:感知机
  5. 05使用感知器进行多类别分类
  6. 06神经网络简介:多层感知机
  7. 07使用我们自己的框架进行MNIST分类
  8. 08神经网络框架
  9. 09使用 PyTorch/TensorFlow 进行分类
  10. 10计算机视觉
  11. 11计算机视觉简介
  12. 12使用光流检测运动
  13. 13卷积神经网络
  14. 14宠物面部分类
  15. 15预训练网络与迁移学习
  16. 16使用迁移学习对牛津宠物进行分类
  17. 17自动编码器
  18. 18生成对抗网络
  19. 19目标检测
  20. 20使用好莱坞头部数据集进行头部检测
  21. 21分割
  22. 22人体分割
  23. 23自然语言处理
  24. 24将文本表示为张量
  25. 25嵌入
  26. 26语言建模
  27. 27训练 Skip-Gram 模型
  28. 28循环神经网络
  29. 29生成网络
  30. 30使用 RNN 进行词级文本生成
  31. 31注意机制与Transformer
  32. 32命名实体识别
  33. 33命名实体识别 (NER)
  34. 34预训练大型语言模型
  35. 35遗传算法
  36. 36深度强化学习
  37. 37other-deeprl-lab
  38. 38多智能体系统
  39. 39伦理与负责任的人工智能
  40. 40多模态网络
第 25 课1 小时

嵌入

在基于 BoW 或 TF/IDF 训练分类器时,我们使用的是长度为 vocabsize 的高维词袋向量,并且我们显式地将低维位置表示向量转换为稀疏的独热表示。然而,这种独热表示并不节省内存。此外,每个…

课程内容

嵌入

课前测验

在基于 BoW 或 TF/IDF 训练分类器时,我们使用的是长度为 vocab_size 的高维词袋向量,并且我们显式地将低维位置表示向量转换为稀疏的独热表示。然而,这种独热表示并不节省内存。此外,每个单词都被独立对待,即独热编码的向量无法表达单词之间的语义相似性。

嵌入的想法是用低维密集向量来表示单词,这些向量能够以某种方式反映单词的语义含义。稍后我们会讨论如何构建有意义的词嵌入,但现在我们只需将嵌入理解为一种降低单词向量维度的方法。

嵌入层会将一个单词作为输入,并生成指定 embedding_size 的输出向量。从某种意义上说,它与 Linear 层非常相似,但它不需要独热编码向量,而是可以直接接受单词编号作为输入,从而避免创建大型独热编码向量。

通过在分类器网络中使用嵌入层作为第一层,我们可以从词袋模型切换到 嵌入袋 模型。在嵌入袋模型中,我们首先将文本中的每个单词转换为对应的嵌入,然后对所有这些嵌入计算某种聚合函数,例如 sum、average 或 max。

展示五个序列单词的嵌入分类器的图片。

图片由作者提供

✍️ 练习:嵌入

通过以下笔记本继续学习:

  • 使用 PyTorch 的嵌入
  • 使用 TensorFlow 的嵌入

语义嵌入:Word2Vec

虽然嵌入层可以学习将单词映射到向量表示,但这种表示不一定具有很强的语义意义。如果我们能学习一种向量表示,使得相似单词或同义词在某种向量距离(例如欧几里得距离)上彼此接近,那就更好了。

为此,我们需要以特定方式在大量文本上预训练嵌入模型。一种训练语义嵌入的方法叫做 Word2Vec。它基于两种主要架构来生成单词的分布式表示:

  • 连续词袋 (CBoW) —— 在这种架构中,我们训练模型根据上下文预测单词。给定 ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$,模型的目标是根据 $(W_{-2},W_{-1},W_1,W_2)$ 预测 $W_0$。
  • 连续跳词模型 (Skip-Gram) —— 与 CBoW 相反,模型使用上下文窗口中的单词来预测当前单词。
  • CBoW 速度更快,而 Skip-Gram 虽然较慢,但在表示不常见单词方面表现更好。

    展示 CBoW 和 Skip-Gram 算法将单词转换为向量的图片。

    图片来源于 这篇论文

    Word2Vec 预训练嵌入(以及其他类似模型,例如 GloVe)也可以替代神经网络中的嵌入层使用。然而,我们需要处理词汇表问题,因为用于预训练 Word2Vec/GloVe 的词汇表可能与我们文本语料库中的词汇表不同。查看上述笔记本,了解如何解决这个问题。

    上下文嵌入

    传统的预训练嵌入表示(如 Word2Vec)的一个主要限制是词义消歧问题。虽然预训练嵌入可以捕捉单词在上下文中的部分含义,但每个单词的所有可能含义都被编码到同一个嵌入中。这可能会在下游模型中引发问题,因为许多单词(例如“play”)的含义会根据使用的上下文而有所不同。

    例如,“play”在以下两个句子中的含义完全不同:

    • 我去剧院看了一场戏剧。
    • 约翰想和朋友们玩耍。

    上述预训练嵌入将“play”的这两种含义表示为同一个嵌入。为了克服这一限制,我们需要基于语言模型构建嵌入,该模型在大量文本语料库上进行训练,并且了解单词在不同上下文中的组合方式。讨论上下文嵌入超出了本教程的范围,但我们将在课程后续讨论语言模型时回到这个话题。

    总结

    在本课中,你学习了如何在 TensorFlow 和 PyTorch 中构建和使用嵌入层,以更好地反映单词的语义含义。

    ? 挑战

    Word2Vec 已被用于一些有趣的应用,包括生成歌词和诗歌。看看这篇文章,作者在其中介绍了如何使用 Word2Vec 生成诗歌。还可以观看Dan Shiffmann 的这个视频,了解该技术的另一种解释。然后尝试将这些技术应用到你自己的文本语料库中,可以从 Kaggle 获取数据。

    课后测验

    复习与自学

    阅读这篇关于 Word2Vec 的论文:Efficient Estimation of Word Representations in Vector Space

    作业:笔记本


    ← 上一课将文本表示为张量下一课 →语言建模