☰
如何为 CTR 模型自动找到“最优嵌入表”?——OptEmbed:学习最优嵌入表 | 计算机视觉技术原理解析
2026/10/31 10:58:38 网站建设 项目流程

如何为 CTR 模型自动找到“最优嵌入表”?——OptEmbed:学习最优嵌入表 | 计算机视觉技术原理解析

前言

OptEmbed 是华为诺亚方舟实验室与麦吉尔大学联合提出的一套最优嵌入表学习框架:它用可学习阈值自适应剪掉冗余嵌入,再用均匀采样的一步式超网与进化搜索,为每个特征域自动搜出最佳嵌入维度,从而同时做到更省内存、更高精度、且硬件友好。

本博客由计算机视觉实践出品,将沿应用场景与技术创新两条主线,为读者逐层拆解这套方法背后的技术原理。在阅读本文之前,读者只需了解一点:CTR 模型里那张动辄上 GB 的嵌入表,正是计算机视觉实践今天要带大家攻克的对象。

一、应用场景:CTR 预测里的“内存与精度”两难

1.1 CTR 预测是什么,嵌入表为何是命门

在电商、短视频、信息流等真实业务中,系统每天都在回答同一个问题:面对某个用户和某个候选商品(或广告),用户点击它的概率有多大?这个概率就是点击率(Click-through Rate, CTR)。CTR 预测的目标,就是基于海量用户行为特征,训练一个模型来精准估计这个概率,从而决定把哪些内容排给用户、如何竞价与排序。

一个典型的深度 CTR 模型由三大部分组成:嵌入表(Embedding Table)、特征交互层(Feature Interaction Layer)和分类器(Classifier)。模型输入的是大量类别型(Categorical)特征,例如用户性别、所在城市、设备型号、商品 ID、广告位 ID 等。这些类别特征本身是稀疏、高维的 one-hot 表示,无法直接喂给神经网络,因此需要一个嵌入表,把每个“特征值”(Feature Value)映射成一个稠密的实数向量——也就是嵌入(Embedding)。随后这些嵌入被送入特征交互层(如因子分解机、Cross Network、自注意力层等)建模特征间的高阶交互,最后由分类器聚合得到点击概率。

在正式进入技术之前,计算机视觉实践想先为读者点明:嵌入表的优劣,直接决定了 CTR 模型的“上线成本”与“预测天花板”。在真实的广告系统里,候选广告数以万计,每次请求都要在毫秒级内完成在线打分;而一个动辄上 GB 的嵌入表,不仅训练时占满显存、拖慢迭代,推理时也显著抬升时延、增加带宽与存储成本。更隐蔽的是,一个“臃肿”的嵌入表还会因为过拟合噪声特征而拖累精度。可以说,谁先把嵌入表做“优”,谁就同时握住了 CTR 系统的效率与效果两条生命线——这正是本博客由计算机视觉实践执笔、要把这套方法讲透的初衷。

【Figure 1 Overview of general framework of CTR prediction】

为什么说嵌入表是“命门”?因为在绝大多数 CTR 模型中,嵌入表占据了参数量的大头。设嵌入表是一个二维张量 E∈R^(|f|×D),|f| 是特征值的总数,D 是嵌入维度。嵌入表的内存开销为 O(|f|D)。在网页级的真实业务中,|f| 往往高达数百万甚至上亿,而 D 通常只有几十到几百,于是 |f|≫D,内存几乎完全由特征值数量 |f| 决定。换句话说,嵌入表是 CTR 模型训练与推理阶段最主要的“内存瓶颈”,也是参数量中最可压缩、最值得优化的部分。

1.2 问题描述:一张“又大又笨”的嵌入表

本博客要讲的核心问题,可以用一句话概括:如何在保持甚至提升 CTR 预测精度的前提下,把这张“又大又笨”的嵌入表变成一张“又小又精”的最优嵌入表?

这个问题的“大”体现在两个维度:

