ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【机器学习】(31)—— 如何得到 Embedding

2026/8/4 2:43:44 拓冰建站 浏览量
【机器学习】(31)—— 如何得到 Embedding

如何得到 Embedding:降维、联合训练与上下文

文章目录

  • 如何得到 Embedding:降维、联合训练与上下文
    • 1. 向量从哪来
    • 2. 降维:把高维结构压矮
    • 3. 联合训练:Embedding 作为网络一层
      • 3.1 和 One-Hot 的关系
      • 3.2 汽车例子里怎么监督
      • 3.3 代价与训练时注意点
    • 4. 静态词嵌入与分布假说
    • 5. 上下文嵌入:同一词可以有多个向量
    • 6. 汽车场景怎么选
    • 7. 常见误区
    • 8. 术语表
    • 9. 延伸阅读
    • 10. 小结

摘要:第 29、30 篇说明了为什么要用 Embedding,以及嵌入空间里距离代表什么。接下来的问题是:这些向量从哪来。本文介绍三条常见路径——用 PCA 一类方法做降维、把 Embedding 当作网络一层与任务联合训练、以及先学静态词向量再(在需要时)升级到上下文嵌入——并说明汽车品牌这类表格特征更常走哪一条。


1. 向量从哪来

Embedding 不是凭空出现的表。常见来源可以粗分成三类:

路径大致做法特点
降维对高维稀疏表示做 PCA 等不直接优化下游损失
联合训练Embedding 层跟预测网络一起训贴合当前任务,表格场景常用
预训练再接入先在语料 / 共现上学会向量,再接到任务适合文本等;可冻结或微调

第 29 篇的「品牌查表」在实现上多半属于联合训练:表参数由油耗等损失回传更新。降维与预训练是另外两种获得低维坐标的方式,有时会混用(例如先 PCA 初始化,再继续训)。


2. 降维:把高维结构压矮

高维空间里若存在可合并的相关方向,可以用数学方法压到较低维,得到每个样本或每个类别的短坐标。**主成分分析(PCA)**是经典例子:在词袋、One-Hot 等表示上,寻找方差较大的方向,把相关维合并。

理论上,凡是能保留高维主要结构的降维,都可以当作一种「嵌入」供后续模型使用。实务上要注意:

  • PCA 优化的是重构 / 方差一类目标,不一定等于油耗预测损失
  • 类别 ID 若只做一次全表 PCA 再切分,仍有泄漏风险;变换应在训练集上fit
  • 词表极大时,先物化稠密 One-Hot 再 PCA,内存本身可能先爆掉

因此,汽车品牌预测里更常见的是直接用可学习的 Embedding 层,而不是先对品牌 One-Hot 做 PCA。降维更适合「已经有高维数值或词袋、需要压缩」的情形,或作为对照基线。


3. 联合训练:Embedding 作为网络一层

把嵌入维数设为d dd,在网络里放一层(查表或等价线性变换),与后面的隐藏层、输出层一起,用任务损失做反向传播。这是表格高基数特征最常用的做法。

3.1 和 One-Hot 的关系

输入可以是整数下标(框架Embedding层),概念上等价于:先变成 One-Hot,再乘一张V × d V\times dV×d的矩阵得到d dd维向量。训练时更新的就是这张矩阵(嵌入表)。

示意数值仅帮助理解,真实训练后的分量不会按「甜度」命名。第 30 篇已强调:轴通常不可解释,但相似样本会在损失驱动下逐渐靠近。

3.2 汽车例子里怎么监督

目标可以是:预测油耗数值,或「是否高效」。品牌走 Embedding,重量、马力等走标准化后与嵌入拼接,再接 MLP 或线性层。损失从输出回传到嵌入表。

也可以构造「根据若干已选品牌,预测另一个相关品牌 / 车型」这类辅助任务(推荐里常见),用 Softmax 等损失;入门阶段用主任务标签联合训练即可,不必一上来叠很多辅助目标。

3.3 代价与训练时注意点

联合训练得到的嵌入通常更贴合当前任务,但:

  • 需要足够标签与训练时间
  • 换任务后空间可能不再合适,往往要继续训或重学
  • d dd、正则、早停仍要按第 21、28、29 篇的习惯用验证集选

嵌入表参数量为V × d V\times dV×dV VV很大且d dd也开得很大时,过拟合与显存压力都会上来。可以先从较小的d dd(如 8~32)试起,确认验证集有收益再加。低频品牌可并入UNK,避免大量几乎只出现一次的行占满表容量。

若从随机初始化开始,前几轮近邻可能看起来很乱,这不反常;应主要看验证损失是否下降,而不是过早用二维投影下结论。


4. 静态词嵌入与分布假说

文本上有一条常用假设:出现在相似上下文中的词,语义上也更接近(分布假说)。word2vec 等算法据此在大规模语料上为每个词学一个固定向量,即第 30 篇说的静态嵌入

得到静态向量之后,可以:

  • 直接当特征接到逻辑回归 / MLP
  • 作为 Embedding 表的初始化,再在下游任务上微调
  • 做检索、近邻分析

