其他分享
首页 > 其他分享> > Slate-based Recommender Systems 论文解读

Slate-based Recommender Systems 论文解读

作者:互联网

Reinforcement Learning for Slate-based Recommender Systems: A Tractable Decomposition and Practical Methodology

本博客对SlateQ论文进行了解读,如有错误请评论指正。

文章目录

1. 论文算法介绍(第四、五章)

1.1. SlateQ: 基于强化学习的推荐列表分解技术Sl

SlateQ算法将推荐列表(Slate)的整体生成 分解为了 生成单个推荐项再组成推荐列表。它的提出基于两个假设(论文第10页):

  1. SC(Single choice)
    用户一次只在推荐列表中点击一个推荐项或不点击任何推荐项
  2. RTDS(Reward/transition dependence on selection)
    用户对推荐项的选择会产生不同的回报和状态转移

由上述两个假设,可以得到以下两个推论(论文11页公式12和13):
R ( s , A , i ) = R ( s , A ′ , i ) = R ( s , i ) ∀ A , A ′  containing  i R(s,A,i)=R(s,A',i)=R(s,i)\qquad\forall A,A'\ \text{containing}\ i R(s,A,i)=R(s,A′,i)=R(s,i)∀A,A′ containing i P ( s ′ ∣ s , A , i ) = P ( s ′ ∣ s , A ′ , i ) = P ( s ′ ∣ s , i ) ∀ A , A ′  containing  i P(s'|s,A,i)=P(s'|s,A',i)=P(s'|s,i)\qquad\forall A,A'\ \text{containing}\ i P(s′∣s,A,i)=P(s′∣s,A′,i)=P(s′∣s,i)∀A,A′ containing i

这两个公式表达了:无论推荐项 i i i 出现在哪一个推荐列表中,只要它被用户选择了,那么它所产生的回报值和状态转移都是一样的。

在以上推论的前提下,论文利用马尔科夫决策过程模型(MDP)构造了推荐项辅助函数(论文11页公式14),用于计算在状态 s s s 时推荐列表中单个推荐项的 LTV(long-term value,长期价值):
Q ‾ π ( s , i ) = R ( s , i ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , i ) V π ( s ′ ) \overline{Q}^\pi(s,i)=R(s,i)+\gamma\sum_{s'\in S}P(s'|s,i)V^\pi(s') Q​π(s,i)=R(s,i)+γs′∈S∑​P(s′∣s,i)Vπ(s′)

在有了单个推荐项LTV的基础上,计算出推荐列表整体的LTV(论文11页Proposition 1),即所有推荐项LTV的期望值:
Q π ( s , A ) = ∑ i ∈ A P ( i ∣ s , A ) Q ‾ π ( s , i ) Q^\pi(s,A)=\sum_{i\in A}P(i|s,A)\overline{Q}^\pi(s,i) Qπ(s,A)=i∈A∑​P(i∣s,A)Q​π(s,i)

当个推荐项LTV值 Q ‾ π ( s , i ) \overline{Q}^\pi(s,i) Q​π(s,i)可以用TD方法来更新(论文12页公式19): Q ‾ π ( s , i ) ← α ( r + γ ∑ j ∈ A ′ P ( j ∣ s ′ , A ′ ) Q ‾ π ( s ′ , j ) ) + ( 1 − α ) Q ‾ π ( s , i ) \overline{Q}^\pi(s,i)\leftarrow \alpha(r+\gamma\sum_{j\in A'}P(j|s',A')\overline{Q}^\pi(s',j))+(1-\alpha)\overline{Q}^\pi(s,i) Q​π(s,i)←α(r+γj∈A′∑​P(j∣s′,A′)Q​π(s′,j))+(1−α)Q​π(s,i)

也可以用Q-Learning的方法来更新(论文13页公式20): Q ‾ π ( s , i ) ← α ( r + γ max ⁡ A ′ ∈ A ∑ j ∈ A ′ P ( j ∣ s ′ , A ′ ) Q ‾ π ( s ′ , j ) ) + ( 1 − α ) Q ‾ π ( s , i ) \overline{Q}^\pi(s,i)\leftarrow \alpha(r+\gamma\max_{A'\in A}\sum_{j\in A'}P(j|s',A')\overline{Q}^\pi(s',j))+(1-\alpha)\overline{Q}^\pi(s,i) Q​π(s,i)←α(r+γA′∈Amax​j∈A′∑​P(j∣s′,A′)Q​π(s′,j))+(1−α)Q​π(s,i)

显然,使用Q-Learning的方法来更新时可以选取到最大的 Q ‾ π ( s , i ) \overline{Q}^\pi(s,i) Q​π(s,i),也就可以得到最优的 Q π ( s , A ) Q^\pi(s,A) Qπ(s,A)(论文13页公式Proposition 3): Q ( s , A ) = ∑ i ∈ A P ( i ∣ s , A ) Q ‾ ( s , i ) Q(s,A)=\sum_{i\in A}P(i|s,A)\overline{Q}(s,i) Q(s,A)=i∈A∑​P(i∣s,A)Q​(s,i)

1.2. 用Q值对推荐列表进行优化

在已经明确可以通过组合单个推荐项得到整体推荐列表的情况下,我们具体怎么去得到最优的推荐列表 A A A呢?这就涉及到对 Q π ( s , A ) Q^\pi(s,A) Qπ(s,A)的优化了。

如论文13页Proposition 3 和 论文14页公式21所示,对 Q ( s , A ) Q(s,A) Q(s,A)的最优化公式表示为: Q ( s , A ) = max ⁡ A ∈ I , ∣ A ∣ = k Q π ( S , A ) = max ⁡ A ∈ I , ∣ A ∣ = k ∑ i ∈ A P ( i ∣ s , A ) Q ‾ ( s , i ) Q(s,A)=\max_{A\in I,|A|=k}Q^\pi(S,A)=\max_{A\in I,|A|=k}\sum_{i\in A}P(i|s,A)\overline{Q}(s,i) Q(s,A)=A∈I,∣A∣=kmax​Qπ(S,A)=A∈I,∣A∣=kmax​i∈A∑​P(i∣s,A)Q​(s,i)其中, A ∈ I , ∣ A ∣ = k A\in I,|A|=k A∈I,∣A∣=k表示推荐列表中的推荐项从整体数据集中选取而来,且推荐列表的长度为 k k k(实际上在在线实验时 k k k值不固定,参考论文30页第九章)。

论文提出了三种方法对 Q π ( s , A ) Q^\pi(s,A) Qπ(s,A)进行优化:
方法一:LP(Linear Program,线性规划)
定义(论文15页公式22和23): Q ( s , A ) = max ⁡ ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) Q(s,A)=\max \sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)} Q(s,A)=maxi∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​ s . t . ∑ i ∈ I x i = k ; x i ∈ 0 , 1 , ∀ i ∈ I s.t.\sum_{i\in I}x_i=k;\qquad x_i\in{0,1},\forall i \in I s.t.i∈I∑​xi​=k;xi​∈0,1,∀i∈I其中, x i x_i xi​表示推荐项 i i i是否属于大数据集 I I I,是则为1,否则为0; v ( s , i ) v(s,i) v(s,i)表示推荐项对用户的吸引力,可以是推荐项的评分或即时pCTR等; x j x_j xj​和 v ( s , j ) v(s,j) v(s,j)同理; v ( s , ⊥ ) v(s,\bot) v(s,⊥)表示空推荐对用户的吸引力。

公式(24-28)是对上述定义的简化,这里不作介绍。

方法二:Top-k
Top-k方法通过计算推荐项的 V = v ( s , i ) Q ‾ ( s , i ) V=v(s,i)\overline{Q}(s,i) V=v(s,i)Q​(s,i),然后每次取 V V V最大推荐项 i i i 的进行推荐,最终组成推荐列表

方法三:Greedy
贪婪方法通过下列公式产生单个推荐项(论文16页),最终组成推荐列表: i = arg max ⁡ i ∉ A ′ v ( s , i ) Q ‾ ( s , i ) + ∑ l < L v ( s , i ( l ) ) Q ‾ ( s , i ( l ) ) v ( s , i ) + v ( s , ⊥ ) + ∑ l < L v ( s , i ( l ) ) i=\argmax_{i\notin A'}\frac{v(s,i)\overline{Q}(s,i)+\sum_{l<L}v(s,i_{(l)})\overline{Q}(s,i_{(l)})}{v(s,i)+v(s,\bot)+\sum_{l<L}v(s,i_{(l)})} i=i∈/​A′argmax​v(s,i)+v(s,⊥)+∑l<L​v(s,i(l)​)v(s,i)Q​(s,i)+∑l<L​v(s,i(l)​)Q​(s,i(l)​)​其中, i ∉ A ′ i\notin A' i∈/​A′表示新推荐的推荐项 i i i 不属于已经推荐出去的推荐项; L ∈ [ 1 , k ] L\in[1,k] L∈[1,k],表示已经推荐出去的推荐项个数。

Greedy方法可以看做是每进行一次推荐,就从推荐集合 I I I中去除被推荐出去的项的Top-k方法。

1.3. 三种优化方法的比较

考虑以下例子,推荐列表大小 k = 2 k=2 k=2,待推荐集合 I I I为(论文16页表格):

ItemScore( v ( s , i ) v(s,i) v(s,i) )Q-value
⊥ \bot ⊥10
a20.8
b 1 b_1 b1​11
b 2 b_2 b2​11

1、用LP方法进行产生推荐项
V ( { a , ⊥ } ) = ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) = 1 × 2 × 0.8 + 0 1 + 1 × 2 + 0 = 1.6 3 = 0.53 V(\{a,\bot\})=\sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)}=\frac{1 \times 2 \times 0.8+0}{1+1\times2+0}=\frac{1.6}{3}=0.53 V({a,⊥})=i∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​=1+1×2+01×2×0.8+0​=31.6​=0.53 V ( { b i , ⊥ } ) = ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) = 1 × 1 × 1 + 0 1 + 1 × 1 + 0 = 1 2 = 0.5 V(\{b_i,\bot\})=\sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)}=\frac{1 \times 1 \times 1+0}{1+1\times1+0}=\frac{1}{2}=0.5 V({bi​,⊥})=i∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​=1+1×1+01×1×1+0​=21​=0.5 V ( { a , a } ) = ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) = 1 × 2 × 0.8 + 1 × 2 × 0.8 1 + 1 × 2 + 1 × 2 = 3.2 5 = 0.64 V(\{a,a\})=\sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)}=\frac{1 \times 2 \times 0.8 + 1 \times 2 \times 0.8}{1+1 \times 2 + 1\times2}=\frac{3.2}{5}=0.64 V({a,a})=i∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​=1+1×2+1×21×2×0.8+1×2×0.8​=53.2​=0.64 V ( { a , b i } ) = ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) = 1 × 2 × 0.8 + 1 × 1 × 1 1 + 1 × 2 + 1 × 1 = 2.6 4 = 0.65 V(\{a,b_i\})=\sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)}=\frac{1 \times 2 \times 0.8 + 1 \times 1 \times 1}{1+1 \times 2 + 1\times1}=\frac{2.6}{4}=0.65 V({a,bi​})=i∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​=1+1×2+1×11×2×0.8+1×1×1​=42.6​=0.65 V ( { b 1 , b 2 } ) = ∑ i ∈ I x i v ( s , i ) Q ‾ ( s , i ) v ( s , ⊥ ) + ∑ j x j v ( s , j ) = 1 × 1 × 1 + 1 × 1 × 1 1 + 1 × 1 + 1 × 1 = 2 3 = 0.67 V(\{b_1,b_2\})=\sum_{i\in I}\frac{x_iv(s,i)\overline{Q}(s,i)}{v(s,\bot)+\sum_{j}x_jv(s,j)}=\frac{1 \times 1 \times 1 + 1 \times 1 \times 1}{1+1 \times 1 + 1\times1}=\frac{2}{3}=0.67 V({b1​,b2​})=i∈I∑​v(s,⊥)+∑j​xj​v(s,j)xi​v(s,i)Q​(s,i)​=1+1×1+1×11×1×1+1×1×1​=32​=0.67