第一,嵌入表里存在大量冗余嵌入(Redundant Embedding)。在真实数据中,绝大多数特征值出现频次极低、携带的信息量极少,但模型仍然为它们各分配一行完整的嵌入向量。这些冗余嵌入不仅白白吃掉内存,实验还表明它们反而会损害模型性能——它们相当于把噪声引入了特征表示。

第二,所有特征值共享同一个固定的嵌入维度 D。但不同特征的“表达能力需求”差异悬殊:高基数的 ID 类特征(如 item_id、user_id)需要较大维度才能承载丰富信息,而低基数的简单特征(如性别)用很小的维度就足够,盲目用统一的大维度反而是过参数化,容易引发过拟合。

因此,一个理想的最优嵌入表需要同时满足以下三条硬性需求:

  • 需求一(无冗余嵌入):只给“有信息量”的特征值分配嵌入。若把某个特征值对应的嵌入屏蔽后模型性能明显下降,则它是信息性的(Informative);否则就是冗余的(Redundant),应当被剪掉。
  • 需求二(维度灵活):不同特征域(Field)应有各自的最佳嵌入维度,从而最大化模型性能。
  • 需求三(硬件友好):最终得到的嵌入表必须能直接跑在现代并行硬件(如 GPU)上,训练和推理都无需额外的结构信息与额外计算开销。

1.3 现有方法的困局

在 OptEmbed 之前,业界对嵌入表优化的尝试大体有三条路,但每一条都只能满足上述部分需求:

一是哈希映射(如 Hash Embedding、Double Hash、Q-R Trick 等)。这类方法用一个哈希函数把类别特征映射到一个较小的嵌入表索引上,从而压缩内存。但问题在于,哈希是“盲目”的——它把不同特征值硬塞进同一行,无法区分并剔除冗余嵌入,很可能造成性能退化,这在 CTR 预测中是不可接受的。

二是维度搜索(如 AutoDim、MDE、DNIS 等)。这类方法用神经架构搜索(NAS)为不同特征域分配不同维度。但它们的本质只是“调整每行嵌入的长短”,并没有移除冗余的嵌入行,因而无法满足需求一;而且由于特征总数庞大,即便只做维度搜索,内存依然可观。

三是嵌入剪枝(如 PEP、DeepLight、UMEC 等)。这类方法直接对嵌入表参数做掩码,把不重要的维度置零,得到稀疏嵌入表。虽然能压缩,但稀疏嵌入表在硬件上“不友好”——它需要额外存储结构信息、推理时也有额外计算开销,很难直接适配现代计算单元。

更关键的是,这些方法要么把“剪冗余”和“搜维度”割裂开处理,要么生成稀疏表,没有任何一种方法能同时满足上述三条需求。本博客要解读的 OptEmbed,正是为了把这三条需求一次性统一满足而提出的一套模型无关(Model-agnostic)的通用框架。

二、问题定义:什么才算“最优嵌入表”

在深入技术细节前,先给出严格的定义。设原始嵌入表 E∈R^(|f|×D),其中 |f| 为特征值总数、D 为统一嵌入维度。CTR 预测的优化目标是:

min_{E,W} L_CE(D | {E, W})

其中 W 是除嵌入表外的网络参数,L_CE 是交叉熵损失。OptEmbed 把单一的嵌入表 E 分解为一系列按特征域划分的子表 E*=[E_(1), E_(2), …, E_(n)],其中第 i 个域的嵌入表 E_(i)∈R^(|f_(i)|×D_(i))。一个“最优嵌入表” E* 应满足:所有域剩余特征值总数不超过原总数(∑|f_(i)|≤|f|,对应需求一),每个域有自己的维度(D_(i)≤D,对应需求二),并且仍是一张稠密、可直接部署的表(对应需求三)。

实现上,OptEmbed 引入两个二进制掩码,把原问题巧妙地重写为:

E* = E ⊙ m_e ⊙ m_d

其中m_e∈{0,1}^(|f|)是“嵌入掩码”,决定哪些嵌入行被保留(需求一);m_d∈{0,1}^(D×n)是“按域维度掩码”,决定每个域保留前多少个维度(需求二);⊙ 表示带广播的逐元素乘法。

