《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
。