前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RS Meet DL(53)-DUPN:通过多任务学习用户的通用表示

RS Meet DL(53)-DUPN:通过多任务学习用户的通用表示

作者头像
石晓文
发布2019-07-09 15:18:31
1.5K0
发布2019-07-09 15:18:31
举报
文章被收录于专栏:小小挖掘机小小挖掘机

本文介绍的文章题目是:《Perceive Your Users in Depth: Learning Universal User Representations from Multiple E-commerce Tasks》

论文的下载地址为:https://arxiv.org/pdf/1805.10727.pdf

视频介绍:https://yq.aliyun.com/video/play/1377?do=login&accounttraceid=2a655d82-06ce-4c03-a7bf-9e7c8f36b76e

本文以淘宝搜索和推荐场景为背景,通过一个多任务模型来学习用户的通用表示,并对比了多任务模型和单任务模型的一些实验效果,并对多任务模型以及模型迁移等方面给出了一些经验介绍。咱们一起来看看。

1、多任务学习的优势

我们为什么要使用多任务学习呢?或者说,多任务学习相比于单任务学习有哪几方面的优势呢?总结主要有两点: 1)使用一个多任务学习模型,可以共享一部分网络结构,相比于使用多个单任务学习模型,其总体的网络结构大小更小,在线CPU使用率更低,对于在线服务更加友好,可以保证线下服务性能的稳定性,支撑更大的QPS。同时,对于存储资源也会大大的节省,我们没必要为每一个任务保存一份embedding词表,而只需保存一份即可。 2)在淘宝中,使用多任务学习,可以学习到更通用的用户、商品的向量表示,这些向量可以更方便地迁移到其他任务中。

基于以上两点,接下来我们首先介绍本文的多任务学习模型,然后详细介绍下多任务模型和单任务模型的效果,以及模型的迁移能力,最后,介绍下一些多任务模型使用上的经验。

2、多任务模型

本文提出的模型称为DUPN网络( Deep User Perception Network),其整体的架构如下图所示:

可以看到,一共分为五层,行为序列层、Embedding层、LSTM层、Attention层、下游多任务层。接下来,我们分别介绍这几部分。

2.1 行为序列层

模型的输入是用户的行为序列x = {x1,x2,...,xN},行为序列中的每一个行为都有两部分组成,例如第i个行为xi被表示成<itemi,propertyi>,itemi表示这次行为对应的淘宝中的商品,不仅仅是商品本身,还包含商品的一些side-information,比如店铺ID、品牌、品类、标签等等。propertyi表示此次行为的一些属性,比如场景(scenario,如搜索、推荐、聚划算等等场景)时间、类型(点击、购买、加入购物车等等)。

2.2 Embedding层

在定义好模型的输入之后,输入大多是ID类特征,因此通过Embedding层转换为对应的Embedding:

用户的每个行为被表示为:

对item feature来说,包括商品id、店铺、品牌、品类、标签,这些在淘宝中词表的大小分别为1G、1M、10M、1M、100K,对应的embedding的长度分别为32、24、24、16和28。这些有的是multi-hot的,比如商品可能会有多个标签,应该会通过pooling操作进行转换。

而对于行为property来说,场景、时间和类型的embedding的长度均为16。因此最终每一个行为的Embedding长度为32 + 24 + 24 + 16 + 28 + 16 * 3 = 172。

2.3 LSTM层

得到了每一个行为的Embedding表示之后,首先通过一个LSTM层,把序列信息考虑进来,LSTM层的表示如下:

每个hidden state的计算如下:

输出的每个hidden state是128维的向量。

2.4 Attention层

在LSTM层之后,通过Attention层来决定行为的重要程度。举个简单的例子来说明为什么要用Attention层。例如,某用户点击浏览一条连衣裙,然后购买了一个手机,浏览了一些扫地机器人、笔记本电脑等。如果此时该用户输入搜索query为iphone,那么用户行为中关于服饰的记录重要性明显降低,因为这些记录并不能反映该用户当前的兴趣,而之前关于手机的行为记录能更多的表达用户当前的兴趣。

那么Attention层的结构如下:

结合总体网络结构看看attention层:

图中粉色和蓝色以及黑色虚线为模型的输入,粉色线代表行为behavior相关的embedding、蓝色线代表LSTM层的hidden state输出、黑色为用户和query的embedding。通过多层全连接神经网络得到权重作为输出,然后权重和对应的hidden state进行加权平均,得到attention层的输出,同样是一个128维的向量。

经过attention层得到的128维的向量,拼接上128维的用户向量,最终得到一个256维向量作为用户的表达。用户信息包括用户年龄、性别、购买力、购买偏好等等。

2.5 下游任务

下游任务这里介绍了4个,分别是CTR、L2R(Learning to Rank)、用户达人偏好FIFP、用户购买力度量PPP。感觉前两个是主要的任务,后两个任务主要用于使得学到的用户表示更加通用。除此之外,为了验证模型的迁移能力,还介绍了第五个任务,即来预测用户对某个店铺的偏好,该任务并非和上述四个任务同时学习,而是取上述四个任务学习之后的用户表达进行学习,验证其是否可以直接使用在新任务中。

2.5.1 点击率CTR预估

这里输入有两部分,一是我们刚才得到的256维的用户向量表示,另一个是Item的feature对应的128维向量表示,item的向量表示,还是刚刚说到的5部分,分别是商品id、店铺、品牌、品类、标签,对应的embedding长度分别是32、24、24、16和28,这里和Embedding层的embedding是共享的。

CTR预估任务的loss是logloss:

2.5.2 排序权重学习Learning to Rank

这里想要学习的是一些用于排序的特征的权重,部分特征如下:

通过权重的学习,对不同的排序特征进行加权,来使得转化率最大化,网络结构如下:

这里的loss如下:

这里yi取值为1或-1,代表第i个样本的label,ni是基于不同的行为类型的样本权重,ri是m维的排序特征,weight(repi;θ)是上图结构中左边部分的输出。也是m维的。这里m为26。

2.5.3 用户达人偏好预测FIFP

这一部分的结构如下:

预测用户是否会follow某一些达人,输入分别是刚才得到的256维的用户表示以及一些达人的特征。这里的损失同样为logloss。

2.5.4 用户购买力度量PPP

这里将用户的购买力分为7档,来预测用户的购买力属于哪一档。

2.5.5 店铺偏好SPP

该部分同样是一个二分类任务,结构如下:

这一部分在后面的实验结果中,咱们进一步介绍。

3、实验结果

这一部分介绍模型的一些实验结果,主要分为四部分,首先对比了DUPN和一些Baselines的效果比较,随后对比了多任务学习和单任务学习效果,然后通过第五个任务验证了模型的迁移能力,最后对attention进行了简单的分析。

3.1 DUPN VS Baselines

这里选取的Baselines有四种,分别是Wide、Wide & Deep、DSSM和CNN-max,而DUPN方面,又分了五种情形,分别计作DUPN-nobp/bplstm/bpatt/all/w2v。DUPN-nobp表示不使用behavior property;DUPN-bplstm表示只在lstm部分使用behavior property;DUPN-bpatt表示只在attention部分使用behavior property;DUPN-all即我们刚才所描述的整个模型框架。前面四种中,embedding都是通过end-2-end的方式进行训练的,即随机初始化embedding,然后根据模型一起进行训练,而DUPN-w2v对embedding进行预训练。

因此,一共9种模型,结果如下:

可一看到,所有任务上,都为DUPN-all的效果最好。

3.2 多任务学习 VS 单任务学习

多任务学习模型和各个单任务学习模型在测试集上的效果对比如下:

可以看到,尽管在训练集上的误差多任务学习模型会偏大,但是在测试集上的效果,多任务学习模型反而更好,模型的泛化能力得到了提升。

3.3 模型迁移能力验证

接下来通过店铺偏好实验来验证一下模型的迁移能力。在训练完包含前4个任务的多任务模型之后,有下面几种方法应用于第5种任务上:

End-to-end Re-training with Single task (RS):使用DUPN的网络结构单独训练这一个新任务。 End-to-end Re-training with All tasks (RA):使用DUPN的网络结构重新训练5个任务 Representation Transfer (RT):将学习到的用户表示以及店铺属性作为输入,训练一个简单的网络,这里用户表示不会被更新 Network Fine Tuning (FT):将学习到的用户表示以及店铺属性作为输入,训练一个简单的网络,这里用户表示会随着网络训练而Fine Tuning。