这样一来,学习最优嵌入表被干净地分解为三件事:(i) 训练嵌入掩码 m_e 保留信息性嵌入;(ii) 搜索按域维度掩码 m_d 为每个域分配最优维度;(iii) 在 (i)(ii) 的约束下重训练最终的最优嵌入表 E*。下面本博客将逐一拆解这三步背后的技术创新。

【Figure 2 The Overview of OptEmbed】

三、技术创新一:基于可学习阈值的冗余嵌入剪枝

3.1 思路:把“剪冗余”转化为“判重要性”

第一个技术难点是:如何自动、数据驱动地判断哪些嵌入行是冗余的、应当被剪掉?

最朴素的想法是给每个特征值都配一个可学习的重要性参数,但 |f| 动辄百万级,为每个特征单独配参数既不高效、又容易过拟合。OptEmbed 借鉴结构化剪枝(Structured Pruning)的思想,直接优化嵌入表本身,再用一个“按特征域共享的可学习阈值”与嵌入的范数做比较,来自适应地生成掩码。嵌入掩码的重参数化形式为:

m_e = S( L_β(E) − t )

其中t 是按域的可学习阈值向量,L_β(·) 是嵌入的 β 范数,S(·) 是一个单位阶跃激活函数,共同构成一个“可训练的动态掩码”。下面逐一说明这三个部件的设计动机与精妙之处。

3.2 按特征域可学习阈值:不做全局、也不做逐特征

阈值 t 的粒度选择是第一个关键决策。OptEmbed 选择了按特征域(Field-wise)共享的阈值向量,而不是全局单阈值,也不是逐特征阈值。原因有二:

其一,不同特征域的特征性质差异巨大。比如 gender(性别)域的特征平均出现频次,远高于 item_id(商品 ID)域。如果用一个全局阈值去衡量所有域,那么高基数的 ID 域与低基数的类别域会“打架”,导致网络难以训练、也不鲁棒。按域分配阈值,等于让每个域“因地制宜”地决定自己的剪枝线。

其二,为什么不逐特征(Feature-wise)配阈值?因为那会显著增加参数量、更容易过拟合。按域共享阈值是“表达能力”与“泛化能力”之间的一个巧妙折中——阈值这一维度足够细到能区分不同域的特性,又足够粗到避免过拟合。

3.3 L_β 范数:一个来自数据观测的重要性度量

第二个关键决策是:用什么指标来衡量一个嵌入的“重要性”?直觉上,CTR 领域公认高频率特征更重要、更有信息量。OptEmbed 用实证数据验证了这一点:他们在一个预测模型上(以 FNN 为基座,取 L1 范数),随机挑出 Avazu 数据集的三个域,把每个嵌入的 L1 范数与其对应特征值的出现频次(取对数)画成散点图,并拟合出一条直线。

【Figure 3 Relationship between L1-norm and frequency in selected fields of Avazu dataset】

结果非常清晰:随着特征频次上升,其嵌入的 L1 范数也近似线性增长。也就是说,嵌入的范数天然编码了特征的重要性——重要(高频)特征的嵌入会“变大”,冗余(低频)特征的嵌入会“变小”。于是 OptEmbed 采用嵌入的 L_β 范数作为重要性度量,让阈值能够据此自动把“小范数”的冗余嵌入筛掉。

这里还有一个细节值得展开:为什么取 β=1(即 L1 范数)?因为 L_β 范数 L_β(e)=(∑ e_iβ)(1/β) 对单个元素求导时,导数里含有一个因子 (∑ e_iβ)(1/β−1)。只要 β≠1,这个因子就会让某个元素的梯度受整个嵌入中所有元素的影响,引入不必要的耦合。取 β=1 后,该因子变为 1,梯度解耦、训练更干净。这正是技术细节里“魔鬼藏在公式里”的体现,也是计算机视觉实践认为值得为读者点破的一处精巧设计。

