《AutoDim: Field-aware Embedding Dimension Search in Recommender Systems》
大多数现有的推荐系统为所有的 feature field 指定了固定的、统一的 embedding 维度,这可能会导致内存效率的降低。
首先, embedding 维度往往决定了编码信息的能力。因此,为所有的 feature field 分配相同的维度可能会失去 highly predictive 特征的信息,而将内存浪费在 non-predictive 特征上。因此,我们应该给 highly informative 和 highly predictive的特征分配一个大的维度,例如,location-based 的推荐系统中的 "location" 特征。
其次,不同的 feature field 有不同的 cardinality (即 unique value 的数量)。例如,性别特征只有两个(即 male 和 female ),而 itemID 特征通常涉及数百万个 unique value 。直观而言,我们应该为具有较大 cardinality 的 feature field 分配较大的维度从而编码它们与其他特征的复杂关系,并为具有较小 cardinality 的feature field 分配较小的维度从而避免由于过度参数化而产生的过拟合问题。
根据上述原因,我们非常希望能以一种 memory-efficient 的方式为不同的 feature field 分配不同的 embedding 维度。
在论文 《AutoDim: Field-aware Embedding Dimension Search in Recommender Systems》 中,作者的目标是为不同的 feature field 提供不同的 embedding 维度从而用于推荐。但是这里面临着几个巨大的挑战:
首先,embedding 维度、特征分布、以及神经网络架构之间的关系是非常复杂的,这使得我们很难为每个feature field 手动分配 embedding 维度。
其次,现实世界的推荐系统往往涉及成百上千的feature field 。由于难以置信的巨大搜索空间(feature field 的候选维数,feature field 的数量)带来的昂贵的计算成本,很难为所有 feature field 人为地选择不同的维度。
作者试图解决这些挑战,从而得到一个端到端的可微的 AutoML-based 框架(AutoDim ),它可以通过自动化的、数据驱动的方式有效地分配 embedding 维度给不同的 feature field 。
论文主要贡献:
作者发现了将various 的 embedding 维度分配给不同的 feature field 可以提高推荐性能的现象。
作者提出了一个 AutoML-based 的端到端框架 AutoDim ,它可以自动选择各种 embedding 维度到不同的 feature field 。
作者在真实世界的 benchmark 数据集上证明了所提框架的有效性。
AutoDim 是一个 AutoML-based 框架,它可以为不同 feature field 自动分配不同的 embedding 维度。框架如下图所示,其中包括维度搜索阶段、参数重训练阶段。
AutoDim的思想和AutoEmb类似,也是为每个id分配个候选的 embedding size,然后用强化学习进行择优。但是,AutoDim相对容易落地,因为AutoDim本质上是寻找每个词表的最佳维度,是一个超参数调优工具,找到最佳维度之后应用到目标模型中。二者不同的地方:
AutoEmb使用popularity信息作为特征来获得筛选概率,而AutoDim仅依靠特征本身的embedding来获得筛选概率。
AutoDim有一个重训练阶段。实际上也可以在AutoEmb中引入重训练。

Embedding Lookup:对于每个 user-item 交互样本,我们有 feature field ,如性别、年龄等等。对于第 feature field,我们分配了 emebdding 空间 embedding 空间的维度分别为 embedding 空间的 cardinality 是该 feature field 中 unique feature value 的数量。
相应地,我们定义 embedding 空间的候选 embedding 的集合,如下图所示。因此,分配给特征 feature field 分配相同的候选维度集合,但引入不同的候选集合是很直接的。

