字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(1)

论文名称:Deep Reinforcement Learning for Online Advertising in Recommender Systems

论文链接:https://arxiv.org/abs/1909.03602

一、创新点

1、目前已有一些工业界的研究成果将强化学习应用于广告系统中,但是通常只会考虑广告带来的收益最大化,并不会考虑广告给用户造成的影响。比如在信息流广告的业务场景下,本文给出了一种自然结果和插入广告的平衡,也是用户体验和平台收益的trade-off

2、本文基于DQN提出一种改进的模型框架——DEAR,该框架可以自适应的对投放策略做出调整(推荐列表中是否需要插入广告、插入什么广告、在什么位置插入广告)

二、论文背景

现在各大公司最主要的变现方式还是通过投放互联网广告的方式来营收,而广告的形式也是多种多样,搜索广告(百度、360搜索结果页里面插入广告)、信息流广告(头条推荐内容页、抖音等)等,搜索广告和信息流广告都是在自然结果的基础上通过适当的插入一些广告(用户点击广告,平台收取广告主的费用)来获取收入。文章提出的DEAR用在信息流广告场景下,比如我们在刷今日头条和抖音的时候中间就会偶尔刷到一些广告,如下图所示

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(2)

抖音信息流广告

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(3)

今日头条信息流广告

当用户在不亦乐乎的刷抖音的时候,如果突然出现一个质量比较差的广告的话用户的体验就会非常不好的(总体来看抖音的广告更接近原生效果,不仔细看开始根本分辨不出这是一则广告,这个确实做得挺好的),所以在这种推荐产品中插入商业广告主要需要考虑一下三个问题:(1)是否插入广告;(2)插入什么广告;(3)在什么位置插入广告。本文也是在权衡平台收益和用户体验的基础上,利用深度强化学习来自适应的调整广告投放策略,在保证用户体验的基础上,最大化平台的收益

三、模型框架

1、模型结构

传统用于广告推荐的DQN网络结构有两种形式,如下图所示

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(4)

传统DQN模型结构

首先假设每个请求的候选广告数量为A,推荐列表的长度为L,state包括用户历史浏览的自然结果和广告、当前的推荐列表和上下文信息;action主要值上文提到的三种行为(是否插入广告、插入什么广告、在什么位置插入广告);reward由广告带来的收益和用户体验两方面决定;在图中左侧的网络中,我们输入用户的状态,输出各个位置的Q值,该网络结构可以得到最优的广告位置,但是无法得到具体应该插入什么广告,图中右侧的网络正好相反。所以为了解决上述传统方式的弊端,论文融合了上述两种模型提出了如下的DEAR网络

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(5)

DEAR模型结构

对于一个给定的广告,利用融合后的网络可以输出在各个位置的Q值,这样就可以得到该广告应该插入的具体位置信息。上述是在我们默认要插入广告的前提下得到该广告的最佳插入位置,但是还有一个之前提到的问题没有考虑,就是是否应该插入广告。整个网络的输出Q值是L 1个(L个自然结果,一个广告),文章将不插入广告这种情况设为位置0,即如果我们最后得到该广告的最佳初入位置是0的话,那么就认为当前不应该插入广告。

还有一个值得注意的地方,论文中的DEAR网络将Q值的输出分为两个部分,使用了类似双塔的这种网络结构,主要是出于如下两点考虑:(1)一方面是否应该插入广告主要受当前用户的影响,如果用户历史上对平台的推荐结果反馈良好的话,那么就大概率会为这个用户展现广告;如果认为该用户存在流失的风险,那么为了保证用户的留存,大概率不会给该用户展现广告,所以是否插入广告主要由state相关的特征来决定;(2)另一方面,对于一个给定的广告,对于不同用户来说展现的位置也不尽相同(千人千面),同时广告本身的一些属性也会对展现位置有所影响,所以一个广告的插入位置由state和action两方面决定。

除此之外文章还介绍了state和action两部分各自特征的一些处理方法,具体细节可以详细阅读论文

2、Reward Function和损失函数

当给用户在具体位置推荐了某个广告之后,用户会对此做出相应的反馈,这里考虑的是广告收益和用户体验两个维度,所以reward function可以具体定义为如下

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(6)

用户体验部分的reward可以进一步定义为

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(7)

如果用户继续浏览下面的推荐结果的话就认为是一个正向的反馈,如果用户直接离开不在浏览了,那么认为是一个负向的反馈。广告部分的reward可以具体定义,比如该广告带来的收益等。超参数α主要用于调和两者之间的权重,所以最终的优化目标就是得到一个最优的action-value function

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(8)

上式中求max的操作需要遍历所有位置和所有广告(应该是召回阶段后的候选广告集)。在此基础上损失函数定义为

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(9)

其中

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(10)

3、模型离线训练和线上测试

(1)模型的离线训练流程如下所示

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(11)

模型离线训练流程

主要包括两个阶段:第一阶段是将用户采取某种行为后的状态转移过程存储到replay buffer中,供后续二阶段模型训练;第二阶段是从replay buffer中采样一个batch利用上述的损失函数进行更新。

(2)模型的线上测试流程如下所示

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(12)

模型线上测试流程

线上测试流程与模型训练的第一个阶段比较类似,这里不再赘述

四、实验对比

文章对实验部分进行了大量的分析与对比,从如何设计实验、实验衡量标准、对比的参数等角度进行了详细的阐述,具体细节可以参考论文中的表述,这里只列出DEAR模型和其他模型的对比结果

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(13)

模型整体效果对比

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(14)

不同component结构效果对比

五、总结

近几年工业界也在逐渐的将强化学习引入到推荐与广告领域中来,谷歌在去年发表了两篇强化学习应用到YouTube业务中的论文算是开了一个好头,字节跳动这篇论文也是一种很不错的尝试,但是强化学习如何普遍的应用到推荐与搜索场景下还有很多问题需要解决,如何更高的应用到商业场景中是我们每个该领域从业者需要思考的内容。

欢迎喜欢的小伙伴关注专栏:https://zhuanlan.zhihu.com/HIT-LX

作者:知乎-被包养的程序猿丶

地址:https://www.zhihu.com/people/liang-xiao-95-14-1

字节跳动硬核课程实例(字节跳动基于深度强化学习的广告推荐模型)(15)

,