SIGIR'21 因果推断+推荐系统:利用反事实理论增强用户行为序列数据

2022-09-19 11:29:13 浏览数 (2)

Counterfactual Data-Augmented Sequential Recommendation https://dl.acm.org/doi/pdf/10.1145/3404835.3462855 SIGIR 2021

公式太长可以左右滑动哦

1. 背景

针对用户历史行为序列数据中的稀疏性问题,本文采用因果推断中的反事实的相关理论来生成新的序列数据。要回答这样一个问题“如果用户之前购买的商品有所不同,她想购买什么?” 本文主要利用三种不同的反事实样本生成方式(启发式采样、基于数据的采样、基于模型的采样),来生成有助于模型训练的数据,从而进一步优化推荐模型。

2. 方法

2.1 问题定义

用户集为

mathcal{U}

,商品集为

mathcal{I}

mathcal{T}={({u_i,t_i^1,...,t_i^{l_i}},t_i^{l_i 1})}_{i=1}^N={T_i,t_i^{l_i 1}}_{i=1}^N

表示用户商品的交互集合。通过优化下式得到推荐模型

mathcal{A}

,下式转化后就是我们常见的交叉熵损失函数了。其中

mathcal{T}^{-}={u_s,t_s^1,...,t_s^{l_s}},t_s^{l_s 1})}_{s=1}^M

为负采样得到的数据,其中

t_s^{l_s 1}

是随机选择的和用户没有交互的商品。

max _{mathcal{A}} prod_{left(T_{i}, t_{i}^{l_{i} 1}right) in mathcal{T} cup mathcal{T}^{-}} log mathcal{A}left(t_{i}^{l_{i} 1} mid T_{i}right)^{y_{i}}left(1-mathcal{A}left(t_{i}^{l_{i} 1} mid T_{i}right)right)^{left(1-y_{i}right)}

如下图所示,本文主要涉及两个模型,采样模型(sampler model,

S

)和锚点模型(anchor model,

A

)。一开始,这两个模型是在原始数据上预训练好的,然后由S生成反事实序列来再次优化模型A,得到最终的模型。锚点模型就是我们常用的推荐模型。

2.2 启发式采样

最直观的启发式采样方式,就是将序列中的某个商品

t^d

替换为其他随机的商品

t^a

。然后将新序列

{t^1,...,t^{d-1},t^a,t^{d 1},...,t^l}

输入到模型S中得到最终可能感兴趣点击的商品

hat{t}^{l 1}

,公式如下,最后

({t^1,...,t^{d-1},t^a,t^{d 1},...,t^l},hat{t}^{l 1})

作为生成的反事实数据。

hat{t}^{l 1}=arg max _{t in I} mathcal{S}left(t mid u, t^{1}, ldots, t^{d-1}, t^{a}, t^{d 1}, ldots, t^{l}right)

种启发式采样器模型很容易实现。然而,它有太多的自由度,因此在生成的序列中引入了太多的随机性。生成的序列对于模型不是同等重要的。

2.3 可学习的采样器

image.png

2.3.1 面向数据的反事实序列学习

面向数据的方法是受决策边界和子空间启发,通常位于决策边界附近的样本我们认为是对整体决策更具辨别能力的样本。作者通过“最小化”改变用户的历史项目来生成反事实序列,这样当前交互的商品就可以“准确地”改变,即生成反事实序列。以e表示商品的embedding,那么同样用《启发式采样》中的例子,对于原始序列的embedding用表示,替换后的用表示。优化下式,其中C表示可以用于替换的商品集合。通过最小化下式,使得预测的结果不再是,并且改变的很小。简单理解:将边界的embedding,只需要改变很小一部分,就可能改变其类别,并且生成的embedding也是在边界附近的,对于分类有益

begin{array}{l} min _{t^{a} in C}left|boldsymbol{e}_{t^{a}}-boldsymbol{e}_{t^{d}}right|_{2}^{2} \ text { s.t. } t^{l 1} neq arg max _{t in I} mathcal{S}left(t mid u, t^{1}, ldots, t^{d-1}, t^{a}, t^{d 1}, ldots, t^{l}right) end{array}

