前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ada-Ranker:咱就说咱能根据数据分布自适应,不信瞧瞧?

Ada-Ranker:咱就说咱能根据数据分布自适应,不信瞧瞧?

作者头像
秋枫学习笔记
发布2022-09-19 10:16:27
4650
发布2022-09-19 10:16:27
举报
文章被收录于专栏:秋枫学习笔记秋枫学习笔记

关注我们,一起学习~

标题:Ada-Ranker: A Data Distribution Adaptive Ranking Paradigm for Sequential Recommendation 地址:https://arxiv.org/pdf/2205.10775.pdf 代码:https://github.com/RUCAIBox/Ada-Ranker 会议:SIGIR 2022 主要参与:微软,人大

1. 导读

现在主流的排序模型设计和使用方式是:离线训练模型,冻结参数,并将其部署到在线服务。但是实际上,候选商品是由特定的用户请求决定的,其中潜在的分布(例如,不同类别的商品比例,流行度或新商品的比例)在生产环境中彼此之间存在很大差异。经典的参数冻结推理方式无法适应动态服务环境,使得排序模型的表现受到影响。

本文提出了一种新的训练和推理范式,称为 Ada-Ranker,以应对动态在线服务的挑战。Ada-Ranker 可以根据当前候选商品组的数据分布自适应地调整排序模型ranker的参数,而不是使用参数冻结模型进行通用服务。首先从候选项目中提取分布模式。然后,通过模式调整ranker,使ranker适应当前的数据分布。最后,使用修改后的ranker对候选列表进行评分。

2. 懒人阅读

本文提出ada-ranker方法,该方法根据候选商品集合的数据分布自适应的调整排序模型中相应的参数,本文主要是考虑序列推荐,对于其他类型是否有效未知。通过神经过程编码对候选集的数据分布进行编码,通过重参数化将分布信息应用于整个网络。然后,利用分布信息分别修改序列编码层和最后的预测层,得到实现即插即用,模型无关的两个组件。

3. 问题定义

给定来自用户u的请求,召回模块使用多种方法(例如基于流行度、item-to-item,近似最近邻搜索)来检索一小部分(通常为数百或数千)候选商品:

C=\{v_i\}_{i=1}^m

。排序模型ranker 的目标是对C中的每个候选商品v进行评分,并返回(top-𝑘)有序列表作为推荐。

3.1 标准的序列排序模型结构

用户u的用户画像用

x_u

表示,它是基于历史活动得出的:

x_u=\{v_1,...,v_n\}

,其中𝑛是行为的长度。ranker 采用模型f来预测用户u对目标候选商品v的偏好分数:

\hat{y}_{uv}=f(x_u,v)

,其中f通常包含三个主要层:embedding层Q(),序列编码层

g^{SE}()

和预测层

g^{PRED}()

。在图 1(a) 中展示了 ranker 模型的典型架构f。用户行为序列将经过embedding层Q()得到商品embedding,公式如下,

Q u=Q\left(\mathbf{x}_{u}\right)=\left\{\mathbf{q}_{v_{1}}, \mathbf{q}_{v_{2}}, \ldots, \mathbf{q}_{v_{n}}\right\}

序列编码层

g^{SE}()

对交互序列进行编码并生成一个embedding作为用户表征,公式如下,

p_u=g^{SE}(Q_u)
p_u

与目标物品向量

q_v

(如果有一些属性特征,如物品类别,用户资料,也可以在这里附加)连接作为预测层的输入,通常为简单的两层MLP,公式如下,

\hat{y}_{u v}=g^{P R E D}\left(\mathbf{p}_{u}, \mathbf{q}_{v}\right)=M L P\left(\mathbf{p}_{u}, \mathbf{q}_{v}\right)

总体而言可以表示为下式,

\hat{y}_{u v}=f\left(\mathbf{x}_{u}, v\right)=g^{P R E D}\left(g^{S E}\left(Q\left(\mathbf{x}_{u}\right)\right), \mathbf{q}_{v}\right) .

3.2 潜在问题。

