ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Slate-based Recommender Systems 论文解读

2021-07-16 18:02:15  阅读:219  来源: 互联网

标签:0.8 Recommender qquad Slate times overline Systems sum 推荐


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、参数

  • T T T:算法迭代的次数
  • M M M:更新标签神经网络 Q ‾ l a b e l \overline{Q}_{label} Q​label​的间隔频率参数
  • γ \gamma γ:计算LTV时的时间折扣率。如果两个访问分别发生在时间 t 1 t_1 t1​和 t 2 t_2 t2​,则在 t 2 t_2 t2​处的奖励的相对折扣为 γ t 2 − t 1 / c \gamma^{t_2-t_1/c} γt2​−t1​/c,其中 c c c是控制折扣时间尺度的参数。
  • θ m a i n \theta_{main} θmain​:主神经网络 Q ‾ m a i n \overline{Q}_{main} Q​main​的参数
  • Q ‾ m a i n \overline{Q}_{main} Q​main​:主神经网络,用于预测项目的长期价值(LTV)
  • θ l a b e l \theta_{label} θlabel​:标签神经网络 Q ‾ l a b e l \overline{Q}_{label} Q​label​的参数
  • θ p c t r \theta_{pctr} θpctr​:用于预测pCTR的神经网络参数(pCTR:每个推荐项的点击率,点击率:点击次数占展示次数的百分比)

2、输入

  • D t r a i n i n g = ( s , A , C , L m y o p i c , s ′ , A ′ ) D_{training}=(s,A,C,L_{myopic},s',A') Dtraining​=(s,A,C,Lmyopic​,s′,A′):训练数据集(适用于Sarsa)
  • s s s:当前状态。即用户的各类信息(例如,用户过去的历史记录、行为和响应以及静态用户属性)
  • A = ( a 1 , . . . , a k ) A=(a_1,...,a_k) A=(a1​,...,ak​):在状态 s s s时的推荐列表, a i a_i ai​表示单个的推荐项, k k k的大小可以不固定
  • C = ( c 1 , . . . , c k ) C=(c_1,...,c_k) C=(c1​,...,ck​): c i c_i ci​表示用户是否点击了推荐项 a i a_i ai​
  • L m y o p i c = ( L m y o p i c 1 , . . . , L m y o p i c k ) L_{myopic}=(L^1_{myopic},...,L^k_{myopic}) Lmyopic​=(Lmyopic1​,...,Lmyopick​): L m y o p i c i L^i_{myopic} Lmyopici​表示推荐项 a i a_i ai​的短视价值(立即回报)
  • s ′ s' s′:下一个要转移过去的状态
  • A ′ = ( a 1 ′ , . . . , a k ′ ) A'=(a'_1,...,a'_k) A′=(a1′​,...,ak′​):状态 s ′ s' s′时产生的推荐列表

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有