其中, b i b_i bi​表示 b 1 b_1 b1​或 b 2 b_2 b2​。

显然为了可以得到 Q ( s , A ) Q(s,A) Q(s,A),应当推荐 b 1 , b 2 b_1,b_2 b1​,b2​组成推荐列表。

2、用Top-k方法进行产生推荐项
V ( { a , ⊥ } ) = v ( s , i ) Q ‾ ( s , i ) = 2 × 0.8 + 0 = 1.6 V(\{a,\bot\})=v(s,i)\overline{Q}(s,i)=2\times 0.8 + 0=1.6 V({a,⊥})=v(s,i)Q​(s,i)=2×0.8+0=1.6 V ( { b i , ⊥ } ) = v ( s , i ) Q ‾ ( s , i ) = 1 × 1 + 0 = 1 V(\{b_i,\bot\})=v(s,i)\overline{Q}(s,i)=1\times 1 + 0=1 V({bi​,⊥})=v(s,i)Q​(s,i)=1×1+0=1 V ( { a , a } ) = v ( s , i ) Q ‾ ( s , i ) = 2 × 0.8 + 2 × 0.8 = 3.2 V(\{a,a\})=v(s,i)\overline{Q}(s,i)=2\times 0.8 + 2\times 0.8=3.2 V({a,a})=v(s,i)Q​(s,i)=2×0.8+2×0.8=3.2 V ( { a , b i } ) = v ( s , i ) Q ‾ ( s , i ) = 2 × 0.8 + 1 × 1 = 2.6 V(\{a,b_i\})=v(s,i)\overline{Q}(s,i)=2\times 0.8 + 1\times 1=2.6 V({a,bi​})=v(s,i)Q​(s,i)=2×0.8+1×1=2.6 V ( { b 1 , b 2 } ) = v ( s , i ) Q ‾ ( s , i ) = 1 × 1 + 1 × 1 = 2 V(\{b_1,b_2\})=v(s,i)\overline{Q}(s,i)=1\times 1 + 1\times 1=2 V({b1​,b2​})=v(s,i)Q​(s,i)=1×1+1×1=2

