《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》
deep learning based recommender systems: DLRSs
的架构通常主要由三个关键部分组成:
embedding layer
:将高维空间中的原始的 user/item
特征映射到低维 embedding
空间中的稠密向量。
hidden layer
:进行非线性变换以转换输入特征。
output layer
:根据 hidden layer
的 representation
对特定的推荐任务进行预测。
大多数现有的研究都聚焦在为 hidden layer
和 output layer
设计复杂的神经网络架构,而 embedding layer
并没有获得太多的关注。然而,在拥有海量 user
和 item
的大规模真实世界推荐系统中, embedding layer
在准确推荐中发挥着巨大的关键作用。embedding
最典型的用途是将一个 ID
(即 user ID
或 item ID
)转换成一个实值向量。每个 embedding
都可以被认为是一个 latent representation
。与手工制作的特征相比,经过良好学习的 embedding
已经被证明可以显著提高推荐性能。这是因为 embedding
可以降低 categorical
变量的维度(如 one-hot id
),并有意义地在潜空间中代表 user/item
。
大多数现有的 DLRSs
在其 embedding layer
中往往采用统一的固定维度。换句话说,所有的 user
(或 item
)共享相同的、固定的 embedding size
。这自然引起了一个问题:我们是否需要为不同的 user/item
采用不同的 embedding size
?
为了研究这个问题,论文 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》
对 movielens-20m
数据集进行了初步研究。对于每个用户,作者首先选择该用户的固定比例的评分作为测试集,然后选择 embedding
维度为 2/16/128
的 DLRS
的推荐性能在 mean-squared-error: MSE
和准确率方面的变化。更低的 MSE
(或更高的准确率)意味着更好的性能。注意,作者在这项工作中把 user/item
的交互次数称为 popularity
。从图中可以看到:随着 popularity
不同 embedding size
的模型的性能增加,但较大的 embedding size
获益更多。
较小的 embedding size
首先工作得更好,然后被较大的 embedding size
所超越。
这些观察结果是非常符合预期,因为 embedding size
通常决定了待学习的模型参数的数量、以及由 embedding
所编码信息的容量。
一方面,较小的 embedding size
往往意味着较少的模型参数和较低的容量。因此,当popularity
小的时候,它们可以很好地工作。然而,当随着popularity
的增加, embedding
需要编码更多的信息,较低的容量会而限制其性能。
另一方面,更大的embedding size
通常表示更多的模型参数和更高的容量。它们通常需要足够的数据从而被良好地训练。因此,当popularity
小的时候,它们不能很好地工作;但随着popularity
的增加,它们有可能捕获更多的信息。
鉴于 user/item
在推荐系统中具有非常不同的popularity
,DLRSs
应该允许不同的 embedding size
。这一特性在实践中是非常需要的,因为现实世界的推荐系统是popularity
高度动态的 streaming
。例如,新的交互会迅速发生,新的用 user/item
会不断增加。
在论文 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》
中,作者的目标是在 streaming setting
下,在 embedding layer
为不同的 user/item
实现不同的 embedding size
。这里面临着巨大的挑战:
首先,现实世界的推荐系统中的 user/item
的数量非常大,而且popularity
是高度动态的,很难为不同的 user/item
手动选择不同的 embedding size
。
其次,在现有的 DLRSs
中,first hidden layer
的输入维度通常是统一的和固定的,它们很难接受来自 embedding layer
的不同维度。
作者试图解决这些挑战,从而建立了一个基于端到端的可微的 AutoML
框架(即,AutoEmb
),它可以通过自动的、动态的方式利用各种 embedding size
。论文通过现实世界的电商数据中的实验来证明了所提出的框架的有效性。
相关工作:
deep learning based recommender system
:近年来,一系列基于深度学习技术的神经推荐模型被提出,性能提升明显(如,NCF, DeepFM, DSPR, MV-DNN, AutoRec, GRU4Rec
)。然而,这些工作大多集中在设计复杂的神经网络架构上,而对 embedding layer
没有给予过多关注。
AutoML for Neural Architecture Search
:《Neural input search for large scale recommendation models》
首次将NAS
用于大规模的推荐模型,并提出了一种新型的 embedding
方式,即 Multi-size Embedding: ME
。然而,它不能应用于streaming recommendation setting
,其中popularity
不是预先知道的而是高度动态的。
Basic DLRS
架构:我们在下图中阐述了一个 basic
的 DLRS
架构,它包含三个部分:
embedding layer
:将 user ID/item ID
embedding
向量
hidden layer
:是全连接层,将 embedding
向量 hierarchical feature representation
。
output layer
:生成 prediction
从而用于推荐。
给定一个 user-item
的交互,DLRS
首先根据 user ID
和 item ID
进行 embedding-lookup
过程,并将两个 embedding
拼接起来;然后 DLRS
将拼接后的 embedding
馈入 hidden layer
并进行预测。 然而,它有固定的神经网络架构,不能处理不同的 embedding size
。接下来,我们将加强这个 basic
的 DLRS
架构,以实现各种 embedding size
。
AutoEmb
仅聚焦于user id
和item id
的embedding size
优化,而没有考虑其他的categorical feature
。并且论文描述的算法仅应用streaming recommendation setting
。论文的思想比较简单:为每个
id
分配个候选的 embedding size
,然后用强化学习进行择优。难以落地,因为最终得到的模型,参数规模几乎增长到倍。 换一个思路:给定一个
baseline model
,我们可以将baseline model
的embedding size
划分为个子维度(类似于 NIS
),然后由控制器来选择需要横跨几个子维度。这种方法和NIS
的区别在于:
NIS
的控制器是独立的自由变量,每个变量代表对应的概率。虽然控制器没有包含item
的popularity
信息,可以自由变量的update
次数就代表了item
出现的频次,因此隐式地包含了popularity
信息。而这个思路里,控制器的输入包含了
item
的popularity
信息,可以给予控制器一定的指导。
Enhanced DLRS
架构:正如前面所讨论的,当popularity
较低时,具有较少模型参数的 shorter embedding
可以产生更好的推荐;而随着popularity
的增加,具有更多模型参数和更高容量的 longer embedding
可以获得更好的推荐性能。在这个观察的激励下,为具有不同popularity
的 user/item
分配不同的 embedding size
是非常理想的。然而,basic DLRS
架构由于其固定的神经网络架构而无法处理各种 embedding size
。
解决这一挑战的基本思路是将各种 embedding size
转换为同一维度,这样 DLRS
就可以根据当前 user/item
的popularity
选择其中一个 transformed embedding
。下图说明了 embedding
的转换和选择过程。假设我们有 embedding
空间 embedding
维度(即,embedding size
)分别为 embedding
空间的 embedding
集合为 embedding
向量
其中:bias
向量。
经过线性变换,我们将原始 embedding
向量 embedding
magnitude
)变化很大,这使得它们变得 magnitude-incomparable
。为了解决这一难题,我们对转换后的embedding
Batch- Norm
与 Tanh
激活:
其中:mini-batch
的均值,mini-batch
的方差,Tanh
激活函数将 embedding
归一化到 0~1
之间。
给定一个 item
embedding
集合 magnitude-comparable
的转换后的 embedding
根据popularity
,DLRS
将选择一对转换后的 embedding
user
item
representation
:
embedding size
是由一个控制器 controller
选择的,将在后面详细介绍。然后,我们将 user representation
和 item representation
拼接起来,即 output layer
从而生成 user
item
为了获得理想的效果,
不能太小(否则,控制器选择的余地就不大)。 embedding table
占据了模型的绝大部分参数,因此个 embedding table
使得模型的规模几乎翻了倍。这对于模型训练、模型部署都是严重的挑战。因此,该方法不太适用。
Controller
:我们提出了一种基于 AutoML
的方法来自动确定 embedding size
。具体而言,我们设计了两个控制器网络,分别决定 user embedding size
和 item embedding size
,如下图所示。
对于一个特定的 user/item
,控制器的输入由两部分组成:user/item
的当前popularity
、上下文信息(如 previous
超参数和 loss
)。上下文信息可以被看作是衡量 previously
分配给 user/item
的超参数是否运作良好的信号。换句话说,如果 previous
超参数工作得很好,那么这次生成的新的超参数应该有些类似。
controller
的输入特征具体都是什么?论文并未说明。也不必深究,因为论文的应用价值不高。
该控制器接收上述输入,通过几层全连接网络进行转换,然后生成 hierarchical feature representation
。output layer
是具有 Softmax layer
。在这项工作中,我们用 user controller
的 item controller
的 embedding
空间的概率。 controller
自动选择最大概率的空间作为 final embedding
空间,即:
有了控制器,embedding size
搜索的任务就简化为优化控制器的参数,从而根据 user/item
的popularity
自动生成合适的
Soft Selection
:上面的控制器对 embedding
空间进行了 hard selection
,即:每次我们只从控制器中选择一个具有最大概率的embedding
空间。这种 hard selection
使得整个框架不是端到端的可微的。为此,我们选择了一种 soft selection
:
有了 soft selection
,enhanced DLRS
是端到端的可微的。新的结构如下图所示,我们增加了 transformed embedding layer
,它对 embedding
空间进行soft selection
,选择过程由两个控制器(分别用于 user
和 item
)来决定。
优化方法:优化任务是联合优化 DLRS
的参数(如 differentiable architecture search: DARTS
)技术概念的启发,我们为 AutoEmb
框架采用了基于 DARTS
的优化,通过梯度下降分别优化训练损失 DLRS
的参数
embedding dimensionality search
的目标是找到使验证损失 DLRS
的参数 bilevel
优化问题,其中
因为优化内层的 DARTS
的近似方案:
其中 training step
来估计
值得注意的是,与计算机视觉任务上的 DARTS
不同,我们没有推导离散架构的阶段(即,DARTS
根据 softmax
概率选择最可能的操作来生成离散的神经网络架构)。这是因为随着新的 user-item
交互的发生, user/item
的popularity
是高度动态的,这使我们无法为user/item
选择一个特定的 embedding size
。
DARTS based Optimization for AutoEmb
算法:
输入:user-item
交互、以及 ground-truth
标签
输出:训练好的 DLRS
参数
算法步骤:
迭代直到收敛,迭代步骤:
从 previous
的 user-item
交互中随机采样一个 mini-batch
的验证数据。
基于梯度下降来更新
其中 first-order approximation
。
收集一个 mini-batch
的训练数据。
基于当前参数
基于当前参数 DLRS
的 prediction
。
评估 prediction
的效果并记录下来。
通过梯度下降来更新
值得注意的是,在 batch-based streaming recommendation setting
中,优化过程遵循 "evaluate, train, evaluate, train..."
的方式。 换句话说,我们总是不断地收集新的 user-item
交互数据。当我们有一个完整的 mini-batch
的样本时,我们首先根据我们的 AutoEmb
框架的当前参数进行预测,评估预测的性能并记录下来;然后我们通过最小化 prediction
和 ground truth label
之间的损失来更新 AutoEmb
的参数。接下来我们收集另一个 mini-batch
的 user-item
交互,执行同样的过程。因此,不存在预先拆分的验证集和测试集。换句话讲:
为了计算 previous
的 user-item
交互中采样一个 mini-batch
,作为验证集。
没有独立的测试阶段,即没有预先拆分的测试集。
遵循 《Streaming recommender systems》
中的 streaming recommendation setting
,我们也有离线参数估计阶段和在线推理阶段:
在离线参数估计阶段,我们使用历史上的 user-item
交互来预先训练 AutoEmb
的参数。
然后我们在线启动 AutoEmb
,在在线推理阶段持续更新 AutoEmb
参数。
数据集:Movielens-20m, Movielens-latest, Netflix Prize data
。统计数据如下表所示。
对于每个数据集,我们使用 70%
的 user-item
交互进行离线参数估计,其他 30%
用于在线学习。为了证明我们的框架在 embedding selection
任务中的有效性,我们消除了其他的上下文特征(如,用户的年龄、item
的 category
)从而排除其他特征的影响。但为了更好地推荐,将这些上下文特征纳入框架是很简单的。
实现细节:
对于 DLRS
:
embedding layer
:选择 embedding size
embedding
维度为 128
。我们将每个 user/item
的三个 embedding
拼接起来,这大大改善了 embedding
的 lookup
速度。
hidden layer
:我们有两个隐层,大小为 256*512
和 512*512
。
output layer
:我们做两类任务:
对于 rating regression
任务,输出层为 512*1
。
对于 rating classification
任务,输出层为 512*5
,采用 Softmax
激活,因为有 5
类评级。
对于控制器:
input layer
:输入特征维度为 38
。
hidden layer
:我们有两个隐层,大小为 38*512
和 512*512
。
output layer
:形状为 512*3
,采用 Softmax
激活函数,并输出
batch-size = 500
,DLRS
和控制器的学习率分别为 0.01
和 0.001
。AutoEmb
框架的所有超参数都通过交叉验证来调优。相应地,我们也对 baseline
进行了超参数调优,以进行公平的比较。
评估指标:
对于回归任务,我们首先将评分二元化为 {0, 1}
,然后通过最小化 mean-squared-error: MSE
损失来训练框架。性能可以通过 MSE
损失和准确率来评估(我们使用 0.5
作为阈值来分配标签)。
如何二元化,作者并未说明。读者猜测是用当前评分除以最大评分(如,
5
分)从而得到0 ~ 1
之间的浮点数。
对于分类任务,评分 1~5
被视为 5
个类,框架通过最小化交叉熵损失( CE loss
)进行训练。性能由交叉熵和准确率来衡量。
baseline
方法:
Fixed-size Embedding
:为所有的 user/item
分配了一个固定的 embedding size
。为了公平比较,我们将 embedding size
设定为146 = 2 + 16 + 128
。换句话说,它占用的内存与 AutoEmb
相同。
Supervised Attention Model: SAM
:它具有与 AutoEmb
完全相同的架构,同时我们通过端到端的监督学习的方式,在同一个 batch
的训练数据上同时更新 DLRS
的参数和控制器的参数。
Differentiable architecture search: DARTS
:它是标准的 DARTS
方法,为三种类型的 embedding
维度训练
值得注意的是, Neural Input Search model
和 Mixed Dimension Embedding model
不能应用于 streaming recommendation setting
,因为它们假设 user/item
的popularity
是预先知道的和固定的,然后用大的 embedding size
来分配高popularity
的 user/item
。然而,在现实世界的 streaming recommender system
中,popularity
不是预先知道的,而是高度动态的。
在线阶段的比较结果如下表所示。可以看到:
SAM
的表现比 FSE
好,因为 SAM
根据popularity
在不同维度的 embedding
上分配注意力权重,而 FSE
对所有 user/item
都有一个固定的 embedding
维度。这些结果表明,推荐质量确实与 user/item
的popularity
有关,而引入不同的 embedding
维度并根据popularity
调整 embedding
上的权重可以提高推荐性能。
DARTS
优于 SAM
,因为像 DARTS
这样的 AutoML
模型在验证集上更新控制器的参数,可以提高泛化能力,而像 SAM
这样的端到端模型在同一个 batch
训练数据上同时更新 DLRS
和控制器的参数,可能导致过拟合。这些结果验证了 AutoML
技术比传统的监督学习在推荐中的有效性。
我们提出的模型 AutoEmb
比标准 DARTS
模型有更好的性能。
DARTS
在三种 embedding
维度上为每个 user/item
分别训练了 user/item
的这些权重可能不会被很好地训练,因为这个 user/item
的交互有限。AutoEmb
的控制器可以纳入大量的 user/item
交互,并从中捕获到重要的特征。
另外,控制器有一个显式的popularity
输入,这可能有助于控制器学习popularity
和 embedding
维度之间的依赖关系,而 DARTS
则不能。这些结果证明了开发一个控制器而不仅仅是实值权重的必要性。
在离线参数估计阶段之后,在线阶段的大多数 user/item
已经变得非常 popular
。换句话说,AutoEmb
对热门 user/item
有稳定的改进。
综上所述,所提出的框架在不同的数据集和不同的指标上都优于 baseline
。这些结果证明了 AutoEmb
框架的有效性。
我们将调查所提出的控制器是否能根据各种popularity
产生适当的权重。因此,我们比较了没有控制器的 FSE
、有监督注意力控制器的SAM
、以及有基于 AutoML
的控制器的 AutoEmb
。Figure 6
显示了 Movielens-20m
数据集的结果,其中 x
轴是popularity
,y
轴对应的是性能。由于篇幅有限,我们省略了其他数据集的类似结果。可以看到:
当popularity
较小时,FSE
的表现比 SAM
和 AutoEmb
差。这是因为较大维度的embedding
需要足够的数据才能很好地学习。参数较少的小型 embedding
可以快速捕捉一些 high-level
的特性,这可以帮助冷启动预测。
随着popularity
的提高,FSE
的表现超过了 SAM
。这个结果很有趣,但也很有启发性,原因可能是,SAM
的控制器过拟合少量的训练样本,这导致了次优的性能。
相反,AutoEmb
的控制器是在验证集上训练的,这提高了它的泛化能力。这个原因也将在下面的小节中得到验证。
AutoEmb
总是优于 FSE
和 SAM
,这意味着所提出的框架能够根据popularity
自动地、动态地调整不同维度的 embedding
的权重。
为了进一步探究 AutoEmb
的控制器根据popularity
产生的权重,我们在Figure 7
中画出了不同popularity
的权重分布。我们可以观察到:在小的popularity
下,分布倾向于小维度的 embedding
;而随着popularity
的增加,分布倾向于大维度的 embedding
。这一观察验证了我们的上述分析。
综上所述,AutoEmb
的控制器可以通过自动的、动态的方式为不同的popularity
产生合理的权重。
不同数据规模下的性能:训练基于深度学习的推荐系统通常需要大量的 user-item
交互数据。我们提出的 AutoEmb
框架在 DLRS
中引入了一个额外的控制器网络、以及一些额外的参数,这可能使它难以被很好地训练。我们在下图中展示了优化过程,其中 x
轴是训练样本的数量,y
轴对应的是性能。可以看到:
在早期训练阶段,SAM
的表现最差,因为它的控制器对少量的训练样本过拟合。
随着数据的增加,SAM
的过拟合问题逐渐得到缓解,SAM
的表现优于 FSE
,这验证了在不同 embedding
维度上加权的必要性。
AutoML
在整个训练过程中优于 SAM
和 FSE
。尤其是在训练样本不足的早期训练阶段,它能明显提高训练效果。