高级机器学习模型

嵌入

把稀疏、高维的类别或词元映射成稠密向量,用距离表达相似性。

30 分钟 纯学习时间 已去掉互动练习与测试
本模块学完后,你能够
  • 理解嵌入为何比独热向量紧凑
  • 解释嵌入空间中的距离
  • 理解静态与上下文嵌入
01
预计 5 分钟

简介

独热向量维度等于词汇大小,并且不能表达“两个项目有多像”。嵌入把项目映射到较低维的稠密空间。

若有十万种商品,独热编码需要十万个位置,每个商品仅一个位置为 1。它可以标识身份,却不能直接表达“羽绒服”和“夹克”比“羽绒服”和“电饭煲”更相似。

嵌入为每个对象学习一段较短的浮点数向量,相关对象在某种任务的向量空间里通常更接近。维度不是人工指定含义的“风格”“价格”等字段,而是训练目标共同塑造的表示。

图示可左右滑动查看独热稀疏向量映射为低维稠密嵌入
独热稀疏向量映射为低维稠密嵌入

你需要理解

  • 嵌入维度远小于词汇量。
  • 向量由训练任务学得,不是人工逐维命名。
  • 相似项目往往在向量空间中更接近。
再看一个实际场景

推荐系统中,浏览相似商品的用户可得到相近向量;把用户向量与商品向量做点积,就能得到一种匹配分数。

02
预计 10 分钟

嵌入空间和静态嵌入

静态嵌入为每个词或项目分配固定向量,可用点积、余弦相似度或距离比较。

嵌入空间是所有向量的集合。比较相似性常用余弦相似度,它看方向是否接近;点积同时受到向量长度影响。先确认训练目标,再选择距离或相似度度量。

静态嵌入给一个词或对象固定向量,不随上下文变化。它训练和存储简单,但一个词有多种含义时会受限。图上的二维投影只是帮助观察,真实嵌入通常维度更高。

cos(a,b) = (a·b) / (||a|| ||b||)

你需要理解

  • 方向可表达语义相似性。
  • 频率和训练目标会影响空间结构。
  • 同一个词的所有语境共享一个向量是静态嵌入的局限。
再看一个实际场景

“苹果”在水果文章和手机文章中含义不同;静态词向量只有一个位置,可能把两种语义混在一起。

注意

向量接近不等于现实世界的因果相似,也可能反映训练数据里的偏见。

03
预计 15 分钟

获取嵌入与上下文嵌入

上下文嵌入根据整段输入动态生成,同一个词在不同句子中可以有不同向量。

可以通过矩阵分解或训练一个带嵌入层的模型获得向量。训练时,同一任务里经常共同出现或带来类似预测的对象会逐渐靠近;嵌入并不是凭空计算出来的。

上下文嵌入则把整句话送入编码器,同一个词在不同上下文里得到不同表示。若业务词汇不断变化,需考虑新词处理、向量版本和重建索引。

你需要理解

  • 模型可以直接学习嵌入矩阵。
  • 预训练模型可提供通用文本或图像嵌入。
  • 检索系统通常把查询与文档映射到同一空间。
  • 评估要围绕真实检索或推荐任务,而非只看可视化。
再看一个实际场景

“我买了苹果吃”和“我买了苹果手机”中的“苹果”,上下文嵌入应更接近各自的水果或电子产品语境。

整章演算案例

从商品 ID 走到相似推荐

一个推荐系统有“跑鞋”“运动袜”“电饭煲”三个商品。先区分身份,再学习哪些商品在特定任务下相关。

  1. 独热向量只区分身份

    三个 ID 分别表示为 [1,0,0]、[0,1,0]、[0,0,1]。任意两件的点积都是 0,无法仅凭它判断跑鞋与运动袜是否更相关。商品多到十万种时向量还会很长。

  2. 先定义训练目标

    例如预测用户看过一个商品后点击的下一个商品。模型把 ID 映射为较短的浮点向量,并通过点击样本调整嵌入表。坐标含义来自目标与数据,而非人工随意命名。

  3. 演算一个简化距离

    假设跑鞋=[1,0]、运动袜=[0.8,0.6]、电饭煲=[−1,0],三者长度均为 1。跑鞋与运动袜的余弦相似度是 0.8,与电饭煲是 −1。真实向量通常更高维,结果需要在验证集评估。

    cos(跑鞋,运动袜)=0.8;cos(跑鞋,电饭煲)=−1
  4. 进入推荐系统

    可用向量相似度召回候选,再结合价格、库存和业务规则排序。新商品没有点击记录时,仅靠 ID 嵌入学不好,通常要补充文本、图片和类别等内容特征。

把它串起来:“向量接近”只是在某个训练目标和数据下更相似,不是放之四海而皆准的客观语义。

参考与许可

本页依据 Google Machine Learning Crash Course 的课程结构与概念重新编写,文字和图示经过中文化重构。查看 Google 官方对应模块。Google 页面文字通常采用 CC BY 4.0,代码示例采用 Apache 2.0;第三方图片未直接复制。