讲个故事2.0

一、对离线数据集的描述(论文中共使用两个数据集,此处以KuaiRec为例)

KuaiRec是一个视频数据集,它包含一个完全观察到的用户项交互矩阵,其中1,411个用户观看了所有3,327个视频并留下了反馈。

1.1交互数据描述:

交互数据存放于big_matrix_processed.csv

其第一行写为[0 3649 13838 10867 08:23.4 20200705 1593878903.438 1.273396522 -0.112516623 0.401059866]

每个元素代表的含义如下:

[user_id item_id play_duration video_duration time date timestamp watch_ratio duration_normed watch_ratio_normed]

表示0号用户在2020年7月5日的1593878903.43800这个时间戳下(2020-07-05 00:08:23.438000)观看了3649号视频。该视频的总时长为10806,该用户实际观看该视频的时长为13838(单位未确认),观看视频时长与视频总时长的比率为1.273396522 。该视频的标准化时长为-0.112516623,标准化观看率为0.401059866。

论文中使用标准化的观看率(即观看时间与视频长度的比例)作为在线奖励

1.2用户数据描述

用户数据存放于user_features.csv
其第一行写为[0 high_active 0 0 0 5 (0,10] 0 0 0 0 107 61-90 0 1 17 638 2 0 1 6 184 6 3 0 0 0 0 0 0 0]
每个元素代表的含义如下:
[user_id user_active_degree is_lowactive_period is_live_streamer is_video_author follow_user_num follow_user_num_range fans_user_num fans_user_num_range friend_user_num friend_user_num_range register_days register_days_range onehot_feat0~nehot_feat017]
表示0号用户的活跃程度为高度活跃,不在低活跃时期,并且该用户不是直播主播也不是视频作者。该用户关注用户数量为5;关注用户数量范围为(0,10];粉丝数量为0;粉丝数量范围为0;好友用户数量为0;好友用户范围为0;注册天数为0;注册天数范围为5.一系列特征列onehot_feat 数据分别为……(此处onehot_feat 列所代表的具体含义不明)

经查证,onehot_feat为能被DeepFM处理的离散型数据,用以描述用户部分特征(如用户年龄、性别、地理位置等)。

1.3视频数据描述

物品数据存放于①item_catagories.csv以及②video_duration_normed.csv

①item_catagories.csv
其第一行写为[video_id feat]
表示0号视频属于类别8

②video_duration_normed.csv
其第一行写为[-0.425507861]
每个元素代表的含义如下:
[duration_normed]
表示0号视频的标准化时长为-0.425507861

二、对整个工作的简单描述

2.1预备工作以及知识

2.1.1DeepFM

将离线数据集传送给用户模型DeepFM,训练DeepFM。将离线数据集中的信息作为用户的真实兴趣。并且DeepFM可以为推荐模型的每个推荐提供奖励。(这句话是作者说的,但其实并不严谨)
Alt
r ^ \hat{r} r^是MOPO模型生成的估计奖励(文中4.2第一段)

此处查阅资料得知,DeepFM是通过学习用户行为对应的特征背后的潜在联系,以准确地预估CTR即"点击率"(Click-Through Rate)。DeepFM高效地对特征之间的交叉信息进行建模,即找到特征之间的联系。
更为详细的介绍可参考下面的文章:
https://zhuanlan.zhihu.com/p/343343016?utm_campaign=shareopn&utm_medium=social&utm_psn=1803588511942721537&utm_source=wechat_session

2.1.2当前状态s(没整明白)

说法一:
根据离线数据集中的字段信息可以看出,当前状态应该包括用户特征(用户活跃度、用户是否为主播、用户是否为视频作者、用户关注数量、用户粉丝数量、用户好友数量、用户注册天数以及18个未明确指处的特征信息,可能为用户性别、年龄、位置、设备信息等信息) 和视频信息(视频所属类别以及视频的标准化时长),若该用户为老用户则应还包括交互的上下文即用户与视频的交互记录(用户id、视频id、watch_ratio_normed等)。
处理好后即为代码中对数据集进行处理后得到的各个变量信息。详见笔记3.0
说法二:
文中5.1第一段表示“通常将状态𝑠∈S定义为从用户之前的交互项和相应的反馈中提取的向量。”
说法三:
公式(11)又将其定义为动作嵌入ea_n和对应的奖励 r ~ {\widetilde r} r 构成的向量
在这里插入图片描述

2.2使用DORL对用户u0进行视频推荐

2.2.1对u0 的描述

假设用户u0的用户特征如下(收集其用户的基本信息并通过相应的处理得到的):
u0 [2 1 1 1 1 1 5 1 2 1 1 1 2 2 1 1 2 1 1 2 1 2 1 1 1 ]
表示 u0的活跃程度为高度活跃,并且 u0不是直播主播也不是视频作者。u0关注用户数量范围为1(此处经过编码后可理解为xxx程度),粉丝用户数量范围为1,好友用户数量范围为1,注册天数范围为5.其余特征列onehot_feat1为1、onehot_feat2为2……

