BST: Behavior Sequence Transformer中的self attention过程详解

用户历史行为中包含了丰富的信息,是刻画用户心智的重点特征。在推荐广告领域,如何挖掘用户行为序列中的有效信息是CTR预估等任务的重点。笔者在上一篇文章中介绍了DIN(Deep Interest Network),其抓住了用户行为序列与目标广告/商品之间的关系。在这篇文章中将介绍阿里团队的另外一项重要的工作:BST(Behavior Sequence Transformer) ,将NLP中的transformer模型运用到了CTR预估中,更好地挖掘用户行为序列内部的时序关系。

文章地址:Behavior Sequence Transformer for E-commerce Recommendation in Alibaba
Transformer论文地址:Attention Is All You Need,想对transformer有详细了解的同学们可以参考

transformer的tensorflow代码可以参考tf官方的github:地址
我自己试了一下,简洁直观,容易实现。

1. BST网络简介

BST的网络结构如下图所示:

图1 BST网络结构

1.1 核心思想
WDL 和 DIN没有考虑到用户序列的时序性,即用户序列中不同商品间的关系。本论文使用了transformer的结构,来捕捉这种关系。

1.2 输入特征
网络的输入特征有两部分:用户行为序列(User Behavior Sequence)和其他特征(user, item, context, cross等)。其中用户序列中的每一个item有两部分组成:sequence item feature 和positional feature,如图1所示。这里的用户序列也包含了target item及其position,见图1的右下角。

  • sequence item feature:使用item_id和category_id
  • positional feature: 用户序列中商品的位置信息,目的是为用户序列引入时序信息。商品v_i的位置特征计算如下:
    pos(v_i) = t(v_t)-t(v_i) \tag1
    即商品的点击时间与当前target item v_t的推荐时间之间的gap。这里加入的position feature相当于<<attention is all you need>>里的postitional encoding,只是本论文中没有使用sin/cos的编码方法,而是更直接地将postional feature与item feature进行了concat.

1.3 transformer layer

  • transformer layer主要实现了<<attention is all you need>>里的multi-head self attention + Point-wised FFN 结构(即encoder结构)

  • multi-head self attention:
    {\rm Attention}(\boldsymbol {Q, K, V}) = {\rm softmax}(\frac{\boldsymbol { QK}^{T}}{\sqrt d})\boldsymbol V \tag2
    其中\boldsymbol {Q, K, V}即Query, Key 和Value,是同一个item与不同的权值矩阵\boldsymbol {W^Q, W^k, W^V}相乘得到,权值矩阵\boldsymbol {W^Q, W^k, W^V}为可学习参数;d为embedding size。此处的attention抽象为对Value中的每个item进行加权,而加权所用到的weight就是式(3)所计算得到的,即用Query和Key来决定注意力应该放到value中的哪个item上。Query之所以叫query(查询),是因为每次都用一个embedding vector去查询其与其他的embedding vector的match程度。一共要做n轮这种操作,n为1个batch中的序列个数。

    multi-head:将Q, K 和V在embedding size维度上投影h次,分别进行学习,最后concat起来作为attention的最终输出。使用multi head是为了使模型能够自适应地学到不同子空间下的序列信息。这里与CNN的feature map思想有些类似,使用相同形状的多个feature map,以期待模型能够自动学习到不同子空间下的特征。
    \boldsymbol S = MH(\boldsymbol E) = Concat(head_1, head_2, ..., head_h)\boldsymbol W^H \tag3
    注:这里论文的公式写法有些混乱,我的理解head_1, ..., head_h就是把Q, K, V分成了h等份(源码中使用的是tf.split()函数),分别做公式(2)中的变换,再concat起来。详细分析见后面的图解。

  • Point-Wised Feed-Forward Networks(FFN)
    F = FFN(\boldsymbol S)\tag4
    FFN中应用了normalization和residual blocks。self attention和FFN中都应用了dropout和LeakyReLU来避免过拟合。

  • 叠加多层self attention和FFN模块:
    \boldsymbol S^b = SA(F^{(b-1)})\tag5
    \boldsymbol F^b = FFN(\boldsymbol S^b), \forall i \in 1, 2, ..., n.\tag6
    叠加多层模块是为了模型能够更好地学习序列间的复杂关系。但论文的实验中证明b=1时的效果最好。

2. self attention过程详解

图2 self attention
图3 multi-head self attention

在图2中,seq 首先经过embedding得到向量\boldsymbol E \in \mathbb{R}^{n\rm x d}, 其中n=4为序列长度,d=6为embedding size. 然后\boldsymbol E与3个相同形状的权重矩阵\boldsymbol W_Q, \boldsymbol W_K, \boldsymbol W_V点乘,将自身映射为3个不同的矩阵\boldsymbol Q, \boldsymbol K, \boldsymbol V。接下来这三个矩阵会完成self attention的基本操作,即式(2)。\boldsymbol Q\boldsymbol K得到的attention score \boldsymbol W作为权重,与\boldsymbol V点乘,作为self attention的输出。

图3在图2的基础上加入了multi head 操作,即将\boldsymbol Q, \boldsymbol K, \boldsymbol V在embedding size d 的维度拆分为h个矩阵(图中h=3),分别进行self attention 操作,得到的结果再concat起来作为最终的输出。

参考文献:
[1] multi-head attention
[2] 推荐系统遇上深度学习(四十八)-BST:将Transformer用于淘宝电商推荐
[3] 论文笔记:Attention is all you need

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354