SIGIR'21「腾讯」冷启动:元学习+FTRL+动态学习率=FORM模型

2022-09-19 11:28:08 浏览数 (1)

title: FORM: Follow the Online Regularized Meta-Leader for Cold-Start Recommendation link: https://dl.acm.org/doi/pdf/10.1145/3404835.3462831 from:SIGIR 2021

预备知识

https://zhuanlan.zhihu.com/p/136975128 元学习

https://zhuanlan.zhihu.com/p/72828180 FTML

https://zhuanlan.zhihu.com/p/32694097 FTRL

1. 背景

本文针对元学习在在线推荐系统的冷启动中存在的问题提出FORM学习框架,通过正则化的方式来缓解在线系统的波动以及产生稀疏的权重,并且提出可缩放的学习率使模型能更有效的适应新用户。现有的元学习方法存在的问题

  • 无法根据不同用户的历史记录的多样性对其进行评估,对所有用户都同等对待
  • 难以抵抗在线系统的复杂波动
  • 解决在线系统的巨大吞吐量具有挑战性

作者在文中列出了伪代码,感兴趣的小伙伴可以阅读

2. 基于元学习的推荐系统基本形式

用户集合表示为

U

,画像为

p_u

,商品集合为

I

,商品画像为

q_i

r_{ui} in R^{mtimes n}

表示用户和商品之间的交互,包括显式和隐式。在元学习框架下,将每一个用户u作为一个任务,

I_u

表示和用户交互的商品的集合,将其分为支持集合查询集

S_u,Q_u

。目标是去学习未知的

hat{r}_{ui}

。主要包含三个部分:embedding and evaluation framework, local user-level gradient update principles, and global system-level update principles。

小概览

  • embedding and evaluation framework:生成相应特征的embedding,模型预测
  • local user-level gradient update principles:元学习中不同任务的梯度更新,在本文中就是不同用户构建为单个任务所以是user-level。
  • global system-level update principles:元学习中meta模型的参数更新,这里的meta就是在MAML(具体可以看预备知识中的元学习)中生成初始化参数的模型。

2.1 Embedding and Evaluation

将用户和商品的特征作为输入,用户特征表示为

x_u={u_{id},p_u}

,商品特征表示为

x_i={i_{id},q_i}

,分别包含对应的id和画像特征。经过MLP和ReLU激活函数可以得到对应的embedding

e_u,e_i

,然后将其拼接后送入后续的模型进行预测

hat{r}_{ui}=MLP_{theta}(e_uoplus e_i )

。其中

oplus

表示向量拼接。最终如下式计算损失函数后,进行梯度回传,这里笔者认为作者应该是举个例子,其他损失函数应该也是可以的,不唯一。

min _{theta} mathcal{L}_{u}left(f_{theta}, I_{u}right)=frac{1}{left|I_{u}right|} sum_{i in I_{u}}left(hat{r}_{u i}-r_{u i}right)^{2}

2.2 Local User-Level Update

局部和全局共享embedding和评估框架,但是在梯度更新的时候存在不同。传统机器学习是随机初始化参数,然后不断训练慢慢收敛。元学习,例如MAML,通过一些先验知识得到模型的初始化参数,然后可以使得模型能够快速收敛并具有较好的性能。

模型参数通过两层更新,分别为局部更新和全局更新。局部更新通过先验用户历史进行训练,公式如下,其中

D_u^s

表示支持集,L()表示针对用户u的训练任务的损失函数,

theta_{u}=theta_{u}-alpha_{l} nabla_{theta_{u}} mathcal{L}_{u}left(f_{theta_{u}}, D_{u}^{s}right)

2.3 Global System-Level Update

然后利用查询集

D_u^q

,对用户集合U中的每个用户u的任务都用

tilde{theta}

初始化,然后对每一个用户产生的损失求和,优化下面的损失。

min _{tilde{theta}} sum_{u sim p(mathcal{U})} mathcal{L}_{u}left(f_{theta_{u}}, D_{u}^{q}right)

对于每个用户u的任务来说,参数更新方式如下,

theta_{u}=tilde{theta}-eta nabla_{theta_{u}} mathcal{L}_{u}

对于初始化参数

tilde{theta}

来说,参数更新方式如下,

tilde{theta}=theta-alpha_{g} nabla_{theta} sum_{u sim p(mathcal{U})} mathcal{L}_{u}left(f_{theta}, D_{u}^{q}right)

3. 方法

3.1 动机

现有的方法旨在学到一个好的初始化参数

tilde{theta}

,这个参数可以可以在所有用户上都表现的好。但是这种方法难以处理在线场景,在线推荐系统中,支持集的用户是从波动和嘈杂的在线序列中随机选择的此类训练质量有限的用户可能会进一步导致梯度退化和局部最优。如图1所示,元推荐的命中率偶尔会出现不必要的下降。更糟糕的是,每次元推荐的性能下降时,在训练过程中命中率的方差急剧增加,如图 1 的子图所示。因此,我们需要新的方法来控制在线性能并提供更多稳定的训练过程。

3.2 Follow the Online Regularized Meta-Leader

虽然元学习在离线情况下已经取得了较大成功,但是在在线推荐中还存在以下问题:

  • 用户以在线顺序到达,因此需要设计方法来有效的学习在线梯度
  • 由于在线系统的波动性,在梯度正确收敛之前可能会发生剧烈波动
  • 不同用户在全局更新中都是同等对待的

本文作者提出了三个方法来解决上述问题:Follow the Online Meta Leader (FTOML), Follow the Regularized Online Meta Leader (FTROL), and Optimize the Online Scalable Learning Rate (SLR)。

如图所示为模型的流程图,首先,用户和商品被记录到缓冲区

U_t,D_t

;然后从用户集合中提取一个batch,利用Local-Update结合FTROL算法对用户u在时刻t时的局部参数进行更新,并且只有小于阈值C的损失才送入全局参数更新,结合SLR为不同的用户提供不同的学习率。

3.2.1 Follow the Online Meta leader

基于FTL(可看预备知识中的FTRL)算法,作者提出FTOML方法来进行在线局部参数更新。核心思想:将所有来自先前用户流的数据合并到一个元梯度学习步骤中,而不是仅考虑当前流中采样的记录。从而使得模型能够不仅准确预测当前记录也能预测之前的记录。目标函数为下式,其中损失函数表示用户u在时刻s的局部损失,D为用户u的训练数据集。

theta_{t 1}=underset{theta}{arg min } sum_{s=1}^{t} sum_{u in mathcal{U}} mathcal{L}_{u, s}left(f_{theta}, D_{u}right)

为了确保性能,作者设置了一个阈值

0 人点赞