假设u0曾与3649号 100号 1号 2024号等视频有交互记录,
以3649号视频为例,u0 与其的历史交互记录信息如下
[u0 3649 13838 10867 08:23.4 20200705 1593878903.438 1.273396522 -0.112516623 0.401059866]
表示u0在2020年7月5日的1593878903.43800这个时间戳下(2020-07-05 00:08:23.438000)观看了3649号视频。该视频的总时长为10806,u0实际观看该视频的时长为13838(单位未确认),观看视频时长与视频总时长的比率为1.273396522 。该视频的标准化时长为-0.112516623,标准化观看率为0.401059866。
3649号视频的视频信息如下:
3649号视频所属类别为[9],其标准化时长为-0.042237960.

2.2.2开始

①根据状态进行视频推荐,用户对推荐的视频进行反馈
首先,u0打开视频软件,DORL获取到当前状态s,根据s进行此次的首个视频推荐。
假设推荐了8号视频 该视频总长100s,并且属于类别3和类别11,u0看了70s,得到u0的watch_ratio_normed为0.7。
②计算奖励
即用户的真实奖励r=0.7。
若在训练中使用的是用户模型模拟用户。
用户模型DeepFM表示为三层高斯概率模型(GPM),假设每层预估的奖励 r ^ \hat{r} r^分别为0.5 0.7 0.6 取平均值=1/3(0.5+0.7+0.6)=0.6,即 r ^ \hat{r} r^=0.6。每层预估奖励的方差分别为0.01046 0.03 0.02003 取最大值0.03.即PU=0.3
③计算文中作者新增的惩罚项PE
当前时刻为推荐了视频8,搜索离线数据集中所有数据,找出给推荐序列中有{8}的记录。
假设总共找到100条记录,其中推荐视频8后推荐的下一视频为xi的概率为pi,计算熵
PE=-x0*log(p0)-x1*log(p1)-……-x99log(p99)=2.4
④计算最终奖励
真实情况下:
r ~ {\widetilde r} r =r+𝜆2PE
=0.7+0.05
2.4
=0.82
采用用户模型模拟用户的情况下:
r ~ {\widetilde r} r = r ^ \hat{r} r^-𝜆1PU+𝜆2𝑃E
=0.6-0.01
0.03+0.05
2.4
=0.7197
⑤传递奖励和状态,πθ给出下一个推荐动作。
r ~ {\widetilde r} r 传给πθ,πθ得到 r ~ {\widetilde r} r 以及当前状态s=1/1 [8 3 11 0 0 0.82],表示考虑最近的1次状态-奖励对,表示推荐的视频8 属于类别3和类别11,当前用户对该推荐动作的反馈得到奖励为0.82。
πθ根据 r ~ {\widetilde r} r 以及s,给出下一个视频推荐动作a
假设下一推荐是推荐了视频20,将该推荐动作传给用户(或用户模型)以及状态跟踪器。

①①得到视频推荐,用户对推荐的视频进行反馈
u0得到20号视频,观看。假设20号视频的视频总长20s,并且属于类别7。u0看了5s,得到用户的watch_ratio_normed为0.25。
②②计算奖励
用户的真实奖励r=0.25。
若在训练中使用的是用户模型模拟用户
假设每层预估的奖励 r ^ \hat{r} r^分别为0.2 0.3 0.3 取平均值=1/3(0.2+0.3+0.3)=0.27, r ^ \hat{r} r^=0.27.每层预估奖励的方差分别为0.00154 0.11023 0.02取最大值0.02,即PU=0.02.
③③计算文中作者新增的惩罚项PE
当前时刻为推荐了视频20,搜索离线数据集中所有数据,找出给推荐序列中有{8 20}的记录。
假设总共找到120条记录,其中推荐序列后推荐的下一视频为xi的概率为pi,计算熵
PE=-x0*log(p0)-x1*log(p1)-……-x119log(p119)==3.3
④④计算最终奖励
真实情况下:
r ~ {\widetilde r} r =r+𝜆2PE
=0.25+0.05
3.3
=0.415
用户模型模拟用户的情况下:
r ~ {\widetilde r} r = r ^ \hat{r} r^-𝜆1PU+𝜆2𝑃E
=0.27-0.01
0.02+0.05
3.3
=0.4348
πθ根据 r ~ {\widetilde r} r 以及s,给出下一个视频推荐动作a
假设下一推荐是推荐了视频113,将该推荐动作传给用户(或用户模型)以及状态跟踪器。

循环往复不断进行推荐,直至用户退出。在测评过程的前N轮交互过程中,如果推荐的视频中相同类别的视频数>M=10个,则退出。

三、遇到的一些问题

3.1状态s到底如何表示?

在2.1.2中我找到了三种描述方式

3.2 用户模型到底是DeepFM还是MOPO?

文中指出“在不失一般性的前提下,我们使用DeepFM[19]作为用户模型的主干,并实现了actor-critic方法[28]为RL政策”,但同时在知乎的文章中他又指出“本工作中,我们选取了直观的MOPO算法作为我们Offline RL模型的基模型”。
并且,DeepFM是无法直接给出奖励的,他给出的是CTR(点击率预测)但是预训练时确实是训练的DeepFM以学习用户行为对应的特征背后的潜在联系的。

3.3PU与PE的计算方式以什么为准?

论文中PU应为MOPO对应论文中很复杂的那个计算,但是在总图里面,PU是计算的三层高斯模型中方差的最大值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值