参考文献
Deep Session Interest Network for Click-Through Rate Prediction
前情提要
DIN
DIEN
DSIN,全名Deep Session Interest Network,中文名深度会话兴趣网络,跟DIN,DIEN相比,其主要突出了S,Session,这Session具体指的是什么呢,请看下面分解。
却说阿里见众人已双眼迷离,只是无奈地叹了一口气,也不管有没有人继续听,自顾自地开始讲起来。先是照旧扔出一张图
比起DIEN中对User Behaviors 部分分了三层去处理,在DSIN中有四层!第一层是Session Division Layer,第二层是Session Interest Extractor Layer,第三层是Session Interest Interacting Layer,第四层是Session Interest Activating Layer。先来说Session是什么,我们注意到用户的兴趣很广泛,但在一个较短的时间内还是比较专注的,兴趣会聚焦于一点,我们就把这较短的时间段称为一个Session,比起DIN和DIEN把行为序列全打包到一起,在DSIN中把行为序列划成一个个Session再分别处理会更符合我们的直觉。第一层的Session Division Layer就是把行为序列划成一个个Session,通常把间隔30分钟以上的不同行为item划归成不同的Session,第二层的Session Interest Extractor Layer就是提取出每个Session的兴趣,毕竟我们刚才说了在每个Session中用户的兴趣通常会聚焦于一点。每个Session中兴趣聚焦于一点,不同的Session之间兴趣聚焦于不同的点上,但如同DIEN所说,兴趣的转变总有个较为自然的转变过程,第三层的Session Interest Interacting Layer就是捕捉Session间兴趣演化的过程。一如DIN,DIEN中所说,用户的兴趣总是广泛的,我们要推荐给用户的item总是只能对应用户的一部分兴趣,所以需要使用attention mechanism 提取出用户兴趣中与要推荐的item相关联的部分,第四层即是Session Interest Activating Layer。对用户行为特征处理完后再与其它平平无奇的特征拼接完后就可以送入全链接网络进行训练了。那么总的网络结构就是这样,下面我们一层一层来细说。
第一层没什么好说的,来看第二层,提取一个Session的兴趣。用户会在一个Session中兴趣高度聚焦于一点,毋庸置疑,同一个Session的行为序列item彼此之间肯定是高度相关的,这里我们采用Multi-head Self-attention来提取一个Session的兴趣。为了增进理解,有必要详细说明一下attention mechanism。
如图所示,attention mechanism中的activation Unit中有三个输入部分,Query,Key,Value,这三个代表什么呢,再看
这回会清楚些,attention mechanism本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射。query会和每个key进行相似度计算得到权重,权重归一化后和相应的键值value进行加权求和得到最后的attention value。而你猜在self-attention中,query,key,value会是什么?全都是Session中每个行为序列item对应的embedding!同一个东西!(embedding已经是惯常操作了,不必再解释), 这就是self-attention名字的由来,这样每个item对应的embedding经过self-attention处理后会生成又一个新的embedding,这个embedding已经包含了Session中所有行为序列item的信息,而Multi-head Self-attention你可以简单理解为把embedding断开几截分别做self-attention,完了再拼接起来,如此会有更好的泛化能力(这种说法当然不是特别准确,具体如何请查相关文献,这里大差不差,不好再做更详细的解释)如此,每个行为序列的item就会有新的包含彼此信息的embedding,最后再对所有embedding做个平均,我们就得到了每个Session的interest。对应不同的Session我们就得到了I1,I2,…Ik,第二层任务完成。当然在做self-attention的时候,每个Session的位置信息,Session中行为序列中每个item的位置信息,行为序列的item对应的embedding中的位置信息都是要考虑的,考虑这些只要加个简单的位置编码校正就行,不细谈。
到第三层,第三层的任务是捕捉Session间兴趣演化的过程,这个看过DIEN的小伙伴已经很熟悉了,只是DIEN中使用GRU,这里使用LSTM,还是双向的,LSTM与GRU的结构略有不同,但大差不差,都是设计了几个门来控制信息的流入流出,这里就不详细介绍了,总之经过双向LSTM,我们得到包含有相互Session间信息的h1,h2…hk,里面捕捉了不同Session间兴趣演化的轨迹。第三层任务完成。
到第四层,Session Interest Activating Layer,这在DIN,DIEN中都见过,只是这里同时对第二层的结果I1,I2,…Ik,第三层的结果h1,h2…hk都做了类似的处理,只提取出兴趣中与最后我们要推荐的item相关联的部分。
最后把所有的特征拼接起来送入全链接网络,完事!
阿里自顾自的说完,独自一人潇洒的离去,挥一挥衣袖,不带走一片云彩。