检索到(召回)的候选商品C可能具有来自不同召回请求的不同数据分布。现有方法采用全局排序模型f来服务所有请求,并且对于给定的用户,它将为项目v产生相同的分数,而不管它来自哪个候选集C。本文利用C作为排序的上下文,并让模型根据具体上下文进行自我调整,从而为当前的排序任务做出更细粒度和准确的预测分数。

4. 方法

4.1 自适应排序范式

自适应排序范式的本质是结合了一个专门设计的自适应机制,它对C的数据分布模式进行编码,并相应地将全局模型f修改为局部模型f',从而使f'具有更好的性能。因此,重点的是设计自适应机制,需要考虑一下几点要求:

  • (C1) Lightweight:该模型在计算和内存使用方面都应该是高效的。
  • (C2) Model-agnostic:模型无关,可以和各种模型结合。
  • (C3) Plug-and-play:即插即用,可以灵活地开关。

基于此,

  • 首先,从C中学习分布模式z,这将用于调制全局模型f得到局部模型f‘;
  • 然后,使用f’对C中的候选商品进行评分:
\hat{y}_{uv}=f'(x_u,v)

。由于全局模型f中有两个关键组件,即

g^{SE}()

g^{PRED}()

,针对这两个组件提出了两个自适应方法,称为输入调制和参数调制,这可以结合数据分布z来分别调制上述两个组件。Ada-Ranker 的概述如图 1(b) 所示。

4.2 从候选商品中学习数据分布

4.2.1 Neural Processes Encoder

假设C中的候选商品是从随机过程F的特定实例中提取的。为了表征动态和多样化的数据分布,采用Neural Processes (NP) 的思想,用可学习的神经网络来近似随机过程。NP 的优势在于(1)提供了一种有效的方法来模拟基于观察数据表示的数据分布;(2) 由比高斯过程更有效的多层感知器 (MLP) 参数化。具体方式如下,

首先使用两层MLP为C中的每个商品j生成一个潜在embedding

r_j

r_j=MLP^{(NP)}(q_j)

。然后,NP 编码器将聚合这些潜在向量以通过均值池化生成置换不变表示r,

r=(r_1+...r_m)/m

4.2.2 重参数化

上述的表征r将用于生成均值向量和方差向量,公式如下,

\begin{array}{c} \mathbf{s}=\operatorname{ReLU}\left(\mathbf{W}_{s} \mathbf{r}\right), \\ \boldsymbol{\mu}=\mathbf{W}_{\mu} \mathbf{s}, \log \boldsymbol{\sigma}=\mathbf{W}_{\sigma} \mathbf{s} . \end{array}

最后,数据分布由一个随机变量z建模,

z\sim N(\mu, \sigma^2)

,通过重参数化简单理解就是将随机变量z中的随机性和数据正式信息解耦,即可以表示为下式,其中

\odot

表示逐元素相乘,

z=\mu + \epsilon \odot \sigma,\epsilon \in N(0,I)

4.3 输入调制

4.3.1 将数据分布建模为自适应条件

这部分是针对输入的

g^{SE}

进行修改。为了根据数据分布修改商品表征,将上述的z作为调整相应输入表征的条件。采用了FiLM方法 [1],这是一种通用方法来模拟条件信息对神经网络的影响。以分布模式z为条件,对商品序列的潜在表示进行线性调制,以便将输入embedding调整为在候选集C中更易于区分的新表征。具体流程如下图,

通过条件表示z学习生成两个调制系数γ和β,公式如下,f公式如下,两个f包含不同的参数,两个f在交互序列中的所有商品中是共享的

\gamma=f_s(z),\beta=f_b(z)
f(z)=w_2ReLU(w_1z+b_1)+b_2

调整后的潜在表征为下式,

\tilde{q}_t=\gamma q_t+\beta

4.4 参数调制

这部分是针对预测的

g^{PRED}

进行修改。

4.4.1 Adaptation by Model Patch

基本思想是学习参数变化以适应新的输入或任务上下文,如上图所示,可以合并两个 MLP,根据数据分布z为预测层的第k个隐藏层生成参数补丁,然后对参数进行修改,