显然为了可以得到 Q ( s , A ) Q(s,A) Q(s,A),应当推荐 a , a a,a a,a组成推荐列表。

2、用Greedy方法进行产生推荐项

公式太长,不写了,很显然为了可以得到 Q ( s , A ) Q(s,A) Q(s,A),应当推荐出去 a , b 1 a,b_1 a,b1​或 a , b 2 a,b_2 a,b2​。

2. 论文算法的在线实现(第九章)

2.1. 两个重要组件

论文介绍的在线实验中定义了两个关键组件(论文28页)

  1. 候选推荐项生成器
    从一个最匹配用户上下文(当前状态 s s s)的大推荐数据集中生成一个含有数百个候选推荐项的小子集 I I I;
  2. 排名器
    将用户上下文(当前状态 s s s)和推荐项特征 i i i 输入进深度神经网络 Q ‾ ( s , i ) \overline{Q}(s,i) Q​(s,i)对候选推荐项进行评分和排名(使用LTV)

其中深度神经网络 Q ‾ ( s , i ) \overline{Q}(s,i) Q​(s,i)含有4个隐藏层(2048、1024、512、256),激活函数为ReLu。

2.2. SlateQ算法流程

2.2.1. 伪代码

论文29页Algorithm 1
在这里插入图片描述