上述四种方法的训练过程如下图所示:

上图中横坐标为训练轮次,纵坐标为AUC值。效果最佳的为绿色曲线FT,一方面FT收敛较快,另一方面其最终AUC值也最高,为0.675左右。这说明之前的网络已经达到了较好的训练效果,进行一些微调后便可以很快的得到最终结果。而黑色曲线RA虽然收敛速度较慢,最后仍然可以达到和FT同样高的AUC值。但显而易见FT的代价较低。

3.4 用户Attention分析

用户Attention分析从两方面进行,一是搜索关键词时和用户历史行为的相关性:

颜色越深表示相关性越高,可以看到,用户搜索laptop时, 那么attention更多的会集中在耳机、手机之类商品,而搜索连衣裙T恤之类,服饰相关的类目会起到比较大的作用。

第二个是不同行为类别的attention:

整体来说,用户的成交行为重要性最高,高于点击、加购物车和收藏行为。但比较有趣的一点是,用户越近的一些点击行为越能反映用户的兴趣,但是最近的成交行为并不能反映。这和大家的认知相同,当用户购买了某件商品后,近期可能不会再购买该类别商品,因此颜色较浅,相反,几个小时以前或者几天以前的购买行为能更反映用户兴趣。

3.5 线上A/B test实验

将该模型应用于线上的实验,各种指标都有明显提升:

4、多任务模型使用技巧

最后,论文还讲解了两点多任务模型的使用技巧,一是模型的更新,二是模型的拆分。

4.1 日级增量更新

随着时间和用户兴趣的变化,ID特征的Embedding需要不断更新,但不能每次都重新训练模型,因为这大概需要耗费4天左右的时间。因此通常的做法是每天使用前一天的数据做增量学习,这样一方面能使训练时间大幅下降,能在一天内完成;另一方面可以让模型更贴近近期数据。

4.2 模型拆分

模型拆分的示意图如下:

由于CTR任务是point-wise的,如果有1w个物品的话,需要计算1w次结果,如果每次都调用整个模型的话,其耗费是十分巨大的。但其实,user Reprentation只用计算一次就好。因此我们会将模型进行一个拆解,使得红色部分只计算一次,而蓝色部分可以反复调用红色部分的结果进行多次计算。

4.3 BN问题

这是论文中没有但是在视频中有所提及的。Batch normalization能很好的提升模型效果,使AUC显著提升。但需要注意的是,训练样本中BN记住的离线均值和方差和在线数据中一定要保持一致。举例来说,在训练样本中会做各种过滤和采样,例如把点击和成交样本采样,那么这样会导致某些维度的均值会远远高于实际线上的均值,虽然在测试集上的AUC也能提升,但这对在线效果非常不利。

5、总结

这篇文章感觉非常有借鉴意义。不仅验证了多任务学习相对于单任务学习的优势,同时为建模用户行为提供了新的思路。除此之外,还介绍了阿里在模型应用上的一些经验,值得借鉴。

这篇文章发出时可能还没有Transformer,我觉得将LSTM层换成一层Transformer也许效果会有提升,感兴趣的同学可以试一试。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、多任务学习的优势
  • 2、多任务模型
    • 2.1 行为序列层
      • 2.2 Embedding层
        • 2.3 LSTM层
          • 2.4 Attention层
            • 2.5 下游任务
              • 2.5.1 点击率CTR预估
              • 2.5.2 排序权重学习Learning to Rank
              • 2.5.3 用户达人偏好预测FIFP
              • 2.5.4 用户购买力度量PPP
              • 2.5.5 店铺偏好SPP
          • 3、实验结果
            • 3.1 DUPN VS Baselines
              • 3.2 多任务学习 VS 单任务学习
                • 3.3 模型迁移能力验证
                  • 3.4 用户Attention分析
                    • 3.5 线上A/B test实验
                    • 4、多任务模型使用技巧
                      • 4.1 日级增量更新
                        • 4.2 模型拆分
                          • 4.3 BN问题
                          • 5、总结
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档