作者 | 沉雨
一、引言
服饰搭配的生成与推荐在时尚前沿扮演着越来越重要的角色。一套服饰搭配通常由多件时尚的单品组成,它们需要在视觉上看上去和谐,且在逻辑上看起来合理。和传统商品推荐不同,搭配推荐的前提是需要先产出搭配,这个过程充满挑战。因此,搭配的生成往往需要时尚达人的介入。截止到2018年3月,有150万的内容创造达人入驻淘宝。但是,创造出来的搭配总量和淘宝频道需要的搭配数量之间,仍然存在巨大的差距。本文的重点就在解决此人力问题,旨在为淘宝的每位用户生成个性化的搭配。
服饰搭配的生成与推荐存在两个要求:1、搭配生成要符合视觉美观;2、搭配推荐要做到个性化。第一个要求往往用合理性(Compatibility)指标来衡量。早期的研究计算两两单品之间的搭配合理性,近期的工作用深度网络解决搭配合理性问题。第二个要求是看推荐的搭配是否符合用户的个性化品味(Personalization)。之前的工作中,需要用户显示地提供一个问询,比如一件衣服的图片,从而推荐与之配套的其他衣服。我们的工作着力于不需要用户的显示输入,而是通过学习用户的历史行为,自动生成个性化的搭配。
在以往的研究中,这两个要求通常是分开解决的。我们希望在搭配生成和搭配推荐之间建立一个桥梁,能够用一套架构实现两个需求。具体来说,我们通过用户的历史行为捕捉用户的偏好,在此基础上生成个性化的、合理的搭配。对于合理性要求,我们提出了FOM模型,用self-attention学习每件商品和其他所有商品的关联性。我们设计了一个掩码任务,即每次在搭配中掩住一个商品,让模型根据其他商品预测出这个掩住的商品应该是什么。对于个性化要求,我们提出了POG模型,利用Transformer的encoder-decoder框架,建模用户的历史行为和搭配合理性。最后,我们搭建了一个叫“滴搭”的平台,以POG模型为核心,帮助淘宝中iFashion频道搭配的个性化生产。
我们有以下四点贡献:
提出POG模型:一个能生成个性化搭配的encoder-decoder结构的模型,同时考虑了搭配的合理性和用户的个性化。
我们的模型在离线评测中相比于其他方法有显著提升,将FITB(Fill In The Blank)提升到68.79%(相对提升5.98%),CP(Compatibility Prediction)提升到86.32%(相对提升25.81%)。
我们将POG模型部署到实际线上平台“滴搭”。通过在线实验观察,我们发现POG相对于传统CF的方法,CTR(Click-Through-Rate)提升了70%。
我们提供了实验中所有的数据集,包含101万搭配,58.3万搭配单品,357万用户累计2.8亿点击行为。
二、数据集
淘宝的达人每天都会产出数以千计的搭配。所有这些搭配都会在上线前被人工审核。截止到论文完稿时,共有143万条搭配被创造且审核。我们选取了80个最常见的服饰叶子类目(比如毛衣、大衣、T恤、靴子、耳环),其他低频的叶子类目商品被移除。重新计算搭配中商品的个数,低于4件商品的搭配被移除。这样,共有101万套搭配留下,包含58.3万商品。
此外,我们还统计了用户在iFashion频道近3个月,对于时尚单品和搭配的点击行为。共357万用户浏览过超过40件搭配,定义为活跃用户。在每个用户的点击行为中,以搭配的点击为节点,若在此之前有超过10次的单品点击,则被记录下来。训练数据由此次搭配点击和在此之前的最近50次单品点击共同组成。最终,我们获得了1920万训练数据,包含446万商品,12.7万搭配。数据集中的每件单品都包含白底图、标题、和叶子类目信息。
据我们所知,我们的数据集是目前公开的、包含详细数据信息的最大服饰搭配类数据集。同时也是第一个提供用户在搭配上行为数据的数据集。数据集已提供(https://github.com/wenyuer/POG),具体数据见下表:
三、模型
3.1多模态建模
对于每个单品f,我们都会计算一个非线性的embedding表达其特征。特征的来源主要是视觉上和文字上。本文中运用了三个来源的信息:1)用CNN模型从商品白底图中抽取的向量;2)用TextCNN从商品标题中抽取的向量;3)从阿里巴巴Behemoth平台抽取的商品Graph Embedding向量。
我们希望在embedding空间中,相似的商品距离相近,而不同的商品距离拉开。因此,我们将从商品图片、文本和协同过滤中得到的向量结合起来,经过一层全连接后,用triplet loss来学习embedding。对于每个商品,我们定义相同叶子类目的商品为其正例,不同叶子类目的商品为负例,因此triplet loss的计算如下:
通过最小化loss,商品和其正例的距离被要求小于和其负例的距离。
3.2 FOM模型
服饰搭配由一组时尚单品组成,其中每件单品对于其他单品有不同的关系权重。为了捕捉到商品之间的关联,我们基于双向的Transformer encoder的结构,设计了一个掩码任务。每次掩住搭配中的一件单品,我们让模型从几个候选单品选项中填空,从而学习到被掩住的商品和其他单品之间的关系。由于搭配中的每件单品都被强制学习其上下文商品,两两单品间的搭配合理性就会被self-attention机制学习到。
给定一套搭配F,F={f1,…,ft,…fn}。用一个特殊的标记[MASK]表示被掩住商品的表达,其他未被掩住的商品用其multi-modal embedding表达。整个搭配的输入表示为Fmask,因此FOM模型的loss表示为:
Pr(.)表示模型选择到正确的被掩住的商品的概率。
模型的架构图如下。模型基于Transformer encoder,但没有用position embedding,这是因为我们将搭配中的商品看做一个集合,而不是一个有序序列。首先,Fmask经过了两层全连接网络(我们定义为转换层)得到H0,然后连接到一个Transformer encoder的结构中。Transformer encoder包含多层,在每一层中,都包含一个Multi-Head self-attention(MH)的子层,和一个Position-wise Feed-Forward Network(PFFN)的子层。
经过l个子层之后,令gmask表示对应于输入[MASK]的输出,在gmask之上增加一个softmax层计算得到被掩住商品真实值的概率:
其中,hmask是从转换层得到的被掩住商品的embedding。我们可以用全部的商品来做softmax,但实际中这样的计算太过庞大,因此,我们随机在商品池中选择了3个未在此搭配中出现的商品,同时加上被掩住商品的真实值,构成了softmax的打分集合。
3.3 POG模型
在学习到商品间搭配合理性之后,我们开始思考如何同时加上用户个性化的信息,生成个性化的、合理的搭配。我们利用了翻译问题中常见的encoder-decoder结构,将用户的历史行为“翻译”成一套个性化的搭配。用用户点击过的商品序列U={u1,…ui,…um}去表示一个用户,用户点击过的搭配表示为F={f1,…ft,…fn}。在每一步,我们根据之前产出的搭配商品,联合用户点击过的商品序列,去预测下一个应该产出的搭配商品。因此,对于每一个(U,F)对,POG的目标函数可以写为:
Pr(.)表示在之前搭配商品和用户行为的情况下,产出第t+1个搭配商品的概率。
模型的架构图如下。在POG中,encoder将用户点击过的商品作为输入。给定一个特殊的符号[START],decoder开始每一步产出一个搭配商品。在每一步中,模型会自循环地将前一步的输出作为输入。整个生成过程在遇到特殊符号[END]时停止。我们将encoder命名为Per网络,将decoder命名为Gen网络。Per网络提供了用户个性化的信息,而Gen网络同时考虑了从Per传递过来的个性化信息,和其本身的搭配合理性信息。
在Per网络中,经过两层全连接(转换层)之后,接上了一个p层的Transformer encoder的结构。Gen网络首先会被初始化为pre-trained的FOM。在Gen网络中,经过转换层之后,接上一个q层的Transformer decoder的结构。每层Transformer decoder包含三个子层,第一个为Masked Multi-Head self-attention(MMH)子层,这个mask的设计能够保证当前产出的商品只会收集在此之前产出的商品的信息。第二个为MH子层,将用户的个性化信息引入到Per网络。第三个为PFFN子层。
在一条训练日志中,我们将用户点击过的商品作为Per的输入,而用户点击过的搭配中的商品作为Gen的ground truth。定义ht+1为第t+1步ground truth的转换层向量,则预测出第t+1个商品的概率为:
同样,这里我们选择3个随机选出的商品和正确商品组成softmax的作用对象。
在预测阶段,对于每一步的输出vt,我们从候选池中向量检索到一个最近的商品作为输出。当[END]标记出现时,生成过程结束。
3.4 滴搭平台
我们将POG部署到在线平台上,取名滴搭。滴搭平台包含选品、搭配生成、合图、个性化推荐等多个功能,支持百万级别的商品池。论文截稿时,已有超过100万阿里的运营在平台上生成过搭配,每天约600万搭配被智能化生成,约540万用户看到了他们个性化生成的搭配。
四、实验
4.1搭配合理性
在以往搭配合理性评判的工作中,往往用FITB和CP两个指标来衡量:
FITB:从多个选项中选出正确答案,能够和其他商品组成一套合理的搭配。
CP:达人产出的搭配为正例,随机选择商品组成的搭配为负例。模型做判断是否为正确搭配。
4.1.1 多模态对比
我们发现,在FITB和CP实验中,单独的模态,文本都是表现最好的。增加图像模态和CF模态,都对结果有正向效果。
4.1.2 多模型对比
我们和之前的一些模型:F-LSTM、Bi-LSTM、SetNN进行了对比。需注意的是,F-LSTM和Bi-LSTM是基于序列的模型,它们都将输入当做一个有序序列。SetNN和FOM是基于集合的模型,它们不要特别指定输入的顺序。我们分别做了有序输入和无序输入两组实验:
在FITB实验中,基于序列的模型对于输入顺序是敏感的,而基于集合的模型不会。F-LSTM和Bi-LSTM都在有序输入的情况下表现更好。无论是有序输入还是无序输入,FOM在所有模型中表现最好。在无序情况下,它比第二名Bi-LSTM提升了18.04%;在有序情况下,它比第二名Bi-LSTM提升了5.98%。
在CP实验中,基于序列的模型仍然对于输入顺序敏感。在无序输入中,FOM比第二名Bi-LSTM提升了34.90%;在有序输入中,FOM比第二名Bi-LSTM提升了25.81%。
4.2 个性化推荐
我们通过在线实验验证个性化推荐的效果。对比的模型有F-LSTM和Bi-LSTM,SetNN没有生成能力,不在考虑中。生成的搭配会被随机投放给用户,我们称为RR。为了和传统的单品推荐方法进行比较,我们设计了一种方法,即先以每件商品为trigger生成一套搭配,然后用CF的方法计算每个用户最偏好的商品,则以最偏好商品为trigger的搭配将投放给该用户。我们称此方法为CF。我们连续记录了7天各方法线上CTR的情况,如下:
从图中可以看出,无论用什么模型,CF方法的点击率都高于RR,而POG方法的点击率都高于CF。线上的部分例子展示如下:
联系我们:在猜你喜欢团队工作,你将要解决的问题域涉及对上亿用户在几十亿商品池中的推荐问题,不仅仅要考虑CTR、成交金额等业务指标,还需要系统化的解决上千万卖家流量博弈的机制设计,以及推荐系统与用户的交互体验。团队内的算法工程师和科学家将与你一起解决世界上规模最大电商平台上最困难的业务技术难题。在过去的几年间,猜你喜欢团队所负责的场景核心用户指标一直保持非常高的增长速度,目前组内成员多来自国内外知名院校和研究所,近年在SIGKDD、AAAI、CIKM、WWW等学术会议上发表多篇论文。欢迎加入我们!邮箱:chenyu.cw@alibaba-inc.com
本文被KDD 2019收录,《POG: Personalized Outfit Generation for Fashion Recommendation at Alibaba iFashion 》,点击文末“阅读原文”即可阅读。
参考文献:
[1] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805 (2018).
[2] Xintong Han, Zuxuan Wu, Yu-Gang Jiang, and Larry S Davis. 2017. Learning fashion compatibility with bidirectional lstms. In Proceedings of the 2017 ACM on Multimedia Conference. ACM, 1078-1086.
[3] Yuncheng Li, Liangliang Cao, Jiang Zhu, and Jiebo Luo. 2017. Mining fashion outfit composition using an end-to-end deep learning approach on set data. IEEE Transactions on Multimedia 19, 8 (2017), 1946-1955.
[4] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems. 5998-6008.