2.2.2. 对伪代码的解释

1、参数

2、输入

3、输出
训练好的主神经网络 Q ‾ m a i n \overline{Q}_{main} Q​main​,用于预测推荐项的长期价值

4、初始化
θ l a b e l = 0 \theta_{label}=0 θlabel​=0;
θ m a i n \theta_{main} θmain​和 θ p c t r \theta_{pctr} θpctr​随机初始化;

5、流程
5. 循环 T T T次 i = 1 , . . . , T i=1,...,T i=1,...,T:
6. \qquad 若 i  mod  M = 0 i\ \text{mod}\ M=0 i mod M=0,则更新标签网络 Q ‾ l a b e l \overline{Q}_{label} Q​label​:
7. \qquad\qquad θ l a b e l ← θ m a i n \theta_{label} \leftarrow \theta_{main} θlabel​←θmain​
9. \qquad\qquad 循环 取出每一个训练数据 ( s , A , C , L m y o p i c , s ′ , A ′ ) ∈ D t r a i n i n g (s,A,C,L_{myopic},s',A')\in D_{training} (s,A,C,Lmyopic​,s′,A′)∈Dtraining​
10. \qquad\qquad\qquad 循环 取出推荐列表中的每一个推荐项 a i ∈ A a_i\in A ai​∈A
11. \qquad\qquad\qquad\qquad 根据点击标签 c i c_i ci​更新 θ p c t r \theta_{pctr} θpctr​
12. \qquad\qquad\qquad\qquad 若 a i a_i ai​被用户点击,则:
13. \qquad\qquad\qquad\qquad\qquad 更新pCTR: p C T R ( s ′ , a i ′ , A ′ ) ← p C T R ( s ′ , a i ′ ) ∑ a i ′ ∈ A p C T R ( s ′ , a i ′ ) pCTR(s',a'_i,A')\leftarrow\frac{pCTR(s',a'_i)}{\sum_{a'_i\in A}pCTR(s',a'_i)} pCTR(s′,ai′​,A′)←∑ai′​∈A​pCTR(s′,ai′​)pCTR(s′,ai′​)​
14. \qquad\qquad\qquad\qquad\qquad 更新项目的LTV: l l t v i = l m y o p i c i + ∑ a i ′ ∈ A p C T R ( s ′ , a i ′ , A ′ ) Q ‾ l a b e l ( s ′ , a i ′ ) l^{i}_{ltv}=l^{i}_{myopic}+\sum_{a'_i\in A}pCTR(s',a'_i,A')\overline{Q}_{label}(s',a'_i) lltvi​=lmyopici​+∑ai′​∈A​pCTR(s′,ai′​,A′)Q​label​(s′,ai′​)
15. \qquad\qquad\qquad\qquad\qquad 使用 l l t v i l^{i}_{ltv} lltvi​更新主神经网络参数 θ m a i n \theta_{main} θmain​

标签:0.8,Recommender,qquad,Slate,times,overline,Systems,sum,推荐
来源: https://blog.csdn.net/baishuiniyaonulia/article/details/118802292