为什么说阿里工程师最懂时尚?

简介: 小叽导读:一个优秀的服饰搭配推荐引擎需要满足两方面要求:1、搭配生成要符合视觉美观;2、搭配推荐要做到个性化。本文中,我们利用Transformer的结构,巧妙地在视觉合理性和个性化推荐之间建立桥梁,同时完成搭配生成和推荐两个工作。据我们所知,该工作首次将搭配生成和推荐同时部署在大规模的工业应用中。

1.jpg

一、引言

服饰搭配的生成与推荐在时尚前沿扮演着越来越重要的角色。一套服饰搭配通常由多件时尚的单品组成,它们需要在视觉上看上去和谐,且在逻辑上看起来合理。和传统商品推荐不同,搭配推荐的前提是需要先产出搭配,这个过程充满挑战。因此,搭配的生成往往需要时尚达人的介入。截止到2018年3月,有150万的内容创造达人入驻淘宝。但是,创造出来的搭配总量和淘宝频道需要的搭配数量之间,仍然存在巨大的差距。本文的重点就在解决此人力问题,旨在为淘宝的每位用户生成个性化的搭配。

2.png

服饰搭配的生成与推荐存在两个要求:1、搭配生成要符合视觉美观;2、搭配推荐要做到个性化。第一个要求往往用合理性(Compatibility)指标来衡量。早期的研究计算两两单品之间的搭配合理性,近期的工作用深度网络解决搭配合理性问题。第二个要求是看推荐的搭配是否符合用户的个性化品味(Personalization)。之前的工作中,需要用户显示地提供一个问询,比如一件衣服的图片,从而推荐与之配套的其他衣服。我们的工作着力于不需要用户的显示输入,而是通过学习用户的历史行为,自动生成个性化的搭配。

在以往的研究中,这两个要求通常是分开解决的。我们希望在搭配生成和搭配推荐之间建立一个桥梁,能够用一套架构实现两个需求。具体来说,我们通过用户的历史行为捕捉用户的偏好,在此基础上生成个性化的、合理的搭配。对于合理性要求,我们提出了FOM模型,用self-attention学习每件商品和其他所有商品的关联性。我们设计了一个掩码任务,即每次在搭配中掩住一个商品,让模型根据其他商品预测出这个掩住的商品应该是什么。对于个性化要求,我们提出了POG模型,利用Transformer的encoder-decoder框架,建模用户的历史行为和搭配合理性。最后,我们搭建了一个叫“滴搭”的平台,以POG模型为核心,帮助淘宝中iFashion频道搭配的个性化生产。

我们有以下四点贡献:

  1. 提出POG模型:一个能生成个性化搭配的encoder-decoder结构的模型,同时考虑了搭配的合理性和用户的个性化。
  2. 我们的模型在离线评测中相比于其他方法有显著提升,将FITB(Fill In The Blank)提升到68.79%(相对提升5.98%),CP(Compatibility Prediction)提升到86.32%(相对提升25.81%)。
  3. 我们将POG模型部署到实际线上平台“滴搭”。通过在线实验观察,我们发现POG相对于传统CF的方法,CTR(Click-Through-Rate)提升了70%。
  4. 我们提供了实验中所有的数据集,包含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.png

三、模型

3.1多模态建模

对于每个单品f,我们都会计算一个非线性的embedding表达其特征。特征的来源主要是视觉上和文字上。本文中运用了三个来源的信息:1)用CNN模型从商品白底图中抽取的向量;2)用TextCNN从商品标题中抽取的向量;3)从阿里巴巴Behemoth平台抽取的商品Graph Embedding向量。

我们希望在embedding空间中,相似的商品距离相近,而不同的商品距离拉开。因此,我们将从商品图片、文本和协同过滤中得到的向量结合起来,经过一层全连接后,用triplet loss来学习embedding。对于每个商品,我们定义相同叶子类目的商品为其正例,不同叶子类目的商品为负例,因此triplet loss的计算如下:

4.png

通过最小化loss,商品和其正例的距离被要求小于和其负例的距离。

3.2 FOM模型