统一各种维度:由于现有的 DLRS 中第一层 MLP 的输入维度通常是固定的,所以它们很难处理各种候选维度。因此,我们需要将 embedding 向量 embedding 向量
其中:bias 向量。对于不同的feature field ,所有具有相同维度的候选 embedding 都共享相同的权重矩阵和 bias 向量,这可以减少模型参数的数量。
过线性变换,我们将原始 embedding 向量 embedding magnitude)方差很大,这使得它们变得不可比 incomparable 。为了解决这一难题,我们对转换后的嵌入进行 BatchNorm:
其中:mini-batch 的均值,mini-batch 的方差,
Dimension Selection:我们通过引入 Gumbel-softmax 操作,对不同维度的 hard selection 进行了近似处理(因为 hard selection 是不可微的)。具体而言,假设权重 Gumbel-max 技巧得到一个 hard selection
其中:0-1 之间的均匀分布,gumbel 噪声(用于扰动 argmax 操作等价于通过
然而,由于 argmax 操作,这个技巧是不可的。为了解决这个问题,我们使用 softmax 函数作为 argmax 操作的连续的、可微的近似,即 gumbel-softmax:
其中:
gumbel-softmax 操作的输出的平滑度。当 gumbel-softmax 的输出就会变得更接近于 ont-hot 向量。
embedding 维度的概率。
为什么要用
gumble-softmax操作?直接用softmax操作如何?作者并未说明原因。
embedding

然后我们拼接所有特征的 embedding ,即
其中:bias,
感知机的输出馈入 output layer ,得到最终预测:
其中:output layer 的权重和 bias,
目标函数为负的对数似然:
其中:ground-truth 。
AutoDim 中需要优化的参数有两个方面:
DLRS 的参数,包括 embedding 部分和 MLP 部分。
embedding 维度的权重。
DLRS 参数
受可微分架构搜索(differentiable architecture search: DARTS )技术的启发,
这种优化形成了一个 bilevel 的优化问题,其中权重 DLRS 参数 DARTS 的近似方案:
其中:
在近似方案中,当更新
优化方法与
AutoEmb完全相同。
AutoDim 中 DARTS based 优化算法:
输入:特征 ground-truth label
输出:训练好的 DLRS 参数
算法步骤:
迭代直到收敛,迭代步骤为:
从验证数据集中采样一个 mini-batch 的数据。
通过
收集一个 mini-batch 的训练数据。
基于当前的
通过
由于 dimensionality search 阶段的次优 embedding 维度也会影响模型的训练,所以希望有一个重训练阶段,只用最优维度训练模型,消除这些次优的影响。
Deriving Discrete Dimensions:在重训练过程中,每个 feature field 的最佳 embedding 空间(维度)被选择为与最大权重相对应的维度:
Figure 2(a) 给出了一个示例,红色箭头表示所选中的 embedding 维度。
Model Re-training:给定所选的 embedding 空间,我们可以为特征 unique 的 embedding 向量 embedding 拼接起来再馈入隐层。最后,DLRS 的所有参数,包括 embedding 和 MLP ,将通过反向传播使监督损失函数
注意:
现有的大多数深度推荐算法都是通过交互操作(如内积)来捕获 feature field 之间的交互。这些交互操作要求所有 field 的embedding 向量具有相同的尺寸。因此,被选中的 embedding 仍然被映射到相同的维度。
在重训练阶段,不再使用 Batch-Norm 操作,因为每个 field 的候选 embedding 之间没有竞争。
DLRS 重训练阶段的优化过程:
输入:特征 ground-truth label
输出:训练好的 DLRS 参数
算法步骤:
迭代直到收敛,迭代步骤为:
采样一个 mini-batch 的训练数据。
基于当前的
通过
数据集:Criteo 。每个样本包含 13 个数值 feature field、26 个 categorical feature field 。
我们按照 Criteo 竞赛获胜者的建议,将数值特征归一化:
然后将数值特征进行分桶从而转换为 categorical feature 。
我们使用 90% 的数据作为训练集/验证集(8:1 ),其余 10% 作为测试集。
实现细节:
DLRS:
embedding 组件:在我们的 GPU 内存限制下,我们将最大的 embedding 维度设置为 32 。对于每个 feature field ,我们从 embedding 维度 {2, 8, 16, 24, 32} 中选择。
MLP 组件:我们有两个隐层,形状分别为 Criteo 数据集的 feature field 数量。我们对两个隐层使用 batch normalization 、dropout (dropout rate = 0.2 )和 ReLU 激活。输出层为 Sigmoid 激活函数。
feature field 的 softmax 激活来产生的。对于 Gumbel-Softmax ,我们使用退火温度 training step 。
更新 DLRS 和 0.001 和 0.001 ,batch size = 2000 。我们的模型可以应用于任何具有 embedding layer 的深度推荐系统。在本文中,我们展示了在著名的 FM、W&D、以及 DeepFM 上应用 AutoDim 的性能。
评估指标:AUC, Logloss, Params 。
Params 指标是该模型的 embedding 参数数量。我们省略了 MLP 参数的数量,因为 MLP 参数仅占模型总参数的一小部分。
baseline 方法:
Full Dimension Embedding: FDE :所有的 feature field 分配了最大的候选维度,即 32 。
Mixed Dimension Embedding: MDE:参考论文 《Mixed Dimension Embeddings with Application to Memory-Efficient Recommendation Systems》。
Differentiable Product Quantization: DPQ:参考 《Differentiable product quantization for end-to-end embedding compression》。
Neural Input Search: NIS:参考 《Neural input search for large scale recommendation models》 。
Multi-granular quantized embeddings: MGQE:参考 《Learning Multi-granular Quantized Embeddingsfor Large-Vocab Categorical Features in Recommender Systems》。
Automated Embedding Dimensionality Search: AEmb:参考 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》。
Random Search: RaS:随机搜索是神经网络搜索的强大 baseline。我们应用相同的候选 embedding 维度,在每个实验时间随机分配维度到 feature field ,并报告最佳性能。
AD-s:它与 AutoDim 共享相同的架构,同时我们在同一 training batch 上以端到端反向传播的方式同时更新 DLRS 参数和 AutoDim 。
实验结果如下表所示,可以看到:
FDE 实现了最差的推荐性能和最大的 Params ,其中 FDE 对所有 feature field 分配了最大的 embedding 维度 32 。这一结果表明,为所有 feature field 分配相同的维度,不仅内存效率低下,而且会在模型中引入许多噪音。
RaS, AD-s, AutoDim 比 MDE, DPQ, NIS, MGQE, AEmb 表现得更好,这两组方法的主要区别在于:
第一组方法旨在为不同的 feature field 分配不同的 embedding 维度,而相同 feature field 中的 embedding 共享同一维度。
第二组方法试图为同一 feature field 中的不同特征取值分配不同的 embedding 维度,分配方式基于特征取值的popularity。
第二组方法具有几个方面的挑战:
每个 feature field 都有许多 unique 值。例如,在 Criteo 数据集中,每个 feature field 平均有 unique值。这导致每个 feature field 的搜索空间非常大(即使在分桶之后),这就很难找到最优解。而在 AutoDim 中,每个 feature field 的搜索空间为
仅根据popularity(即一个特征取值在训练集中出现的次数)来分配维度可能会失去该特征的其他重要特性。
在实时推荐系统中,特征取值的popularity通常是动态的,预先未知。例如,冷启动的 user/item 。
AutoDim 优于 RaS 和 AD-s 。
AutoDim 在验证集的 mini-batch 上更新
AD-s 在同一训练集 mini-batch 上同时更新 DLRS ,可能导致过拟合。
RaS 随机搜索维度,其中搜索空间很大。
AD-s 的 Params 比 AutoDim 大得多,这说明更大的维度能更有效地减少训练损失。
因为
AD-s是监督学习训练的,目标是最小化训练损失,最终筛选到的维度更大。而AutoDim是强化学习训练的,奖励是最小化验证损失,最终筛选到的维度更小。
综上所述,与有代表性的 baseline 相比,AutoDim 取得了明显更好的推荐性能,并节省了 70%∼80% 的 embedding 参数。这些结果证明了AutoDim 框架的有效性。

效率分析:本节研究了在 Criteo 数据集上对 DeepFM 应用搜索方法的效率(在一个 Tesla K80 GPU 上),如下图所示。可以看到:
对于训练时间(图 (a)):
AutoDim 和 AD-s 具有很快的训练速度,原因是它们的搜索空间比其他 baseline 小。
FDE 的训练速度最快,因为我们直接把它的 embedding 维度设置为 32 ,即没有搜索阶段。然而它的推荐效果是所有方法中最差的。
对于推理时间(图 (b)):AutoDim 实现了最少的推理时间,因为 AutoDim 最终选择的推荐模型的 embedding 参数最少(即 Params 指标)。

超参数研究:除了深度推荐系统常见的超参数(如隐层的数量,由于篇幅有限,我们省略这种常规超参数的分析),我们的模型有一个特殊的超参数,即更新 AutoDim 优化过程中,我们交替地在训练数据上更新 DLRS 的参数、在验证数据上更新 DLRS 的参数,这显然减少了大量的计算,也提高了性能。
为了研究 AutoDim 的 DeepFM 在 Criteo 数据集上的表现如何。结果如下表所示,x 轴上,DLRS 参数。
从图 (a), (b) 可以看到,当 AutoDim 达到了最佳 AUC/Logloss 。换句话说,更新
从图 (d) 可以看到,与设置 50%∼ 的训练时间。
从图 (c) 可以看到,较低的 Params ,反之亦然。原因是 AutoDim 通过最小化验证损失来更新
当频繁更新 AutoDim 倾向于选择较小的 embedding size ,具有更好的泛化能力,同时可能存在欠拟合问题。
而当不频繁地更新 AutoDim 倾向于选择较大的 embedding size ,在训练集上表现更好,但可能导致过拟合问题。

案例研究:这里我们研究 AutoDim 是否可以为更重要的特征分配更大的 embedding 维度。由于 Criteo 的 feature field 是匿名的,我们在 MovieLens-1m 数据集上应用具有 AutoDim 的 W&D 。MovieLens-1m 数据集有 categorical feature field:movieId, year, genres, userId, gender, age, occupation, zip 。由于 MovieLens-1m 比 Criteo 小得多,我们将候选 embedding 维度设定为 {2, 4, 8, 16} 。
为了衡量一个 feature field 对最终预测的贡献,我们只用这个 field 建立一个 W&D 模型,训练这个模型并在测试集上评估。较高的 AUC 和较低的 Logloss 意味着该 feature field 更有 predictive 。
然后,我们建立一个包含所有 feature field 的、全面的 W&D 模型,并应用 AutoDim 来选择维度。结果如下表所示:
没有一个 feature field 被分配到 16 维的 embedding 空间,这意味着候选 embedding 维度 {2, 4, 8, 16} 足以覆盖所有可能的选择。
对比每个 feature field 的 W&D 的 AUC/Logloss ,我们可以发现,AutoDim 为重要的(高预测性的) feature field 分配了较大的 embedding 维度,如 movieId 和 userId ,反之亦然。
我们建立了一个 full dimension embedding: FDE 版本的 W&D ,其中所有的 feature field 都被分配为最大维度 16 。其表现为 AUC=0.8077, Logloss=0.5383 ,而带有 AutoDim 的 W&D 的表现为 AUC=0.8113, Logloss=0.5242 ,并且后者节省了57% 的 embedding 参数。
总之,上述观察结果验证了 AutoDim 可以将更大的 embedding 维度分配给更 predictive 的 feature field 。
