阿里淘宝2019的BST(用Transformer建模用户行为序列)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/smartcat2010/article/details/102750184

阿里首次将Transformer用于淘宝电商推荐!效果超越深度兴趣网络DIN和谷歌WDL

用Transformer对用户最近的20个点击行为序列进行建模;

结合了point-wise Feed-Forward Network(FFN)

baseline的WDL没有使用行为序列做输入(不公平),WDL(+Seq)那个使用了行为序列的embedding平均值做输入;

和DIN的区别:使用 Transformer 来学习用户行为序列中每个 item 的更深层的表征,而 DIN 试图捕获之前点击的 item 和目标 item 之间的不同相似性。

简析阿里 BST: 用户行为序列 与 Transformer 更配O

用户行为序列的建模方式可归结为:

  • 朴素简单的 sum/mean pooling,工业实践中效果其实还不错。
  • weight pooling,关键点是weight的计算方式。例如经典模型 DIN(参见 “详解 Deep Interest Network: 为阿里创造更多广告收入”),DIN 使用注意力机制来捕获候选item与用户点击item序列之间的相似性作为weight。
  • RNN类,考虑时序信息。例如阿里妈妈随后利用 GRU 捕捉USB中的序列信息,将 DIN 升级为DIEN

应用了:Multi-Head Self-Attention,Transformer, FFN(???), 输入里引入时序信息

输入里引入时序信息:(细节没有写,一个合理做法是是按照取值进行等频分桶)

引入 position embedding。作者尝试了Transformer原文中sin/cos函数的位置嵌入,发现效果不好,最终采取对时间戳embedding的形式,时间戳的计算方式为:pos(v_{i})=timestamp(v_{t})-timestamp(v_{i})

其中v_{i}表示用户点击序列中的第i个item,v_{t}表示当前候选item。如论文里的图所示,BST通过item embedding 拼接 position embedding的形式引入时序信息(Transformer原文中使用相加,而非拼接),再进行MH。

对于seq长度,个人理解20对于线上来说恰是比较合理的长度(DIEN用的50;所以20~50即可)。从两个方面来理解:

1. 在线推理耗时:模型复杂度随着seq长度的增加而显著增加,这个在模型设计上是必须要考虑的现实问题,一般情况下,留给CTR服务的耗时在50ms内,多数会更短;

2.特征的侧重点:我理解这样的做法更多还是建模用户短期兴趣,而长期兴趣多数是在用户画像侧已经做好了,所以长序列也显得没那么必要了;

猜你喜欢

转载自blog.csdn.net/smartcat2010/article/details/102750184
今日推荐