文章目录
美团2024年www的一篇文章,将对手建模opponent modeling引入浮动位广告分配问题中,在强化学习框架中加入对user响应的建模。感觉挺有意思的,但读起来难度有些大,目前是读的第一遍,对整体方法的简单梳理和理解。
问题建模
依旧将浮动广告的问题建模为马尔可夫决策过程,因为论文的核心贡献是将user的回应也参与到Q值的计算中,所以相较于美团之前的工作,会引入一个新的变量 b t b^t bt,代表user response。具体而言:
- state 状态空间:考虑ad list和oi list,user特征、context特征,user page级别的行为序列,用 b b b表示。
- action 行为空间:01序列,表示当前位置是否放置广告。这里放置广告不会改变原本提供的广告list的顺序。
- reward,会考虑到用户响应行为,毕竟响应行为也会关系到计费情况。
r t e x r^{ex}_t rtex 通过 b t b_t bt 获得,当行为是下单是为2,点击未下单1,其他行为则是0 - 状态转移概率, s t + 1 s^{t+1} st+1不仅仅由当前状态 s t s^{t} st, a t a^{t} at获得,也和 b t b^t bt有关: P ( s t + 1 ∣ s t , a t , b t ) P(s^{t+1}|s^{t},a^t,b^t) P(st+1∣st,at,bt)
reward和状态转移概率具体而言的数学形式表达为:
其中
π
μ
(
b
t
∣
s
t
,
a
t
)
\pi^{\mu}(b_t|s_t,a_t)
πμ(bt∣st,at) 代表对用户响应的建模。
所提方法
核心想法
核心思路是在强化学习中利用对手建模(opponent modeling)
对手建模是一种在无法观察到其他智能体内部状态的情况下,自身智能体以观测和先验知识为输入,通过交互、观测、推理等过程捕获无法直接感知的隐藏信息,将其他一个或多个智能体的类别、目标、动作等预测信息和意图、计划、策略等认知信息作为输出的建模方法,其核心是帮助建模者利用对手策略或根据对手隐藏的信息制定更好的响应策略。
简单理解一下就是当前agent对其他的agent的状态、行为等进行估计来参与本agent的决策行为?
And the goal of RL is to learn an optimal policy for the agent, given interactions with the policy of the opponent in the environment.
感觉就是 user 不再单纯的是state的一部分了,也看作是一个agent有自己的策略
π
μ
(
b
t
∣
s
t
,
a
t
)
\pi^{\mu}(b_t|s_t,a_t)
πμ(bt∣st,at) ,这样user的表示就不会是固定的了,而是动态的,符合user的偏好是会改变并受到一些短期factor的影响的这种特点。
基于对user响应策略的建模,相应的分配模型的Q-value表达也会更新:
先前不考虑
b
t
b_t
bt时表达为:
引入对手建模后表达为:
所提出模型方法
按照上述的思路,需要获得
π
μ
(
b
t
∣
s
t
,
a
t
)
\pi^{\mu}(b_t|s_t,a_t)
πμ(bt∣st,at) 表示user的回应策略。文中利用user 响应模型来建模。
主要流程:
- 表示模块先编码获得context 特征的嵌入,user的特征的嵌入。还有page级别行为序列的嵌入,以及考虑了对应action而组成的target页面的页面级嵌入表示。
【注意】从图中来看和之前的DPIN 模型相比,页面级行为虽然还是那四种,但是序列是混合行为序列而没有像之前的工作单独组成各自的序列了。
- 将获得的特征表示输入到RSSM模型中来建模 π μ ( b t ∣ s t , a t ) \pi^{\mu}(b_t|s_t,a_t) πμ(bt∣st,at),同时也要重建获得的特征表示: x ^ t , x t = ( e c ∣ ∣ e u ∣ ∣ e t p a g e ) \hat{x}_t,x_t=(e^c||e^u||e_t^{page}) x^t,xt=(ec∣∣eu∣∣etpage),这个重建是根据序列步来的。这里应该就能获得模型所预测的t时刻user响应的表示 b t b_t bt 。
- 根据获得的特征(concatenation layer),结合user的响应 b t b_t bt,通过Qnet可以分别对4种user响应计算对应的Q值 Q o , Q c , Q p , Q l Q_o,Q_c,Q_p,Q_l Qo,Qc,Qp,Ql。
- user行为的Q值结合 π μ ( b t ∣ s t , a t ) \pi^{\mu}(b_t|s_t,a_t) πμ(bt∣st,at),获得最终的Q值。
【简单理解】:user看作了agent,文中表示出的其对应的行为空间应该就是响应方式,包括4种下单、点击、下滑和退出,和所提供的page-level的行为序列相对应。
【问题】:这里对Q值的建模感觉同时要考虑user行为空间,以及排列的分配行为空间,最粗暴的理解应该是有 A 1 × A 2 A_1 \times A_2 A1×A2个组合方式,所以对对应的Q值更新有点晕,感觉还得多读几遍+手动计算一下。
【问题】:这里 e t p a g e e_t^{page} etpage 有没有包含target page的信息呢?应该是要有的,target page融入了action,而公式中又表示user的响应策略和 a t a_t at是有关的。
RSSM for User Response Modeling 建模用户响应的模型RSSM
整体结构感觉是gru + vae,通过vae把随机性引入建模中。
-
变量含义:
- h t h_t ht:确定性隐状态
- Z t Z_t Zt:随机隐状态
- Z ^ t \hat Z_t Z^t:?
- x t x_t xt: x t = ( e c ∣ ∣ e u ∣ ∣ e t p a g e ) x_t=(e^c||e^u||e_t^{page}) xt=(ec∣∣eu∣∣etpage),某一时刻的state特征吧
-
Deterministic state model:模块结构是GRU
- 输入:上一时刻的确定性状态 h t − 1 h_{t-1} ht−1,和上一时刻的随机状态 Z t − 1 Z_{t-1} Zt−1
- 输出:当前时刻的确定性状态 h t h_t ht
- 目的:保持对序列中关键信息的长期记忆,就是对user长期确定的特征的建模。
-
Encoder:感觉就是vae,vae的encoder部分,通过采样的方式引入随机性
- 输入:当前时刻的确定性状态 h t h_t ht,当前时刻的state表示 x t x_t xt
- 中间:会通过mlp计算一个均值和标准差( Z t μ , Z t σ Z_t^\mu,Z_t^\sigma Ztμ,Ztσ)
- 输出:由
Z
t
μ
,
Z
t
σ
Z_t^\mu,Z_t^\sigma
Ztμ,Ztσ 高斯分布采样而获得的随机变量,表示当前时刻随机隐状态的
Z
t
Z_t
Zt
长期确定性表示和短期的随机表示相互影响,互相参与各自的建模中。
-
User response predictor:对user响应的预测,建模user响应策略
- 输入:确定性状态 h t h_t ht, 随机性状态 Z t Z_t Zt。
- 输出:对user行为的预测,也就是响应策略
π
μ
(
b
t
)
\pi^{\mu}(b_t)
πμ(bt)
- 因为数据中对于一个确定的页面,用户的行为是被记录的。所以这个对用户行为的预测任务,是可以通过监督学习的方式来训练的,对应的loss是交叉熵。
-
Reconstruction predictor:重建任务的目的一般都是为了让表示能够保留好关键的信息。这里也是想根据当前的user状态,重建出当前state特征。算是vae的解码部分了
- 输入:确定性状态 h t h_t ht, 随机性状态 Z t Z_t Zt
- 输出:对
x
t
x_t
xt的重建状态
x
^
t
\hat x_t
x^t
- loss: MSE loss
-
Stochastic state model:???
- 计算流程和 Z t Z_t Zt类似,都是mlp出均值和标准差,然后高斯采样获得随机变量 Z ^ t \hat Z_t Z^t
- 不同的在于
Z
^
t
\hat Z_t
Z^t 没有显式依赖于
x
t
x_t
xt,如计算公式所示
- 作用则是引入一个kl散度的loss,让两个分布相接近。好像是一个正则化项。具体作用不太清楚,感觉能让
h
t
h_t
ht一定程度上融入
x
t
x_t
xt的信息。
【小总结】Deterministic state model,encoder 和 User response predictor。这是三个部分感觉是用来完成对用户行为预测的主线任务的,也是利用用户的实际行为数据(label)进行监督学习的。Stochastic state model. 和 Reconstruction predictor. 虽然单独罗列了模块,但从表达上来看感觉像是和主线任务的模块都共享参数的,即 θ \theta θ,也可能是有单独的模型,这得看具体的实现。这两个模块对应的loss感觉更像辅助任务。
【其他】感觉这个用户响应模块,和reward,q值目前没啥关系。好像可以单独拎出来先训练的样子。
训练过程
offline的强化学习方法,倒是没有先对用户响应模块进行个预训练,而是直接user agent和分配agent一起训练。多任务训练:
Q-learning 的loss:
实现中:
α
1
\alpha_1
α1=0.05(KL散度loss),
α
2
\alpha_2
α2=0.05(预测任务loss) ,
α
3
\alpha_3
α3=0.01(重建任务loss)。从这个设置来看预测这一个监督学习的任务倒没想象中的重要。不过也可能只是通过权重调整一下loss们的量级。
**扩展部分
R-RSSM,RetNet-based RSSM
为了进行并行计算,提高效率,用retnet代替gru来设计的RSSM模块。