3.4 单位阶跃函数与长尾导数估计:让“硬剪枝”可微

嵌入掩码本质上是一个硬判决:范数大于阈值则保留(掩码为 1),否则丢弃(掩码为 0)。这可以用单位阶跃函数 S(x) 表示:

m_e^j = S(L_β(e^j) − t^(k_j)) = 1 若 L_β(ej)>t(k_j),否则 0

问题随之而来:单位阶跃函数的导数是一个冲激函数,处处几乎为零,无法直接反向传播,阈值也就学不动。为了让模型可训练,OptEmbed 采用了一种“长尾导数估计器”(Long-tail Derivative Estimator)来近似阶跃函数的梯度:

dS(x)/dx ≈ H(x) = { 2−4|x|, |x|≤0.4 ; 0.4, 0.4<|x|≤1 ; 0, 其他 }

这个估计器 H(x) 的设计意图非常巧妙:当嵌入范数与阈值非常接近(|x| 很小)时,梯度最大,此时“剪或不剪”正处于临界摇摆,模型要重点学习;当范数与阈值差距拉大时,梯度衰减乃至归零,说明该嵌入的去留已基本确定,不再需要扰动。这样,阈值向量 t 就能在训练中平稳地被梯度更新。

更进一步,OptEmbed 把嵌入 E 的梯度拆成了两部分:

dE = dÊ ⊙ m_e(性能梯度) + dÊ ⊙ E ⊙ H(L_β(E)−t) ⊙ dL_β(E)(结构梯度)

第一部分是“性能梯度”,负责提升模型精度;第二部分是“结构梯度”,负责移除冗余嵌入。两者共同作用,让被误剪的嵌入有机会“复活”——一个嵌入被误剪后,其性能梯度因被置零而消失,但只要结构梯度仍在、且范数与阈值差距不大(小于 1),它就可能被重新恢复。这一机制避免了“一剪了之、不可挽回”的硬伤,让剪枝过程既坚决又留有回旋余地。

3.5 稀疏正则项:鼓励剪得更多

为了让模型愿意剪掉更多冗余嵌入,OptEmbed 在交叉熵损失上显式添加了一个指数稀疏正则项 L_s,惩罚过低的阈值:

L_s = ∑_i exp(−t_i)

这个正则项的妙处在于:它随 t_i 增大而单调递减到 0,即阈值越高、正则损失越小,从而被“鼓励”抬升阈值、剪掉更多嵌入。最终第一阶段的优化目标为:

min L_CE(D | {Ê, W}) + α·L_s,其中 Ê = E ⊙ m_e

α 是控制剪枝强度的系数。α 越大,越倾向于抬阈值、剪更多;但若 α 过大,可能误伤信息性嵌入、导致交叉熵损失反弹。因此,这个机制能在“模型性能”与“模型体积”之间动态地找到一个平衡点——这正是冗余嵌入剪枝组件为什么能稳健解决问题的根本原因。

四、技术创新二:均匀采样的一步式超网训练

4.1 把维度搜索转化为一次“NAS 问题”

解决了“剪哪几行”,接下来要解决“每行留多长”——即如何为每个特征域搜索最优嵌入维度。这是一个组合优化问题:若候选维度集合为 S_e={1,…,D},每个域有 D 种选择,共 n 个域,则搜索空间规模是 O(D^n),指数爆炸,穷举不可能。更麻烦的是,若每个候选架构都要单独从头训练再评估,计算资源根本无法承受。

OptEmbed 的破局之道,是把维度搜索重新形式化为一个一步式(One-shot)神经架构搜索(NAS)问题:先训练一个能同时表达所有候选架构的超网(Supernet),再在超网基础上只做“评估—挑选”,从而把“训练”与“搜索”解耦。这样搜索时无需再从零训练任何子架构,计算开销大幅下降。

4.2 超网与均匀采样:让所有候选“被平等对待”

