今天我们来讲解三篇利用用户历史行为数据建模的广告推荐模型,相比于传统的广告推荐模型,他针对用户历史行为进行了更好的建模,部分模型甚至仔细考虑了用户行为之间的时间间隔信息。
第一篇主要参考了IJCAI 2018年的paper《A Brand-level Ranking System with the Customized Attention-GRU Model》。首先来说这个广告预测推荐的场景比较少见,即从品牌的角度来对用户的行为进行预测,输入是一个长度为n的三元组序列(user, brand, timestamp),预测未来某一个时间点用户是否会购买/点击某一个brand下面的商品。整个模型以GRU为基础模型。GRU的公式如下所示:
所谓的attention方式,我感觉是作者强行把这篇paper往encoder-decoder架构上进行靠拢,即认为输入n的三元组序列就是sorce序列
,经过输入encoder变换会生成中间结果序列
,而输出就是1个单位长度的序列
,即对应某一个brand是否会购买,其改进的attention机制公式如下:
其中
就是要检测的brand的表征形式。最后模型的损失函数为log损失,即一个简单的二分类问题,即用户是否会购买目标brand。
其实到这里,整个模型已经介绍完了,但是在GRU进行encoder处理的过程中,作者对传统的GRU进行了三处改进:
1 Combining the brand features and brand embedding to better represent the brand
也就是说把特征工程得到的向量和模型自适应学习的embedding向量相加作为brand的表征形式,即
,
是one-hot的形式,
是brand的人工特征向量,
是brand的模型参数形式。而这个
的生成挺有意思的,我这里着重讲一下,流程图如下所示:
1 首先从对某个特定的类别角度对所有的item进行排序;
2 按照价格从高到低的顺序把所有的商品划分为7个level;
3 对于某一个特定的brand,其会在不同的level对应不同的商品,那么针对该brand在不同的level的item集合,会对每一个item集合进行8个维度的指标统计,这些指标如下所示:
这样在经过处理之后,每一个item会对应人工特征工程的56维数据。
2 Considering different types of actions
因为用户针对某一个brand的行为可以分为:购买或者点击两类,针对这两类行为在使用GRU进行用户行为建模的时候,会针对不同的行为进行区别对待。这这里的处理方式十分简单,就是把步骤1生成的
乘上一个参数矩阵,即进行空间的映射变化,方式如下:
if b is clicked
if b is purchased
其中
和
的维度都是
,这两个矩阵属于模型的参数,会随着模型一起训练。
3 Integrating the time-gate to model time intervals between actions
这一点是最有意思的,因为用户点击或者购买brand的序列会有一个timestamp信息,这部分时间间隔信息也可以进行专门的编码,即通过time-gate的方式进行引入:
就是两个action之间的时间间隔,这里的单位是秒,最后对GRU的改变如下:
最后在对模型进行训练的时候,其损失函数如下:
可以发现和一般的交叉熵不一样,在负样本那里乘了一个
,这个
的取值范围是
,是一个压缩系数。之所以这样做,是因为有一些正样本没有标注出来,被混在了负样本之间。
整个模型我认为还是有可以改进的地方,比方说他在建模的时候并没有考虑用户因素,即使对所有的brand进行统一建模。如果能把用户信息表征到模型之中,模型的性能也许还能提高,毕竟不同level的用户消费的brand的level也是不一样的。
第二篇参考了2018年的IJCAI的paper《Sequential Recommender System based on Hierarchical Attention Network》,他的目标是推荐场景,即根据用户的历史购买的item信息来预测用户未来会购买的item列表。整个模型结构图如下所示:
其实整个模型还是比较简单的,就是一个双层attention机制的神经网络,其实他的任务描述的还是挺有意思的,给一个用户的1到t时刻的transactions序列信息,表征为
,其中
代表了t时刻的用户transactions的item集合,我们需要预测该用户
时刻的交易信息。作者之所以使用two level的attention机制,是因为他综合考虑了用户的long-term和short-term信息,其中
可以看成是用户long-term的行为信息,
可以看成用户short-term的行为信息。首先作者先使用attention机制对long-term行为信息进行处理,公式如下:
当得到了目标用户long-term的表征
之后,把其和short-term的商品再经过一个类似的attention结构,最后得到整体的用户表征
,接下来再把这个表征向量
和带预测的item
求内积,即
,就能得到该用户对于该商品的预测信息。在进行损失函数构造的时候,该paper利用了parewise的思想,并不是去预测特定商品的绝对分数,而是对于不同商品之间的排序信息进行预测,其公式如下所示:
第三篇参考了2017年IJCAI的paper《What to Do Next: Modeling User Behaviors by Time-LSTM》,其实它比前两篇时间都早,是最早提出使用RNN系列模型来解决RS系统(推荐系统)的行为序列时间间隔不一致的问题,该问题如下所示:
因此为了解决time interval的问题,作者在传统的LSTM的基础上增加了time gate,即既要对用户的long-term信息进行编码,又要对用户的short-term信息进行编码,综合考虑用户的长期偏好和最近的行为偏好。并提出了三种方案,首先我们来简单介绍一下基础的LSTM的公式:
接下来,我们详细介绍一下三种引入了time gate的LSTM结构,其整体结构图如下所示:
(我看这些图片比较头晕,所以就直接上公式了)
Time-LSTM 1
在其中的作用主要体现在两点:
1 一方面
可以对于输入信息进行过滤;
2 另一方面
首先被存储在了
之中,然后该信息会被传递到
中,接下来就会被一次传递到
之中,因此
会帮助对用户的长期兴趣进行建模。
Time-LSTM 2
在该改进的模型之中,增加了两个gate,分别是
和
,它们的计算公式如下:
之所以有
的限制,是因为为了保证当最近一次的
比较小的时候
会输出比较大的值,而当
比较大的时候
会输出比较小的值,也是为了把最近的
信息进行编码。
Time-LSTM 3
这个其实和LSTM 2是非常相似的,只不过就是把忘记门拿掉了,公式如下: