Self-Supervised Reinforcement Learning for Recommender Systems 笔记

论文信息

« Self-Supervised Reinforcement Learning for Recommender Systems »

SIGIR-2020

session-based or sequential recommendation

核心思想

用强化学习引入额外的信息来辅助神经网络的训练

架构图

过程

强化学习建模

S

$s_{t} = G(x_{1:t})$

$x_{1:t}$ 是用户行为序列, G 是编码器(例如 GRU 等)

A

所有可选的物品

在离线数据中, 可以将 $x_{t+1}$ 当作 $s_t$ 的动作

R

比如下一个时间步用户点击了某商品, 那么就返回一个点击行为的奖励

比如下一个时间步用户购买了某商品, 那么就返回一个购买行为的奖励

可以对这两种行为分配不同的奖励大小使模型更偏好某种行为(比如给购买行为更多的奖励, 让系统推荐用户更可能购买的物品)

为什么不能直接用强化学习做推荐

没有在训练数据中出现过的的情况无法学习, 会导致最终直接预测 $Q(s, a)$ 是有偏差的(有些 $a$ 根本没出现过, 训练的时候只能在出现过的 $a$ 上训练, 测试的时候却是找所有 $a$ 中最大的 $a$ , 训练与测试分布不同, 存在偏差)

在训练数据中出现过的情况是可以用来辅助训练的, 因为这部分数据是无偏的

SQN

训练阶段

input: $(x_{1:t} , a_t )$

$L_{SQN} = L_{s} + L_{q}$

损失函数由两部分组成

第一部分

$L_{s}=-\sum_{i=1}^{n} Y_{i} \log \left(p_{i}\right)$

$p_{i}=\frac{e^{y_{i}}}{\sum_{i^{\prime}=1}^{n} e^{y_{i} \prime}}$

在下一个时间步, 如果用户与 i-th 物品交互了, 那么 $Y_i$ 就是1, 否则为0

$p_i$ 为物品的 classification distribution

第二部分

$L_{q}=\left(r\left(\mathrm{~s}{t}, a{t}\right)+\gamma \max {a^{\prime}} Q\left(\mathrm{~s}{t+1}, a^{\prime}\right)-Q\left(\mathrm{~s}{t}, a{t}\right)\right)^{2}$

其中 $Q$ 通过在 $s_t$ 上加一个全连接层得到

$Q\left(s_{t}, a_{t}\right)=\delta\left(s_{t} \mathbf{h}{t}^{T}+b\right)=\delta\left(G\left(x{1: t}\right) \mathbf{h}_{t}^{T}+b\right)$

为了保证学习的稳定性, 实际算法中使用的是 double Q-learning

测试阶段

用 supervised head (图 1b 左上部分)的 top-k 结果当作推荐结果

SAC

强化学习部分的 $Q$ 值可以很好的衡量第一部分的 $L_s$ 的重要性, 所以可以将 $Q$ 乘以 $L_s$ 的得到一个新的 loss

$L_{A}=L_{s} \cdot Q\left(\mathrm{~s}{t}, a{t}\right)$

为了使 Q-value 在复杂的模型 (例如 Transformer ) 下保持稳定, 设置一个超参 T, 前 T 步使用 SQN 更新, 之后使用 SAC 更新

实验

只说几个有意思的点

  1. 图4中可以看到调整购买与点击奖励比例对购买或点击 NDCG 的直接影响

  2. 图7, 8中可以看出直接用强化学习进行推荐性能很差