超网如何构建?OptEmbed 采用**序数参数共享(Ordinal Parameter Sharing)**方式,用最大维度 D 构建超网嵌入表 E_s。所谓“序数”,是指不同维度候选之间天然存在嵌套关系——维度 d 的嵌入是维度 d+1 的嵌入的前 d 个分量。这种共享方式能最大化复用参数。

训练超网的关键难题是:如何让所有候选架构都被充分、公平地训练到?OptEmbed 设计了一个均匀嵌入维度采样方案(Uniform Embedding Dimension Sampling):在每个训练步骤,从 Uniform(1,D) 中随机采样一个维度 d,把每个域的维度掩码 m_d 的前 d 个元素置 1、其余置 0,然后在这个“当前采样出的子架构”上前向传播。通过均匀采样,所有候选维度在训练中出现的期望次数相等,从而被“平等训练”,避免了传统 NAS 中“少数热门架构被过度训练、冷门架构无人问津”的偏差。

这里要特别说明一个容易被忽视的细节:既然超网要在训练时“遍历”各种维度候选,它本质上是在学习一个能同时适配所有维度组合的“平均解”。如果没有均匀采样,超网会被少数偏好维度“绑架”,导致评估阶段对冷门候选的预测严重失真;而均匀采样让每个候选都被以相同的频率真实训练过,超网才能在搜索阶段给出可靠、无偏的评估信号。这是“公平”二字在架构搜索里的精确含义。

更重要的一点是,OptEmbed 并没有把超网训练与冗余剪枝割裂开:它令 E_s = E ⊙ m_e,让超网训练自适应地适应嵌入掩码,把“剪冗余”与“搜维度”统一到一个目标函数里。其超网训练目标为:

min_{m_e,E,W} E_{m_d~Uniform(S_e)} [ L_CE(D | {Ê, W}) ] + α·L_s,其中 Ê = E_s ⊙ m_d = E ⊙ m_e ⊙ m_d

也就是说,嵌入参数、维度掩码相关的架构参数、以及可学习阈值,都在同一个超网里被同时、联合地训练。这种“一网打尽”的设计,避免了两阶段方案里“先剪后搜”或“先搜后剪”可能带来的顺序偏差与重复训练——剪枝与搜维度互相感知、互相配合,最终收敛到全局协调的最优嵌入表。

4.3 为什么能解决问题

这一步技术创新解决的是“搜索效率”与“搜索公平性”两大痛点:均匀采样保证了每个候选架构都被公平充分地训练,超网一次训练即可服务后续全部候选的评估,避免了对每个子架构单独训练的巨额开销;而把剪枝与维度搜索统一进同一目标,则避免了分步训练可能带来的次优与重复计算。正是这种“一次训练、处处评估”的设计,让在指数级搜索空间中找最优维度成为现实。

五、技术创新三:进化搜索最优维度掩码

5.1 从超网到最优维度:进化搜索

超网训练完成后,就得到了共享参数的“全能”模型 {Ê_s, Ŵ_s}。接下来的问题是如何从这个超网中“挑出”每个域的最优维度,即最优维度掩码 m_d*。

OptEmbed 采用**进化搜索(Evolutionary Search)**策略。算法从一个随机初始化的候选种群(Population)出发,每一轮(epoch)做三件事:

  1. 评估:对当前种群中的每个候选维度掩码 m_d,直接继承超网参数,在验证集 D_val 上做推理评估(只推理、不训练,因而非常高效),得到各自的 AUC;
  2. 优选:保留表现最好的 Top-k 候选;
  3. 繁衍:对 Top-k 候选施加交叉(Crossover)与变异(Mutation)操作,生成新一代候选,不断迭代。

5.2 交叉与变异:遗传算子的妙用

  • 变异(Mutation):以给定概率 prob 随机改变候选掩码在某个位置上的取值。它负责引入“探索性”——让搜索有可能跳出现有优解的小邻域,尝试全新的维度组合。
  • 交叉(Crossover):随机选择两个候选,在随机位置将它们“切断”并互换后半段,生成子代。它负责“利用性”——把两个较优候选各自的优势片段组合起来。

