前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RS Meet DL(52)-基于注意力机制的用户行为建模框架ATRank

RS Meet DL(52)-基于注意力机制的用户行为建模框架ATRank

作者头像
石晓文
发布2019-06-24 21:46:08
9780
发布2019-06-24 21:46:08
举报
文章被收录于专栏:小小挖掘机小小挖掘机

本文来介绍一下阿里巴巴数据技术团队与北京大学共同提出的 ATRank ,ATRank是基于注意力机制的用户异构行为建模框架,可应用于推荐系统中,一起来了解一下吧。

论文名称《ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation》

论文地址:https://arxiv.org/abs/1711.06632

示例代码地址:https://github.com/jinze1994/ATRank/tree/master/atrank

1、背景

正如一个单词可以通过其上下文来表示,那么一个用户也可以通过其过往的行为序列来表示。但随着技术的发展,越来越多样化的用户行为可以被捕捉并保存在数据库中,使得用户行为表现出异构性,高度多样性。以电商领域的推荐为例、一个用户可能浏览、购买、收藏商品,领取、使用优惠券、点击广告、搜索关键词、写评论或者观看商家提供的商品介绍视频等等。这些不同的行为为我们更全面的理解一个用户提供了不同的视角。

面对用户如此多样化的行为,要想做到更精确的推荐,很大的挑战来自于能否对用户的异构行为数据进行更精细的处理。在这样的背景下,本文提出一个通用的用户行为序列建模框架,试图融合不同类型的用户行为,并以此框架进行推荐任务。

2、模型框架

我们先来看一下本文提出的用户行为建模框架的整体架构:

该框架分为以下几个模块:原始特征空间(raw feature spaces)、行为嵌入空间(behavior embedding spaces)、隐语义空间(atent semantic spaces)、行为交互层(behavior interaction layers)、下游网络层(downstream application network)。

接下来,我们首先定义一下用户行为序列表示,随后对上面几个模块进行依次介绍。

2.1 用户行为序列定义

用户行为序列被定义为U={(aj,oj,tj)|j=1,2,...,m}。其中,每一个行为被表示称三元组(a,o,t)。a代表用户的行为种类,o代表该行为发生时的一些特征表示,不同的行为种类的话,这里的特征可能是不同的。举个简单的例子,如果一个用户行为是购买行为,那么特征更多的是有关这个购买的物品的,如果一个用户行为是搜索关键词,那么特征更多是关于这个关键词的。t代表用户行为发生时的时间戳。

2.2 Raw Feature Spaces

在这一层中呢,会对用户行为进行进行分组,主要是按照不同的行为目标实体,而非不同的用户行为。还是举例说明一下。如浏览、购买、收藏商品,这些都是商品相关行为、领取、使用优惠券时优惠券相关的行为等等。那么这里划分不是按照浏览、购买、收藏商品去进行划分,而是根据商品行为、优惠券行为去进行划分。

划分后的结果表示为G={bg1,bg2,...,bgn}。这样,在每一个组bgi里,特征o都是相同的。

2.3 Behavior Embedding Spaces

在这一层,要将用户的行为转换为嵌入向量。对于用户在bgi这一组中的某一个行为(aj,oj,tj),我们会将aj、oj、tj分别转换为嵌入向量。

这里按照不同的组bgi进行划分的主要原因是针对不同的组,特征o是不同的。

下面主要来讲一下对时间t的编码方式,t是行为发生时的时间戳,首先会计算与当前时间的一个时间间隔,但此时仍然是一个连续变量,不好将其转换为embedding表示。这里文中提到了一种离散化的表示方法,将时间间隔按照如下的区间进行离散化:

在得到每个行为的embedding表示后,可以根据组别,得到每个组的embedding表示:

其中:

值得注意的是,每组得到的embedding可能是不同长度的,一是由于用户行为在每组下面的序列长度是不同的,二是由于不同的行为所包含的信息量也是差别很大的,如用户的一次购买行为,所能体现出的偏好信息是比一次关键词搜索是更多的,因而往往需要更长的embedding。

此外,这里的ubg1,ubg2,...,ubgn并非是一个向量,而是一组向量,即仍然是每一个行为对应一个向量,示意如下:

在不同组中,有些特征的embedding可能是共享的,如店铺ID、品类ID等等,但需要注意的是,对于时间的embedding在不同组是不共享的。

2.4 Latent Semantic Spaces

由于每组中行为的最终embedding长度不一,同时所处的向量空间也不同。这里其实就是通过线性变换来将其统一到同一个语义空间。

具体来说:

然后,在得到S之后,再通过多个投影矩阵,将S映射到多个不同的语义空间。

同样,这里的过程表示如下:

2.5 Self-Attention Layer

接下来,对每一个语义空间中的向量,经过一层self-attention layer,Self-Attention Layer想必大家都很熟悉了,在前面的文章中,咱们用excel将整个过程详细地捋了一遍,感兴趣的话可以查看原来的论文:

通俗易懂!使用Excel和TF实现Transformer!

在self-attention中,要分别输入queries和keys,queries用来计算Q、keys用来计算K和V。这里的的queries是Sk,而keys是S,过程表示如下:

写到这里,用户行为建模的过程就结束了,来回顾一下上面的整个流程(下图中每一个单元格代表的是一个向量):

这里还是想说,上面的过程仅仅是我的个人理解,网上的参考资料或者给出的示例代码中,均无法提供很好的参考依据。所以如果大家有不同的见解,欢迎与我一起讨论。

2.6 Downstream Application Network

在对用户行为进行建模之后,接下来我们就可以做许多下游任务了。文中是以推荐任务为例。这里仍然使用类似于self-attention的过程:

数学公式是不是看着头大?还是用excel来表示一下吧,假设下游任务是一个物品相关的行为:

好了,本文的介绍就到这里了,本文的重点是对用户行为序列建模的方法的介绍,对用户行为序列进行建模后,可以用于多种不同的下游任务,相比于DIN、DIEN和DSIN,它考虑了用户更多样的用户行为,但由于本文的时间比较早,所以也没有和DIN等模型进行对比,实践中感觉是可以尝试一下的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、背景
  • 2、模型框架
    • 2.1 用户行为序列定义
      • 2.2 Raw Feature Spaces
        • 2.3 Behavior Embedding Spaces
          • 2.4 Latent Semantic Spaces
            • 2.5 Self-Attention Layer
              • 2.6 Downstream Application Network
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档