简介: 一个优秀的服饰搭配推荐引擎需要满足两方面要求:1、搭配生成要符合视觉美观;2、搭配推荐要做到个性化。本文中,我们利用Transformer的结构,巧妙地在视觉合理性和个性化推荐之间建立桥梁,同时完成搭配生成和推荐两个工作。据我们所知,该工作首次将搭配生成和推荐同时部署在大规模的工业应用中。 一、引言 服饰搭配的生成与推荐在时尚前沿扮演着越来越重要的角色。一套服饰搭配通常由多件时尚的单品组成,它们需要在视觉上看上去和谐,且在逻辑上看起来合理。和传统商品推荐不同,搭配推荐的前提是需要先产出搭配,这个过程充满挑战。因此,搭配的生成往往需要时尚达人的介入。截止到2018年3月,有150万的内容创造
作者 | 沉雨
一、引言
服饰搭配的生成与推荐在时尚前沿扮演着越来越重要的角色。一套服饰搭配通常由多件时尚的单品组成,它们需要在视觉上看上去和谐,且在逻辑上看起来合理。和传统商品推荐不同,搭配推荐的前提是需要先产出搭配,这个过程充满挑战。因此,搭配的生成往往需要时尚达人的介入。截止到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万搭配。数据集中的每件单品都包含白底图、标题、和叶子类目信息。
据我们所知,我们的数据集是目前公开的、包含详细数据信息的最大服饰搭配类数据集。同时也是第一个提供用户在搭配上行为数据的数据集。数据集已提供(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万用户看到了他们个性化生成的搭配。
四、实验
阅读原文看完整实验部分: developer.aliyun.com/article/741…