【Figure 4 Operations in evolutionary search】

经过 T 轮迭代,算法输出在验证集上表现最好的候选作为最优维度掩码 m_d*。整个过程只用推理评估 + 遗传操作,无需任何梯度训练,因此维度搜索阶段的计算开销极低。

5.3 为什么能解决问题

进化的优雅在于它天然适配“离散、不可微、搜索空间巨大”的维度组合问题:维度掩码是离散的 0/1 结构,无法直接求导,而进化算法无需梯度即可在组合空间中高效探索;继承超网参数评估 + 交叉变异,又让它在“探索新区域”与“利用已有优解”之间保持平衡。相比逐架构训练评估或可微搜索,进化搜索在大搜索空间下能以极低成本逼近全局较优。

六、参数重训练与整体流程

搜索得到嵌入掩码 m_e* 与维度掩码 m_d* 之后,还差最后一步:参数重训练(Re-training)。

为什么必须重训练?因为在超网训练阶段,模型“见过”所有候选架构、被训练来预测任意维度组合下的性能,其参数对最终确定的掩码而言是“次优”的。重训练阶段固定住 m_e* 与 m_d*,只优化嵌入表与网络参数,目标为:

argmin_{E,W} L_CE(D | {E ⊙ m_e* ⊙ m_d*, W})

这样,最终的最优嵌入表 E* 在“只保留该保留的嵌入行、每行取该取的长度”这一精确约束下被重新调优,从而逼近真正的全局最优。

至此,OptEmbed 的完整流程可以总结为四步:① 超网训练 + 冗余嵌入剪枝(联合优化,得到 m_e);② 进化搜索维度掩码(得到 m_d);③ 固定掩码重训练最终嵌入表(得到 E*);④ 部署**。整个框架对基座模型是“模型无关”的——无论是 DeepFM、DCN、FNN 还是 IPNN,都只需替换其嵌入表部分,即可接入 OptEmbed 获得最优嵌入表。在计算机视觉实践看来,这套“四步走”把一件原本看似玄学的嵌入表调优,变成了一条清晰、可复现、可自动化的工程路径。

七、应用落地与实验观察

7.1 在真实数据集上“跑得通”

本博客重点不在于罗列对比数据,而在于说明这套方法在真实业务数据上的落地价值。OptEmbed 在三个公开大规模数据集(Criteo、Avazu、KDD12)上做了充分验证,覆盖了展示广告、移动广告点击日志、搜索会话日志等典型 CTR 业务形态。每个数据集按 8:1:1 划分训练/验证/测试,分别以 DeepFM、DCN、FNN、IPNN 四种主流 CTR 模型为基座。

值得强调的是,OptEmbed 带来的收益在不同数据集上“各有所长”:在 Criteo 上,收益主要体现在内存大幅缩减——参数最多可减少约 67%~97%,而精度几乎不受损;在 Avazu 与 KDD12 上,收益则同时体现在性能提升与内存压缩——AUC 可比原模型显著提升,同时省下约一半参数。也就是说,这套框架在“更小的表”和“更高的精度”两个目标上能够兼得,这正是工业界最看重的落地特性。

7.2 部署效率:比原模型还快的推理

对真实系统而言,推理时延和训练成本同样生死攸关。OptEmbed 在效率上的表现非常直观:由于最终得到的嵌入表参数量最少,其推理时延是所有方法中最低的,甚至低于原始模型。而 PEP 这类生成稀疏表的方法,推理反而比原模型更慢——因为稀疏结构在硬件上“不友好”,需要额外的结构信息和计算。这恰恰印证了需求三(硬件友好)的价值:一个紧凑而稠密的最优嵌入表,是能真正部署上线、跑出真实收益的关键。训练端虽然多了掩码搜索的时间,但换来的是性能提升与推理加速,这笔“一次性成本”在工业部署中是划算的。