对汽车业务:若只有结构化品牌 ID、没有长文本,静态词向量用不上品牌字段本身;若车评、配置说明是文本,可以为词或短语接入预训练向量。品牌 ID 字段仍优先联合训练的离散 Embedding。

静态向量的质量强烈依赖语料领域。通用网页语料上的「发动机」「涡轮」邻居,未必等于某一车企内部工单语料上的邻居。领域差距大时,把静态向量当初始化再微调,通常比完全冻结更稳妥。


5. 上下文嵌入:同一词可以有多个向量

静态嵌入的限制是一词一点。「行」在「银行」与「行走」里含义不同,「orange」可以是颜色或水果,单点无法同时兼顾。

**上下文嵌入(contextual embedding)**让同一词在不同句子中可以对应不同向量,向量由该词及其周围词共同决定。

获取方式(了解级别即可):

方向大意
ELMo 一类在静态向量基础上,用双向语言模型状态融合上下文
掩码语言模型(如 BERT 方向)根据两侧上下文预测被遮住的词,得到随句而变的表示
Transformer自注意力按上下文加权;常再叠加位置信息,形成该序列特有的输入表示

图像里也可以谈「上下文」:像素颜色的静态编码,若再结合位置与邻域,信息往往更完整。专栏当前主线仍是表格与浅层网络;上下文嵌入在文本、序列任务里更关键,这里只标出与静态嵌入的差别,避免一上来陷入大模型细节。

对离散品牌 ID:多数情况下一品牌一向量足够。若「同一字符串在不同地区 / 渠道含义不同」,才需要更细的 ID 设计或上下文式建模。


6. 汽车场景怎么选

情况更稳妥的起点
品牌 / 车型水平很少One-Hot(第 17 篇)往往够用
水平很多,且有油耗等标签Embedding 层与模型联合训练
只有共现、弱标签可参考上下文 / 预训练思路,或先做辅助预测任务
输入是自由文本且多义明显再考虑上下文嵌入或预训练语言模型
已有高维词袋要压缩可试 PCA 等降维作基线,再与联合训练对比

无论哪条路,词表与变换仍应在训练集上确定;验证、测试只做查表或transform。第 18、19、29 篇的防泄漏要求不因换了 Embedding 来源而取消。

比较两条路径时,尽量控制其他变量:同一划分、同一数值特征处理、同一输出头与指标,只改「品牌用 One-Hot / PCA 压缩 / 可学习 Embedding」中的一项,再看验证集差异。这样结论更干净,也避免把学习率或宽度造成的波动误当成 Embedding 的功劳。

概念代码(联合训练路径):

# brand_id: (batch,) 整数下标emb=embedding(brand_id)# (batch, d)x=concat([emb,numeric_features],-1)y_hat=mlp(x)loss=mse(y_hat,y)# 或交叉熵等# loss.backward() 会更新 embedding 与 mlp

7. 常见误区

情况说明
有了 PCA 就认为一定优于可学习 Embedding目标不同;应用验证集比较
联合训练却用全表统计建词表仍是泄漏
把预训练静态向量当永久正确答案换领域、换任务可能失效,常需微调
表格品牌 ID 强行上大型上下文模型成本高,收益未必有;先试普通 Embedding
静态与上下文分不清静态一词一点;上下文随句子变
只初始化嵌入、后面层乱设却怪 Embedding输出头、划分、指标仍要单独检查

8. 术语表

术语含义
PCA主成分分析,一种线性降维方法
联合训练Embedding 与下游网络共用任务损失更新
嵌入层将 ID / One-Hot 映到d dd维的网络层
分布假说上下文相似的词语义也更接近
静态嵌入每个词 / ID 全局一个向量
上下文嵌入同一词随上下文可对应不同向量
微调在预训练向量或模型上继续用下游数据训练

9. 延伸阅读

资源适合看什么
专栏第 29 篇为何需要 Embedding
专栏第 30 篇空间、距离与静态嵌入
sklearn PCA降维基线
PyTorch Embedding联合训练查表层
gensim Word2Vec静态词向量

10. 小结

得到 Embedding 不必只有一种办法:降维能从高维表示压出短坐标;联合训练让嵌入直接服务油耗等任务;静态词向量提供可迁移的语义起点,上下文嵌入则缓解一词多义。汽车表格里高基数品牌,优先考虑「Embedding 层 + 数值特征 + 任务损失」;水平很少时 One-Hot 仍然有效。三条路径可以并存作对照,最终仍以验证集上的业务指标决定采用哪一种。

下一篇会对 Embedding 相关几篇做一次串讲,把动机、空间、获取方式等整理一下,并预告后面的主题。

系列导航

  • 上一篇:【机器学习】(30)—— 嵌入空间
  • 下一篇(预告):Embedding 这几篇串一下

如果本篇对你有帮助,欢迎点赞、收藏、关注博主,机器学习专栏持续更新中,下次更新不迷路。