前言
最近在学习强化学习在推荐系统方面的应用,看了一些文章后觉得,这篇文章很适合强化学习背景的人入门,文章链接: link.
问题
文章主要解决了两方面的问题:
- 大多数的算法使用的动态的策略,但是用户在使用的过程中兴趣是会不断发生变化的,如果只考虑用户短期内的浏览轨迹,就可以将其建立成一个马尔可夫过程,在动态交互中改进推荐系统的策略;
- 使用强化学习策略可以更好地兼顾长期收益;
Simulator
Simulator就相当于强化学习训练时用的environment,各参数定义如下:
1.状态空间S:用户过去浏览的N个商品;
2.动作空间A:推荐系统每次给出的K个推荐商品;
3.奖励函数R:对用户的跳过,点击和购买分别给与0,1和5的奖励;
从历史轨迹中可以得到一部分的状态动作对到奖励的映射,但是为了得到所有状态动作对的映射就必须建立Simulator实现这个功能。文章基于协同过滤的思想,假设相似的状态动作对所获得的奖励也是相同的。计算新的状态动作对与buffer中所有的状态动作对之间的距离,加权求得新状态动作对的奖励值。
RL
文章使用的框架是AC,Actor部分并非直接输出动作,而是输出一组权重值,这个权重是候池中商品embedding的权重,用来计算每个商品的价值。将价值最大的挑选出来作为动作。
Critic部分没有什么改变,奖励由Simulator产生。
测试
测试环境使用的依旧是之前建立的Simulator,唯一的不同是,状态空间做了一点改变,状态空间并非是用户的整个浏览轨迹,只包括点击和购买的商品。
实验结果
实验最终使用的是DDPG,没有和新的推荐方法比较,只是和一些比较老的baseline,还有DQN这种强化学习方法比较,没有显示出强化学习算法有啥特别的优势。