从“参数—精度”的权衡曲线看,OptEmbed 落在曲线“最左上角”——即在所有方法中以最少的参数量取得最高的 AUC,是帕累托占优的解。这从空间复杂度角度印证了它输出的确实是一张“既小又准”的最优嵌入表。

7.3 案例研究:模型自己“想明白了”特征重要性

OptEmbed 最令人惊喜的地方,在于它的输出具备可解释性,能反过来指导特征工程。在计算机视觉实践看来,这正是“用数据反哺特征”的典范。以 FNN 在 Avazu 上的最优嵌入表为例,把每个域剩余的参数、嵌入数、维度分别相对原模型归一化后可以看到几个非常符合人类直觉、却又比人工更精准的结论:

【Figure 7 Case Study of OptEmbed output on Avazu】

第一,不同域的最优维度与保留特征数差异悬殊——这直接印证了“统一维度 + 一刀切”是不合理的,也凸显了 OptEmbed 按域定制维度的必要性。

第二,ID 类特征(如 site_id、app_id、device_id)被保留了更高的维度与更多的嵌入。这与推荐系统的领域常识完全一致——ID 类特征正是协同过滤式推荐系统的“内核”,承载了最主要的个性化信息,理应获得更多表达资源。

第三,也是最反直觉的一点:OptEmbed 竟然把 weekday 和 is_weekend 这两个域的特征全部剪掉了。这两个特征是研究者按领域“最佳实践”手工构造出来的,但 OptEmbed 发现它们携带的信息在很大程度上已被 hour(小时)域覆盖,因而是冗余的。这一发现揭示了人工特征工程的局限性——模型用数据告诉我们,它并不需要那些我们以为重要的特征。

7.4 模型无关与工程落地的启示

OptEmbed 被设计成一种**模型无关(Model-agnostic)**的框架,这一特性对工程落地意义重大。在真实业务中,不同团队、不同场景往往沉淀了各自偏好的基座模型——有人用 DeepFM 做粗排,有人用 DCN 做精排,有人用 IPNN 处理复杂交互。如果嵌入表优化方法与基座模型强耦合,那每次换模型都要重做一遍优化,落地成本极高。而 OptEmbed 的优化对象只作用于“嵌入表”这一公共部件,只要把原嵌入表替换为“超网 + 掩码”结构,任何基座模型都能无缝接入,训练完成后得到的最优嵌入表又是与模型解耦的、可直接替换的。这种“即插即用”的通用性,正是它区别于众多专用压缩方案、具备工业级推广潜力的根本原因。

本博客还想补充一点工程视角的观察:OptEmbed 输出的是一张稠密、紧凑、结构规整的最优嵌入表,而不是稀疏表。这一看似“保守”的选择,在实际部署中却是决定性的——稀疏表需要额外的索引结构、压缩格式和特殊算子支持,往往与主流的稠密矩阵算子不兼容,即便在训练时省了内存,推理时反而更慢、更难维护。而稠密表可以直接落入现有的标准框架与硬件算子,做到“训练完之后即插即用、无需任何特殊处理”。换句话说,OptEmbed 把“优化”与“工程友好”两件事同时做对了。

八、总结

一言以蔽之,OptEmbed 用可学习阈值剔除冗余嵌入、以均匀采样的超网联合训练维度架构、再用进化搜索精挑每个特征域的最佳维度,最终产出兼顾省内存、提精度与可部署的紧凑最优嵌入表——让 CTR 模型真正做到“有多大本事,用多大表”。以上就是计算机视觉实践为读者带来的 OptEmbed 最优嵌入表学习技术原理解析。

参考

OptEmbed: Learning Optimal Embedding Table for Click-through Rate Prediction

URL:
https://arxiv.org/abs/2208.04482

本博客是对上述作者原创的技术解读,仅供学习交流,不代表原作者观点。本博客部分示意图来源于上述作者论文,版权归原作者所有。

如果想具体了解计算机视觉技术各种具体技术原理,您可访问这个博客的gitcode页面:[YOLO原理分析v1到v10:https://gitcode.com/cvprofessional/] (https://gitcode.com/cvprofessional/)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询