论文阅读笔记 强化学习的L2R

一篇使用强化学习来优化Learning to Rank的文章。

题目 Unified Off-Policy Learning to Rank: a Reinforcement Learning Perspective
论文链接 https://arxiv.org/pdf/2306.07528.pdf
作者单位 中科大,谷歌等
文章类型 短文

简介

提出了CUOLR(Click Model-Agnostic Unified Off-policy Learning to Rank),可以使用不同的点击模型、RL算法。

Off-policy Learning to Rank :指的是从记录的点击数据来优化排序器。一般需要依赖具体的点击模型来去偏。

Fomulation

将L2R与点击模型建模为马尔可夫决策过程MDP。

Click Model

主流的点击模型具有两步走的风格,将用户对某些文档的点击分解为:

  1. 决定是否看到(examine,其实就是看)该文档,依赖于rank list R 与位置 k;
  2. 看到后是否点击,依赖于文档本身。

所以被点击的概率:

P(Ck=1R,k)=X(R,k)α(R[k])P(C_k=1|R,k)=\mathcal{X}(R,k)\alpha(R[k])

前一项就是第一步的概率,后一项就是文档的吸引力。

经典的点击模型举例:

借用搜索引擎技术基础课的PPT:

所以有:

PBM(Position-Based Model): X(R,k)=X(k)\mathcal{X}(R,k)=\mathcal{X}(k)

CASCADE: X(R,k)=i=1k1(1α(R[i]))\mathcal{X}(R,k)=\prod_{i=1}^{k-1}(1-\alpha(R[i]))

DCM: X(R,k)=i=1k1(1α(R[i])(1λi))\mathcal{X}(R,k)=\prod_{i=1}^{k-1}(1-\alpha(R[i])·(1-\lambda_i))

其他模型可类似转换,不赘述。

然后在实验设置里,吸引力定义为:

α(d)=ϵ+(1ϵ)2r(d)12rmax1\alpha(d)=\epsilon+(1-\epsilon)\frac{2^{r(d)}-1}{2^{r_{max}}-1}r(d)[0,4]r(d)∈[0,4],这是数据集里的相关性标签。加入噪声是为了防止不相关的文档没有概率被点击。

强化学习概念对应

  1. State: sk=[(d1,d2,...,dk1),k]s_k=[(d_1,d_2,...,d_{k-1}),k]
  2. Action: 动作空间和query相关,表示将一个剩余文档加入到Ranklist最后。
  3. Transition T(ss,a)\mathcal{T}(s'|s,a): T(sk+1sk,ak)=1\mathcal{T}(s_{k+1}|s_k,a_k)=1当且仅当sk+1=[(d1,d2,...,dk1,ak),k+1]s_{k+1}=[(d1, d2, ...,d_{k-1},a_k),k+1]
  4. Reward: r(sk,ak)=Ckr(s_k,a_k)=C_k,因为有E[r(sk,ak)]=X(sk)α(ak)E[r(s_k,a_k)]=\mathcal{X(s_k)}\alpha(a_k)
  5. The optimal policy: π=argmaxπE(k=1Kγk1r(sk,π(sk)))\pi^*=argmax_\pi E(\sum_{k=1}^{K}\gamma^{k-1}r(s_k,\pi(·|s_k)))

可以证明上述最大化之后能得到吸引力递减的最优Ranklist。

具体过程

Episodes的构建

在数据集中,取出一个Ranklist,第k个动作就是R[k],第k个reward就是是否被点击,第k个状态就是ϕ(Ri[:k],k)\phi(R_i[:k],k),其中ϕ\phi是一个可学习的embedding函数。

State表示函数的学习

和Transformer有点像:

  1. 位置编码:

    PE(k)2i=sin(k100002i/dmodel)PE(k)_{2i}=sin(\frac{k}{10000^{2i/d_{model}}})PE(k)2i+1=cos(k100002i/dmodel)PE(k)_{2i+1}=cos(\frac{k}{10000^{2i/d_{model}}})

  2. 多头注意力:

(就有点像encoder的输入,改成RNN或者多连几层或者State分开训练不知道效果如何)

优化

这里使用的是CQL算法,详细讲解看Conservative Q Learning(保守强化学习)傻瓜级讲解和落地教程 - 知乎 (zhihu.com)

注意算TD target时使用了Target network。

同时更新的参数有State表示函数、Actor和Critic。

伪代码如下:

注意到State表示函数在一轮里是更新两次的。

SAC详见Soft Actor-Critic 简明理解 - 知乎 (zhihu.com),大概就是多了一项熵的惩罚项。


论文阅读笔记 强化学习的L2R
https://bebr2.com/2023/06/28/论文阅读笔记 强化学习的L2R/
作者
BeBr2
发布于
2023年6月28日
许可协议