\widehat{\mathbf{W}}_{k}=M L P^{\left(w_{k}\right)}(\mathbf{z}), \quad \widehat{\mathbf{b}}_{k}=M L P^{\left(b_{k}\right)}(\mathbf{z})
\widetilde{\mathbf{W}}_{k}=\mathbf{W}_{k} \odot \widehat{\mathbf{W}}_{k}, \quad \widetilde{\mathbf{b}}_{k}=\mathbf{b}_{k}+\widehat{\mathbf{b}}_{k}

4.4.2 Learning with Parameter Pool

上面生成参数不定的方式存在一个主要问题是调制参数以无约束的方式生成,这样很难直接优化 MLP 以逼近任意实值向量,尤其是在训练样本不足时。因此构建一个由多个基本参数(向量或矩阵)组成的参数池,这是一个参数记忆网络。这些参数是基于多个基本参数的线性组合得出的。参数调制适应机制如图 3 (c) 所示。有一个带有L个基本参数的参数池M,

M=\{M_1,...,M_L\}

,其中每个

M_i

与排序模型的MLP参数W具有相同的形状。然后,参数补丁

\hat{W}

由M的线性组合合成,公式如下,这里的q是可学习参数,用上述同样的方法可以得到对b的参数不定

\hat{b}

\hat{W}=\sum_{i=1}^L{\alpha_iM_i}
\begin{array}{l} a_{i}=\mathbf{z} \cdot \mathbf{q}_{i} \\ \alpha_{i}=\frac{\exp \left(a_{i}\right)}{\sum_{j=1}^{L} \exp \left(a_{j}\right)}, \forall i=1,2, \ldots, L \end{array}

4.5 优化

经过上述步骤之后,原始模型可以改写为

f'(u,v)=\tilde{g}^{PRED}(\tilde{g}^{SE}(Q(x_u)),q_v)

,接下来是如何优化他。

4.5.1 参数学习

损失函数采用交叉熵损失函数,

\mathcal{L}=\frac{1}{|\Gamma|} \sum_{(u, v) \in \Gamma}-y_{u, v} \log \tilde{y}_{u v}-\left(1-y_{u, v}\right) \log \left(1-\tilde{y}_{u v}\right)

\Theta

表示基础模型f的参数集,

\Phi

表示自适应模块中的参数集(包括分布提取器、输入调制和参数调制)。可以采用以下三种训练策略,

\emptyset \Rightarrow \Theta+\Phi

,直接的方法是从头 (

\emptyset

)开始以端到端的方式训练整个 Ada-Ranker 模型。

\Theta\Rightarrow \Theta+\Phi

,在第一阶段,训练基础模型直到收敛,在这个阶段只有

\Theta

得到更新;在第二阶段,加载预训练的基础模型并训练整个 Ada-Ranker,因此

\Theta

\Phi

中的参数都会更新。

\Theta\Rightarrow \Phi

,在第一阶段,训练基础模型直到它收敛,所以在这个阶段只有

\Theta

得到更新;在第二阶段,加载预训练的基础模型f并冻结其参数,并仅通过更新

\Phi

来训练 Ada-Ranker。

为了实现第4.1节中提到的 (C3) 特性,采用最后一种训练策略。预训练基础模型的参数可以为 AdaRanker 的训练提供良好的参数初始化,因此第一个策略通常比其他两个策略差。第三种策略的主要优点是,经过 Ada-Ranker 的训练,基础模型的参数保持不变,工业系统可以灵活地开启或关闭自适应模块,以满足不同场景的不同需求。

伪代码如下,

5. 实验结果

对比实验

策略对比

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1 标准的序列排序模型结构
  • 3.2 潜在问题。
  • 4.1 自适应排序范式
  • 4.2 从候选商品中学习数据分布
    • 4.2.1 Neural Processes Encoder
      • 4.2.2 重参数化
      • 4.3 输入调制
        • 4.3.1 将数据分布建模为自适应条件
        • 4.4 参数调制
          • 4.4.1 Adaptation by Model Patch
            • 4.4.2 Learning with Parameter Pool
            • 4.5 优化
              • 4.5.1 参数学习
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档