但是,上式存在一个问题就是不可导。作者引入一个虚拟的商品

t^tilde{a}

,使得

e_{t^tilde{a}}=e_{t^d} Delta

,其中

Delta

表示

t^tilde{a}

t^d

之间的距离(可学习,训练),是一个连续的向量。可以在学到

e_{t^tilde{a}}

后,将其投影到最近的真实商品。为了学习到

e_{t^tilde{a}}

,将上式改写为下式,第一项约束是的改变尽量小,第二项约束对于预测概率大的情况做惩罚,即希望改变后的预测应该是其他商品

min _{Delta in mathbb{R}^{D}}|Delta|_{2}^{2} alpha mathcal{S}left(boldsymbol{e}_{t^{l 1}} mid e_{u}, boldsymbol{e}_{t^{1}}, . ., boldsymbol{e}_{t^{d-1}}, boldsymbol{e}_{t^{d}} Delta, boldsymbol{e}_{t^{d 1}}, . ., boldsymbol{e}_{t^{l}}right)

在通过上式训练得到

Delta

后,可以得到

e_{t^tilde{a}}

,然后找到最靠近

e_{t^tilde{a}}

的真实商品

e_{t^a}

,然后得到替换后的反事实序列。

2.3.2 基于模型的反事实序列学习

这一节作者采用的想法是如果一个样本在模型中产生的损失较大,那么他对模型贡献的知识就更多,更有利于模型参数更新,有点难样本挖掘的意思。受这方面启发,则还是和上面同样的序列表示,可以得到需要优化的式子为下式,第一项用于找到可以使得anchor模型A最大化的替换商品,第二项是使得预测结果不再是原来的商品,第三项用于控制与原始embedding之间的差别,差别不能过大。

begin{array}{l} max _{t^{a} in C}-log mathcal{A}left(hat{t}^{l 1} mid u, t^{1}, ldots, t^{d-1}, t^{a}, t^{d 1}, ldots, t^{l}right) \ text { s.t. } hat{t}^{l 1}=arg max _{t in I} mathcal{S}left(t mid u, t^{1}, ldots, t^{d-1}, t^{a}, t^{d 1}, ldots, t^{l}right) \ left|boldsymbol{e}_{t^{a}}^{mathcal{S}}-boldsymbol{e}_{t^{d}}^{mathcal{S}}right|_{2}^{2} leq lambda end{array}

当然,这里会遇到上一个方法一样的问题,因此同样采用虚拟商品的方式,得到替换后的embedding为下式,其中

mathcal{F}

表示模型S或A。

boldsymbol{E}_{u}^{mathcal{F}}=left{boldsymbol{e}_{u}, boldsymbol{e}_{t^{1}}^{mathcal{F}}, ldots, boldsymbol{e}_{t^{d-1}}^{mathcal{F}}, boldsymbol{e}_{t^{d}}^{mathcal{F}} Delta, boldsymbol{e}_{t^{d 1}}^{mathcal{F}}, ldots, boldsymbol{e}_{t^{l}}^{mathcal{F}}right}

改写后的目标函数为下式,β和τ为温度系数,log部分用于约束希望新的embedding E在当前目标商品 i 上的损失。加一个softmax得到他的期望损失。

max _{Delta in mathbb{R}^{D}}-sum_{i=1}^{|I|} frac{exp left(tau mathcal{S}left(boldsymbol{e}_{i}^{mathcal{S}} mid E_{u}^{mathcal{S}}right)right)}{sum_{j=1}^{|I|} exp left(tau mathcal{S}left(boldsymbol{e}_{j}^{mathcal{S}} mid E_{u}^{mathcal{S}}right)right)} log mathcal{A}left(boldsymbol{e}_{i}^{mathcal{A}} mid boldsymbol{E}_{u}^{mathcal{A}}right)-beta|Delta|_{2}^{2}

通过上述方法方法得到反事实序列后,结合原始数据进一步对anchor模型进行优化,具体流程可以看论文中的伪代码。

3. 实验结果

H,D,M分别为启发式采样,基于数据的采样和基于模型的采样

0 人点赞