阿里首次将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的形式,时间戳的计算方式为:
其中表示用户点击序列中的第i个item,表示当前候选item。如论文里的图所示,BST通过item embedding 拼接 position embedding的形式引入时序信息(Transformer原文中使用相加,而非拼接),再进行MH。
对于seq长度,个人理解20对于线上来说恰是比较合理的长度(DIEN用的50;所以20~50即可)。从两个方面来理解:
1. 在线推理耗时:模型复杂度随着seq长度的增加而显著增加,这个在模型设计上是必须要考虑的现实问题,一般情况下,留给CTR服务的耗时在50ms内,多数会更短;
2.特征的侧重点:我理解这样的做法更多还是建模用户短期兴趣,而长期兴趣多数是在用户画像侧已经做好了,所以长序列也显得没那么必要了;