服饰搭配由一组时尚单品组成,其中每件单品对于其他单品有不同的关系权重。为了捕捉到商品之间的关联,我们基于双向的Transformer encoder的结构,设计了一个掩码任务。每次掩住搭配中的一件单品,我们让模型从几个候选单品选项中填空,从而学习到被掩住的商品和其他单品之间的关系。由于搭配中的每件单品都被强制学习其上下文商品,两两单品间的搭配合理性就会被self-attention机制学习到。

给定一套搭配F,F={f1,…,ft,…fn}。用一个特殊的标记[MASK]表示被掩住商品的表达,其他未被掩住的商品用其multi-modal embedding表达。整个搭配的输入表示为Fmask,因此FOM模型的loss表示为:

5.png

Pr(.)表示模型选择到正确的被掩住的商品的概率。

模型的架构图如下。模型基于Transformer encoder,但没有用position embedding,这是因为我们将搭配中的商品看做一个集合,而不是一个有序序列。首先,Fmask经过了两层全连接网络(我们定义为转换层)得到H0,然后连接到一个Transformer encoder的结构中。Transformer encoder包含多层,在每一层中,都包含一个Multi-Head self-attention(MH)的子层,和一个Position-wise Feed-Forward Network(PFFN)的子层。

6.png

经过l个子层之后,令gmask表示对应于输入[MASK]的输出,在gmask之上增加一个softmax层计算得到被掩住商品真实值的概率:

7.png

其中,hmask是从转换层得到的被掩住商品的embedding。我们可以用全部的商品来做softmax,但实际中这样的计算太过庞大,因此,我们随机在商品池中选择了3个未在此搭配中出现的商品,同时加上被掩住商品的真实值,构成了softmax的打分集合。

3.3 POG模型

在学习到商品间搭配合理性之后,我们开始思考如何同时加上用户个性化的信息,生成个性化的、合理的搭配。我们利用了翻译问题中常见的encoder-decoder结构,将用户的历史行为“翻译”成一套个性化的搭配。用用户点击过的商品序列U={u1,…ui,…um}去表示一个用户,用户点击过的搭配表示为F={f1,…ft,…fn}。在每一步,我们根据之前产出的搭配商品,联合用户点击过的商品序列,去预测下一个应该产出的搭配商品。因此,对于每一个(U,F)对,POG的目标函数可以写为:

8.png

Pr(.)表示在之前搭配商品和用户行为的情况下,产出第t+1个搭配商品的概率。

模型的架构图如下。在POG中,encoder将用户点击过的商品作为输入。给定一个特殊的符号[START],decoder开始每一步产出一个搭配商品。在每一步中,模型会自循环地将前一步的输出作为输入。整个生成过程在遇到特殊符号[END]时停止。我们将encoder命名为Per网络,将decoder命名为Gen网络。Per网络提供了用户个性化的信息,而Gen网络同时考虑了从Per传递过来的个性化信息,和其本身的搭配合理性信息。

9.png

在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个商品的概率为:

10.png

同样,这里我们选择3个随机选出的商品和正确商品组成softmax的作用对象。

在预测阶段,对于每一步的输出vt,我们从候选池中向量检索到一个最近的商品作为输出。当[END]标记出现时,生成过程结束。

11.png

3.4 滴搭平台

我们将POG部署到在线平台上,取名滴搭。滴搭平台包含选品、搭配生成、合图、个性化推荐等多个功能,支持百万级别的商品池。论文截稿时,已有超过100万阿里的运营在平台上生成过搭配,每天约600万搭配被智能化生成,约540万用户看到了他们个性化生成的搭配。

12.png

四、实验

4.1 搭配合理性
在以往搭配合理性评判的工作中,往往用FITB和CP两个指标来衡量:
FITB:从多个选项中选出正确答案,能够和其他商品组成一套合理的搭配。
CP:达人产出的搭配为正例,随机选择商品组成的搭配为负例。模型做判断是否为正确搭配。

  • 4.1.1 多模态对比

我们发现,在FITB和CP实验中,单独的模态,文本都是表现最好的。增加图像模态和CF模态,都对结果有正向效果。

13.png

  • 4.1.2 多模型对比

我们和之前的一些模型:F-LSTM、Bi-LSTM、SetNN进行了对比。需注意的是,F-LSTM和Bi-LSTM是基于序列的模型,它们都将输入当做一个有序序列。SetNN和FOM是基于集合的模型,它们不要特别指定输入的顺序。我们分别做了有序输入和无序输入两组实验:

14.png

在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的情况,如下:

15.png

从图中可以看出,无论用什么模型,CF方法的点击率都高于RR,而POG方法的点击率都高于CF。线上的部分例子展示如下:

16.png

联系我们:在猜你喜欢团队工作,你将要解决的问题域涉及对上亿用户在几十亿商品池中的推荐问题,不仅仅要考虑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.

目录
相关文章
|
7月前
|
存储 人工智能 Shell
Lua与C语言接口编程实战指南:打造高性能、灵活的程序
本文深入介绍了 Lua 与 C 语言的交互机制,重点分析了 Lua 作为胶水语言在嵌入式系统、游戏开发(如 Skynet、OpenResty)中的应用。内容涵盖 Lua 环境搭建、虚拟栈管理、C 与 Lua 的相互调用、闭包、Userdata 和注册表的使用等核心技术,并结合代码示例讲解了如何在实际项目中实现 Lua 与 C 的高效交互,适合希望掌握 Lua 扩展与嵌入开发的工程师参考学习。
878 0
|
6月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
8月前
|
测试技术 API 开发者
淘宝关键词搜索商品列表API接入指南(含Python示例)
淘宝关键词搜索商品列表API是淘宝开放平台的核心接口,支持通过关键词检索商品,适用于比价、选品、市场分析等场景。接口提供丰富的筛选与排序功能,返回结构化数据,含商品ID、标题、价格、销量等信息。开发者可使用Python调用,需注意频率限制与错误处理,建议先在沙箱环境测试。
|
8月前
|
监控 API 数据处理
淘宝商品详情API响应数据解析的详细说明
本内容介绍了淘宝商品详情API的调用与数据解析方法,涵盖商品基础信息、价格、库存、规格、促销、物流等关键数据的获取方式。提供了核心接口如taobao.item.get、taobao.itemprops.get、taobao.item.sku.get的功能说明及Python请求示例,适用于跨平台数据整合、价格监控、自动化运营等场景,并提示了字段兼容性、错误处理及数据更新等注意事项。
|
9月前
|
JSON API 数据格式
深入研究:淘宝天猫关键词搜索接口详解
淘宝和天猫提供关键词搜索商品的API接口,支持开发者按关键词获取商品列表及相关数据。功能包括通过搜索关键词(q)返回商品基本信息,如ID、标题、价格、图片、销量等。支持排序(sort)、分页(page_no/page_size)、价格区间筛选(start_price/end_price)及分类搜索(cat)。返回JSON格式数据,含商品ID、标题、价格、图片链接、详情页链接和销量等字段。
|
前端开发 JavaScript
React技术栈-React UI之ant-design使用入门
关于React技术栈中使用ant-design库的入门教程,包括了创建React应用、搭建开发环境、配置按需加载、编写和运行代码的步骤,以及遇到错误的解决方法。
380 2
React技术栈-React UI之ant-design使用入门
|
人工智能 文字识别 并行计算
行业实践 | 基于Qwen2-VL实现医疗表单结构化输出
本项目针对不同医院检查报告单样式差异大、手机拍摄质量差等问题,传统OCR识别效果不佳的情况,探索并选定了Qwen2-vl系列视觉语言模型。通过微调和优化,模型在识别准确率上显著提升,能够精准识别并结构化输出报告单信息,支持整张报告单及特定项目的识别。系统采用FastAPI封装接口,Gradio构建展示界面,具备高效、灵活的应用特性。未来该方案可扩展至多种文本识别场景,助力行业数字化转型。
1289 20
|
存储 并行计算 安全
C++多线程应用
【10月更文挑战第29天】C++ 中的多线程应用广泛,常见场景包括并行计算、网络编程中的并发服务器和图形用户界面(GUI)应用。通过多线程可以显著提升计算速度和响应能力。示例代码展示了如何使用 `pthread` 库创建和管理线程。注意事项包括数据同步与互斥、线程间通信和线程安全的类设计,以确保程序的正确性和稳定性。
428 5
|
人工智能
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
LangGraph 是一个基于图结构的开源框架,专为构建状态化、多代理系统设计,支持循环、持久性和人工干预,适用于复杂的工作流自动化。
2256 12
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
|
人工智能 数据可视化 API
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
1116 1

热门文章

最新文章