数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二十、EGES [2018](Matching 阶段)
互联网技术不断重塑商业格局,如今电商无处不在。阿里巴巴是中国最大的电商平台,它使得全世界各地的个人或公司都可以在线开展业务。阿里巴巴拥有
10
亿用户,2017
年的商品交易总额Gross Merchandise Volume: GMV
为37670
亿元,2017
年的收入为1580
亿元。在著名的 “双十一” 这个中国最大的网络购物节,2017
年的GMV
约为1680
亿元。在阿里巴巴的各类在线平台中,最大的在线consumer-to-consumer: C2C
平台淘宝贡献了阿里巴巴电商总流量的75%
。淘宝拥有
10
亿用户和20
亿item
(即商品),最关键的问题是如何帮助用户快速找到需要的、感兴趣的item
。为了实现这一目标,基于用户偏好preference
从而为用户提供感兴趣的item
的推荐技术成为淘宝的关键技术。例如,手机淘宝首页(如下图所示)是根据用户历史行为而通过推荐技术生成的,贡献了总推荐流量的40%
。此外,推荐贡献了淘宝的大部分收入和流量。总之,推荐已经成为淘宝和阿里巴巴的GMV
和收入的重要引擎。下图中,用虚线矩形框突出显示的区域是针对淘宝上十亿用户的个性化。为了更好的用户体验user experience
,我们还生成了吸引人的图像和文本描述。尽管学术界和工业界的各种推荐方法取得了成功,例如协同过滤
collaborative filtering: CF
、基于内容的方法、基于深度学习的方法,但是由于用户和item
的十亿级的规模,这些方法在淘宝上面临的问题变得更加严重。推荐系统在淘宝面临三大技术挑战:可扩展性
scalability
:尽管很多现有的推荐方法在较小规模的数据集(即数百万用户和item
)上运行良好,但是在淘宝的、大得多的数据集(即10
亿用户和20
亿item
)上无法运行。稀疏性
sparsity
:由于用户往往只与少量item
进行交互,因此很难训练出准确的推荐模型,尤其是对于交互次数很少的用户或item
。这通常被称作稀疏性问题。冷启动
cold start
:在淘宝,每小时都有数百万新的item
不断上传。这些item
没有用户行为。处理这些item
或预测用户对这些item
的偏好具有挑战性,这就是所谓的冷启动问题。稀疏性和冷启动都是因为数据太少导致的,冷启动是完全没有历史交互,而稀疏性是只有很少的历史交互。
为了解决淘宝的这些挑战,我们在淘宝的技术平台中设计了一个两阶段的推荐框架。第一阶段是
matching
,第二阶段是ranking
。- 在
matching
阶段,我们为每个用户,根据该用户的历史交互的每个item
生成相似item
的候选集合candidate set
。 - 在
ranking
阶段,我们训练一个深度神经网络模型,该模型根据每个用户的偏好对候选item
进行排序。
由于上述挑战,在这两个阶段我们都必须面对不同的独特问题
different unique problems
。此外,每个阶段的目标不同,导致技术解决方案也不同。在论文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》
中,我们专注于如何解决matching
阶段的挑战,其中核心任务是根据用户的行为计算所有item
之间的pairwise
相似性similarity
。在获得item
的pairwise
相似性之后,我们可以生成候选item
的集合,以便在ranking
阶段进一步个性化。为了实现这一点,我们提出从用户的行为历史构建一个
item graph
,然后应用state-of-art
的graph embedding
方法来学习每个item
的embedding
,我们称之为Base Graph Embedding: BGE
。通过这种方式,我们可以根据从item embedding
向量的内积计算出的相似性来生成候选item
集合。注意,以前的工作使用CF-based
方法来计算item
之间的相似性,而CF-based
方法仅考虑用户行为历史中item
的共现co-occurrence
。但是在我们的工作中,通过在item graph
中使用随机游走,我们可以捕获item
之间的高阶相似性。因此,我们的方法优于CF-based
方法。然而,在很少交互、甚至没有交互的情况下学习
item
的精确embedding
仍然是一个挑战。为了缓解这个问题,我们提出使用辅助信息side information
来提升enhance
embedding
过程,我们称之为Graph Embedding with Side information: GES
。例如,属于同一类目category
或同一品牌brand
的item
在embedding
空间中应该更接近。通过这种方式,我们可以在很少交互甚至没有交互的情况下获得item
的精确embedding
。然而,在淘宝中有数百种类型的辅助信息,如类目、品牌、价格等等。直观而言,不同的辅助信息对学习
item
的embedding
应该有不同的贡献。因此,我们进一步提出了一种在学习带辅助信息的embedding
时的加权机制,称作Enhanced Graph Embedding with Side information: EGES
。本文主要贡献:
- 基于淘宝多年的实践经验,我们设计了一种有效的启发式
heuristic
方法,从淘宝上十亿用户的行为历史构建item graph
。 - 我们提出了三种
embedding
方法(BGE、GES、EGES
)来学习淘宝中20
亿item
的embedding
。我们进行离线实验以证明BGE、GES、EGES
和其它embedding
方法相比的有效性。 - 为了在淘宝中为十亿级用户和
item
部署所提出的方法,我们在我们团队搭建的XTensorflow: XTF
平台上构建了graph embedding system
。我们表明,所提出的框架显著提高了手机淘宝App
的推荐性能,同时满足了双十一当天训练效率和serving
的即时响应instant response
的需求。
相关工作:这里我们简要回顾
graph embedding
、带辅助信息的graph embedding
、以及用于推荐的graph embedding
的相关工作。Graph Embedding
:graph embedding
算法已经作为一种通用的网络表示方法,它们已被用于很多实际application
。在过去的几年里,该领域有很多研究专注于设计新的embedding
方法。这些方法可以分为三类:LINE
等分解方法尝试近似分解邻接矩阵并保留一阶和二阶邻近性。- 深度学习方法增强
enhance
了模型捕获图中非线性的能力。 - 基于随机游走的技术在图上使用随机游走来获得非常有效的
node representation
,因此可用于超大规模网络。
在本文中,我们的
embedding
框架基于随机游走。带辅助信息的
Graph Embedding
:上述graph embedding
方法仅使用网络的拓扑结构,存在稀疏性和冷启动的问题。近年来,很多工作试图结合辅助信息来增强graph embedding
方法。大多数工作基于具有相似辅助信息的节点在embedding
空间中应该更接近的假设来构建他们的任务。为了实现这一点,《Discriminative deep random walk for network classification》
和《Max-margin deepwalk: Discriminative learning of network representation》
提出了一个联合框架来优化带分类器函数的embedding
目标函数。论文《Representation learning of knowledge graphs with hierarchical types 》
进一步将复杂的知识图谱嵌入到具有层级结构hierarchical structure
(如子类目)的节点中。此外,也有一部分工作将节点相关的文本信息融合到
graph embedding
中。另外,《Heterogeneous network embedding via deep architectures》
提出了一个深度学习框架来为异质graph embedding
同时处理文本和图像特征。在本文中,我们主要处理淘宝中
item
相关的离散辅助信息,例如类目category
、品牌brand
、价格等,并在embedding
框架中设计了一个hidden layer
来聚合不同类型的辅助信息。用于推荐的
Graph Embedding
:推荐一直是graph embedding
最流行的下游任务之一。有了node representation
,就可以使用各种预测模型进行推荐。在
《Personalized entity recommendation: A heterogeneous information network approach》
和《Meta-graph based recommendation fusion over heterogeneous information networks》
中,user embedding
和item embedding
分别在meta-path
和meta-graph
的监督下在异质信息网络heterogeneous information network
中学习。《Personalized entity recommendation: A heterogeneous information network approach》
为推荐任务提出了一个线性模型来聚合embedding
。《Meta-graph based recommendation fusion over heterogeneous information networks》
提出将分解机factorization machine: FM
应用于embedding
以进行推荐。
《Collaborative knowledge base embedding for recommender systems》
提出了一个联合embedding
框架,从而为推荐任务学习graph, text, image
的embedding
。《Scalable graph embedding for asymmetric proximity》
提出了graph embedding
来捕获节点推荐node recommendation
的非对称相似性asymmetric similarity
。在本文中,我们的
graph embedding
方法被集成到一个两阶段推荐平台中。因此,embedding
的性能将直接影响最终的推荐结果。
20.1 模型
我们首先介绍
graph embedding
的基础知识,然后详细说明我们如何根据用户的行为历史来构建item graph
,最后我们研究了在淘宝中学习item embedding
的方法。Graph Embedding
:这里我们概述了graph embedding
,以及最流行的一种graph embedding
方法 :DeepWalk
。我们是在DeepWalk
的基础上提出了matching
阶段的graph embedding
方法。给定一个图 $ \mathcal G = (\mathcal V, \mathcal E) $ ,其中 $ \mathcal V $ 代表节点集合、 $ \mathcal E $ 代表边集合。
graph embedding
是为每个节点 $ v\in \mathcal V $ 在低维空间 $ \mathbb R^d $ 中学习一个低维representation
,其中 $ d\ll |\mathcal V| $ 。换句话讲,我们的目标是学习一个映射函数 $ \Phi:\mathcal V\rightarrow \mathbb R^d $ ,即把 $ \mathcal V $ 中的每个节点表示为一个 $ d $ 维的向量。受到
$ \min_\Phi\sum_{v\in \mathcal V}\sum_{c\in \mathcal N(v)}-\log p(c\mid \Phi(v)) $word2vec
的启发,Perozzi
等人提出了DeepWalk
来学习图中每个节点的embedding
。他们首先通过在图中运行随机游走来生成节点序列,然后应用Skip-Gram
算法来学习图中每个节点的representation
。为了保持图的拓扑结构,他们需要解决以下最优化问题:其中:
- $ \mathcal N(v) $ 为节点 $ v $ 的邻居节点集合,它可以定义为节点 $ v $ 的
1-hop
或者2-hop
节点集合。 - $ p(c\mid \Phi(v)) $ 定义了在给定节点 $ v $ 的情况下,拥有上下文节点 $ c $ 的条件概率。
接下来,我们首先介绍如何根据用户的历史行为构建
item graph
,然后提出基于DeepWalk
的graph embedding
方法,从而为淘宝中的20
亿item
生成低维representation
。- $ \mathcal N(v) $ 为节点 $ v $ 的邻居节点集合,它可以定义为节点 $ v $ 的
构建
Item Graph
:这里,我们将详细说明从用户历史行为构建item graph
。实际上,用户在淘宝上的行为往往是连续的,如图
(a)
所示。以往的CF-based
方法仅考虑item
的共现co-occurrence
,而忽略了可以更准确地反映用户偏好的序列信息sequential information
。 然而,不可能使用用户的全部历史记录(来作为一个序列),有两个原因:- 条目
entry
太多,导致计算成本和空间成本太高。 - 用户的兴趣会随着时间而漂移
drift
。
因此在实践中,我们设置了一个时间窗口,仅选择用户在窗口内的行为。这称为
session-based
用户行为。根据经验,时间窗口的大小为一个小时。例如图(a)
中,包含用户 $ u_1 $ 的一个session
、用户 $ u_2 $ 的两个session
、用户 $ u_3 $ 的两个session
。在我们获得
session-based
用户行为之后,如果两个item
相连地consecutively
出现,则它们通过有向边连接。如下图(b)
所示:item D
和item A
相连,因为用户 $ u_1 $ 先后陆续访问了item D
和item A
。这种图构建方式捕获了序列关系。如果是连接
session
内的任意两个item
,则捕获了共现关系。利用淘宝上所有用户的协同行为
collaborative behaviors
,我们根据所有用户行为中两个相连item
的出现总数为每条边 $ e_{i,j} $ 分配一个权重。具体而言,边 $ e_{i,j} $ 的权重等于所有用户行为历史中item
$ i $ 转移到item
$ j $ 的频次。通过这种方式,构建的item graph
可以基于淘宝中所有用户的行为来表示不同item
之间的相似性。图(b)
为根据图 $ (a) $ 得到的加权有向图 $ \mathcal G=(\mathcal V,\mathcal E) $ 。在实践中,我们在抽取用户行为序列之前需要过滤掉无效数据
invalid data
和异常行为abnormal behaviors
,从而消除噪声。目前,以下行为在我们的系统中被视为噪声:- 如果点击之后停留的时间少于一秒钟,那么点击可能是无意的,则需要移除。
- 淘宝上有一些 “过度活跃” 的用户,他们实际上是作弊用户
spam users
。根据我们在淘宝上的长期观察,如果单个用户在不到三个月内,总购买数量大于1000
或者总点击数量大于3500
,则该用户很可能是作弊用户。我们需要过滤掉这些用户的行为。 - 淘宝的零售商不断地更新商品的详细信息。在极端情况下,一个商品在经过长时间的更新之后,在淘宝上可能变成完全不同的商品,即使它们具有相同的商品
id
。因此,我们删除了这些id
相关的item
(即更新前后,该id
代表了完全不同的商品)。
- 条目
Base Graph Embedding: BGE
:在得到有向加权图(记作 $ \mathcal G=(\mathcal V,\mathcal E ) $ )之后,我们采用DeepWalk
来学习每个节点在 $ \mathcal G $ 中的embedding
。令 $ \mathbf M $ 表示 $ \mathcal G $ 的邻接矩阵, $ M_{i,j} $ 表示从节点 $ i $ 指向节点 $ j $ 的边的权重。我们首先基于随机游走生成节点序列,然后对节点序列运行
$ p(v_j\mid v_i) = \begin{cases} \frac{M_{i,j}}{\sum_{j^\prime\in \mathcal N_+(v_i)}M_{i,j^\prime}}&, v_j\in \mathcal N_+(v_i)\\ 0 &, \text{else} \end{cases} $Skip-Gram
算法。随机游走的转移概率定义为:其中 $ \mathcal N_+(v_i) $ 为
outlink
邻居的集合,即 $ v_i $ 的出边outedge
指向的节点集合。通过运行随机游走,我们可以生成许多序列,如下图
$ \min_\Phi -\log p(\{v_{i-K},\cdots,v_{i-1},v_{i+1},\cdots,v_{i+K}\}\mid \Phi(v_i)) $(c)
所示。然后我们应用Skip-Gram
算法(如图(d)
所示)来学习节点embedding
,从而最大化随机游走序列中两个节点的共现概率occurrence probability
。这导致了以下的最优化问题:其中 $ K $ 是随机游走序列中上下文节点的窗口大小。
使用独立性假设,我们有:
$ p(\{v_{i-K},\cdots,v_{i-1},v_{i+1},\cdots,v_{i+K}\}\mid \Phi(v_i)) = \prod_{j=i-K,j\ne i}^{i+K} p(v_j\mid \Phi(v_i)) $其中:
$ p(v_j\mid \Phi(v_i)) = \frac{\exp\left(\Phi(v_j)^\top \Phi(v_i) \right) }{\sum_{j^\prime\in \mathcal V}{\exp\left(\Phi(v_{j^\prime})^\top \Phi(v_i) \right) }} $应用负采样技术,则最优化问题可以转化为:
$ \min_{\Phi} \log \sigma\left(\Phi(v_j)^\top \Phi(v_i) \right) + \sum_{t\in \mathcal S(v_i) } \log \sigma\left(-\Phi(v_t)^\top \Phi(v_i) \right) $其中: $ \mathcal S(v_i) $ 表示节点 $ v_i $ 的负样本集合, $ \sigma(\cdot) $ 为
sigmoid
函数。根据经验,负样本规模越大则最终结果越好。Graph Embedding with Side information: GES
:通过应用上述embedding
方法,我们可以学习淘宝中所有item
的embedding
,从而捕获用户行为序列中的高阶相似性。而这种高阶相似性在以前的CF-based
方法中被忽略。然而,学习 “冷启动”item
(即那些没有用户交互的item
)的accurate embedding
仍然具有挑战性。为了解决冷启动问题,我们提出使用附加到冷启动
item
的辅助信息side information
来增强enhance
BGE
。在电商推荐系统的上下文中,辅助信息指的是item
的类目category
、门店shop
、价格price
等信息,这些信息在ranking
阶段被广泛用作关键特征,但是在matching
阶段很少使用。我们可以通过在graph embedding
中融合辅助信息来缓解冷启动问题。例如,优衣库(相同门店)的两件帽衫(相同类目)可能看起来很像;喜欢尼康镜头的用户也可能对佳能相机(相似类目、相似品牌)感兴趣。这意味着具有相似辅助信息的item
应该在embedding
空间中更接近。基于这个假设,我们提出了如下图所示的GES
方法。我们使用 $ \mathbf E $ 来表示
item
或辅助信息的embedding
矩阵,具体而言:- $ \mathbf E ^0\in \mathbb R^{|\mathcal V|\times d} $ 表示
item embedding
矩阵。 - $ \mathbf E^f\in \mathbb R^{|\mathcal V|\times d},1\le f\le F $ 表示第 $ f $ 种类型辅助信息的
embedding
矩阵,一共有 $ F $ 种类型的辅助信息。
其中 $ d $ 为
embedding
维度。注意,item embedding
维度和辅助信息embedding
维度都设为相同的值。为了融合辅助信息,我们将
$ \mathbf{\vec h}_v = \frac{1}{F+1}\sum_{f=0}^F \mathbf{\vec e}_v^f $item
$ v $ 的 $ F+1 $ 个embedding
向量拼接起来,并用均值池化来来聚合item
$ v $ 相关的所有embedding
,即:其中: $ \mathbf{\vec h}_v $ 为
item
$ v $ 聚合后的embedding
; $ \mathbf{\vec e}_v^f $ 为 $ \mathbf E^f $ 的第 $ v $ 行,表示item
$ v $ 的item embedding
向量或者第 $ f $ 类辅助信息的embedding
向量。所有节点聚合后的embedding
构成了embedding
矩阵 $ \mathbf H $ 。$ \mathbf E^0 $ 是
graph embedding
矩阵,它是通过DeepWalk
算法得到。但是这里辅助信息embedding
矩阵 $ \mathbf E^f $ 如何得到?论文并未给出明确的回答。通过这种方式,我们融合了辅助信息,使得具有相似辅助信息的
item
在embedding
空间中更为接近。这使得冷启动item
的embedding
更为准确accurate
,并提高了离线和在线性能。下图为
GES
和EGES
的总体架构。SI
表示辅助信息side information
,SI 0
表示item
本身。Sparse Features
往往是item ID
以及不同SI
的one-hot
向量。Dense Embeddings
是item
和相应SI
的representation
。Hidden Representation
是一个item
及其相应SI
的embedding
聚合结果。
- $ \mathbf E ^0\in \mathbb R^{|\mathcal V|\times d} $ 表示
Enhanced Graph Embedding with Side information: EGES
:尽管GES
的性能有所提升,但是在embedding
过程中融合不同类型的辅助信息时仍然存在问题。在GES
中,我们假设不同类型的辅助信息对于最终embedding
的贡献相等,这不符合现实。例如:购买了iPhone
的用户会因为Apple
这个品牌而倾向于查看Macbook
或iPad
;用户可能在同一家门店购买不同品牌的衣服,因为比较方便convenience
而且价格更低(因为可能存在折扣)。因此,不同类型的辅助信息对用户行为中item
共现co-occurrence
的贡献不同。为了解决这个问题,我们提出了
EGES
方法来聚合不同类型的辅助信息。EGES
框架和GES
相同,它的基本思想是:不同类型的辅助信息在它们的embedding
被聚合时有不同的贡献。因此,我们提出一个加权均值池化层来聚合辅助信息的embedding
。定义一个加权的权重矩阵 $ \mathbf A\in \mathbb R^{|\mathcal V|\times (F+1)} $ ,其中 $ A_{i,j} $ 表示在第 $ i $ 个
item
中,第 $ j $ 种类型辅助信息的加权系数。- $ A[:,0] $ (即 $ \mathbf A $ 的第一列)表示
item embedding
自己的权重。 $ A[v,0] $ 表示item
$ v $ 的item embedding
权重。 - $ A[:,f], 1\le f\le F $ (即 $ \mathbf A $ 的第 $ f $ 列)表示第 $ f $ 种辅助信息的权重。 $ A[v,f] $ 表示
item
$ v $ 的第 $ f $ 种辅助信息的权重。
注意:这里对不同的节点设置个性化的权重分布,而不是采用统一的权重分布。考虑到
embedding
参数数量为 $ |\mathcal V|\times d\times (F+1) $ ,因此权重矩阵的参数规模是embedding
参数的 $ 1/d $ 。那么加权均值聚合的结果为:
$ \mathbf{\vec h}_v = \frac{\sum_{f=0}^F \exp\left(A[v,f]\right)\mathbf{\vec e}_v^f}{\sum_{f=0}^F \exp\left(A[v,f]\right)} $这里我们使用 $ \exp(\cdot) $ 函数的原因是为了确保辅助信息的权重大于零。
给定节点 $ v $ 以及上下文节点 $ c $ ,令 $ \mathbf{\vec z}_c\in \mathbb R^d $ 为上下文节点 $ c $ 的
$ \mathcal L(v,c,y) = -\left[y\log \left(\sigma\left(\mathbf{\vec h}_v^\top \mathbf{\vec z}_c\right)\right) + (1-y)\log \left(1-\sigma\left(\mathbf{\vec h}_v^\top \mathbf{\vec z}_c\right)\right)\right] $embedding
。令 $ y\in \{0,1\} $ 为label
(如是否点击),则EGES
的目标函数为:我们基于梯度下降法来求解最优化问题,其梯度为:
$ \nabla_{\mathbf{\vec z}_c} \mathcal L = \left(\sigma\left(\mathbf{\vec h}_v^\top \mathbf{\vec z}_c\right)-y\right) \mathbf{\vec h}_v $ $ \frac{\partial \mathcal L}{\partial A[v,f]} = \frac{\partial \mathcal L}{\partial {\mathbf{\vec h}}_v}\frac{\partial {\mathbf{\vec h}}_v}{\partial A[v,f]} \\
=\left(\sigma\left(\mathbf{\vec h}_v^\top \mathbf{\vec z}_c\right)-y\right)\mathbf{\vec z}_c\cdot \frac{\left(\sum_{f^\prime=0}^F \exp\left(A[v,f^\prime]\right)\right)\exp\left(A[v,f]\right)\mathbf{\vec e}_v^f - \exp\left(A[v,f]\right)\sum_{f^\prime=0}^F\exp\left(A[v,f^\prime]\right)\mathbf{\vec e}_v^{f^\prime}}{\left(\sum_{f^\prime =0}^F \exp\left(A[v,f^\prime]\right)\right)^2} $ $ \nabla_{\mathbf{\vec e}_v^f} \mathcal L= \nabla_{\mathbf{\vec h}_v}\mathcal L \nabla_{\mathbf {\vec e}_v^f} \mathbf{\vec h}_v = \frac{\exp\left(A[v,f]\right)}{\sum_{f^\prime=0}^F\exp\left(A[v,f^\prime]\right)}\left(\sigma\left(\mathbf{\vec h}_v^\top\mathbf{\vec z}_c\right)-y\right) \mathbf{\vec z}_c $对于冷启动
item
,虽然item embedding
$ \mathbf{\vec e}^0 $ 未知,但是辅助信息embedding
$ \mathbf{\vec e}^f,f\gt 0 $ 可以获取。- $ A[:,0] $ (即 $ \mathbf A $ 的第一列)表示
EGES
框架算法:输入:
- 图 $ \mathcal G=(\mathcal V,\mathcal E) $
- 辅助信息 $ \mathcal S $
- 每个节点作为起始点的随机游走数量 $ N $
- 随机游走序列长度 $ L $
Skip-Gram
窗口大小 $ K $- 负样本数量 $ N^- $
embedding
维度 $ d $
输出:
item embedding
矩阵和辅助信息embedding
矩阵 $ \mathbf E^0,\cdots,\mathbf E^F $ 。- 权重矩阵 $ \mathbf A $ 。
算法步骤:
初始化 $ \mathbf E^0,\cdots,\mathbf E^F,\mathbf A $ 。
迭代 $ i =1,\cdots,N $ ,迭代步骤为:
迭代 $ v\in \mathcal V $ ,迭代步骤为:
- 通过随机游走得到序列: $ \text{SEQ = RandomWalk}(\mathcal G,v,L) $ 。随机游走概率由 $ p(v_j\mid v_i) $ 决定。
- 执行加权
SkipGram
算法: $ \text{WeightedSkipGram}(\mathbf E^0,\cdots,\mathbf E^F,\mathbf A,K,N^-,L,\text{SEQ}) $ 。
返回 $ \mathbf E^0,\cdots,\mathbf E^F,\mathbf A $ 。
加权
Skip-Gram
算法:输入:
- $ \mathbf E^0,\cdots,\mathbf E^K,\mathbf A $ 。
Skip-Gram
窗口大小 $ K $- 负样本数量 $ N^- $
- 随机游走序列长度 $ L $
- 随机游走序列
SEQ
输出:更新后的 $ \mathbf E^0,\cdots,\mathbf E^F,\mathbf A $ 。
算法步骤:
迭代, $ i=1,\cdots,L $ ,迭代步骤为:
$ v=\text{SEQ}[i] $ 为当前节点。遍历窗口, $ v=\max(0,i-K),\cdots,\min(i+K,L); j\ne i $ ,迭代步骤为:
正样本梯度更新(
label = 1
):$ c=\text{SEQ}[j] $
更新 $ \mathbf{\vec z}_c $ : $ \mathbf{\vec z}_c\leftarrow \mathbf{\vec z}_c-\eta\times \nabla_{\mathbf{\vec z}_c} \mathcal L $ 。
迭代, $ f=0,\cdots,F $ ,更新:
$ A[v,f]\leftarrow A[v,f] - \eta\times \frac{\partial \mathcal L}{\partial A[v,f]}\\ \mathbf{\vec e}_v^f\leftarrow \mathbf{\vec e}_{v}^f-\eta\times \nabla_{\mathbf{\vec e}_v^f} \mathcal L $
负样本梯度更新(
label = 0
), $ t=0,\cdots,N^- $ ,迭代过程为:从 $ \mathcal V $ 中负采样出顶点 $ c $ 。
更新 $ \mathbf{\vec z}_c $ : $ \mathbf{\vec z}_c\leftarrow \mathbf{\vec z}_c-\eta\times \nabla_{\mathbf{\vec z}_c} \mathcal L $ 。
迭代, $ f=0,\cdots,F $ ,更新:
$ A[v,f]\leftarrow A[v,f] - \eta\times \frac{\partial \mathcal L}{\partial A[v,f]}\\ \mathbf{\vec e}_v^f\leftarrow \mathbf{\vec e}_{v}^f-\eta\times \nabla_{\mathbf{\vec e}_v^f} \mathcal L $
未来方向:
- 首先是在
graph embedding
方法中利用attention
机制,这可以提供更大的灵活性来学习不同类型辅助信息的权重。 - 其次是将文本信息纳入到我们的方法中,从而利用淘宝
item
中大量的评论信息。
- 首先是在
20.2 系统部署
这里我们介绍我们的
graph embedding
方法在淘宝中的实现和部署。我们首先对支撑淘宝的整个推荐平台进行high-level
的介绍,然后详细说明与我们embedding
方法相关的模块。下图给出了淘宝推荐平台的架构。该平台由两个子系统组成:
online
和offline
。在线子系统主要组件
component
是淘宝个性化平台Taobao Personality Platform: TPP
和排序服务平台Ranking Service Platform: RSP
。典型的工作流程如下图所示:- 当用户打开手机淘宝
App
时,TPP
抽取用户的最新信息并从离线子系统中检索一组候选item
,然后将候选item
馈送到RSP
。 RSP
使用微调的DNN
模型对候选item
集合进行排序,并将排序结果返回给TPP
。- 用户在淘宝的访问行为被收集并保存为离线子系统的日志数据。
- 当用户打开手机淘宝
实现和部署
graph embedding
方法的离线子系统的工作流如下所示:包含用户行为的日志被检索。
item graph
是基于用户的行为构建的。在实践中,我们选择最近三个月的日志。在生成
session-based
用户行为序列之前,我们会对数据执行反作弊处理anti-spam processing
。 剩余的日志包含大约6000
亿条,然后根据前面所述方法构建item graph
。为了运行我们的
graph embedding
方法,我们采用了以下的解决方案:- 将整个
graph
拆分为多个子图,这些子图可以在淘宝的Open Data Processing Service: ODPS
分布式平台中并行处理。每个子图中大约有5000
万个节点。 - 为了在图中生成随机游走序列,我们在
ODPS
中使用我们基于迭代iteration-based
的分布式graph framework
。随机游走生成的序列总量为1500
亿左右。
- 将整个
为了实现所提出的
embedding
算法,我们的XTF
平台使用了100
个GPU
。在部署的平台上,离线子系统中的所有模块(包括日志检索、反作弊处理、item graph
构建、随机游走序列生成、embedding
、item-to-item
相似度计算)都可以在不到六个小时内处理完毕。因此,我们的推荐服务可以在很短的时间内响应用户的最新行为。
20.3 实验
这里我们进行了大量的实验来证明我们提出的方法的有效性。
首先,我们通过链接预测任务对这些方法进行离线评估。然后,我们在手机淘宝
App
上报告在线实验结果。最后,我们展示了一些真实案例,从而在淘宝上深入洞察我们提出的方法。
20.3.1 离线评估
链接预测
Link Prediction
:链接预测任务用于离线实验,因为它是graph
中的一个基础问题fundamental problem
。给定一个去掉了某些边的
graph
,链接预测任务是预测链接的出现。我们随机选择1/3
的边作为测试集中的ground truth
并从graph
中移除,剩余的graph
作为训练集。我们随机选择未链接的节点pair
对作为负样本并加入到测试集,负样本数量和ground truth
数量相等。为了评估链接预测的性能,我们选择AUC
作为评估指标。数据集:我们选择使用两个数据集进行链接预测任务,它们包含不同类型的辅助信息。
Amazon
数据集:来自Amazon Electronics
的数据集。item graph
通过 “共同购买co-purchasing
“ 关系(在提供的数据中表示为also_bought
)来构建,并使用了三种类型的辅助信息:类目、子类目、品牌。Taobao
数据集:来自手机淘宝App
的数据集。item graph
根据前述方法来构建。需要注意的是,为了效率和效果,Taobao
数据集使用了十二种类型的辅助信息,包括:商家retailer
、品牌、购买力水平purchase level
、年龄、性别、款式style
等等。根据多年在淘宝的实践经验,这些类型的辅助信息已经被证明是有用的。
这两个数据集的统计信息如下表所示(
#SI
表示辅助信息数量)。我们可以看到这两个数据集的稀疏性都大于99%
。baseline
方法:我们对比了四种方法:BGE
、LINE
、GES
、EGES
。LINE
捕获了graph embedding
中的一阶邻近性和二阶邻近性。我们使用作者提供的实现,并使用一阶邻近性和二阶邻近性运行它,结果分别表示为LINE(1st)
和LINE(2nd)
。- 我们实现了所提出的
BGE
、GES
、EGES
等三种方法。
配置:
- 所有方法的
embedding
维度均设为160
。 - 对于我们的
BGE/GES/EGES
,随机游走的长度为10
,每个节点开始的游走次数为20
,上下文窗口大小为5
。
- 所有方法的
实验结果如下表所示,括号中的百分数是相对于
BGE
的提升比例。可以看到:GES
和EGES
在两个数据集上的AUC
都优于BGE
、LINE(1st)
、LINE(2st)
。这证明了所提出方法的有效性。换句话讲,稀疏性问题通过结合辅助信息得到了缓解。比较两个数据集上的提升,我们可以看到
Taobao
数据集上的提升更为显著。我们将此归因于Taobao
数据集上使用的大量有效且信息丰富的辅助信息。当在
GES
和EGES
之间比较,我们可以看到Amazon
数据集上的性能提升比Taobao
数据集更大。可能是因为Taobao
上GES
的表现已经很不错了,即0.97
。因此EGES
的改善并不突出。而在Amazon
数据集上,EGES
显著优于GES
。
基于这些结果,我们可以观察到融合辅助信息对于
graph embedding
非常有用,并且可以通过对各种辅助信息的embedding
进行加权聚合来进一步提高准确性accuracy
。
20.3.2 在线评估
我们在
A/B test
框架中进行在线实验,实验目标是手机淘宝App
首页的点击率Click-Through-Rate: CTR
。我们实现了上面的
graph embedding
方法,然后为每个item
生成一些相似的item
作为候选推荐。淘宝首页的最终推荐结果由基于dnn
模型的ranking
引擎生成。在实验中,我们在ranking
阶段使用相同的方法对候选item
进行排序。如前所述,相似item
的质量直接影响了推荐结果。因此,推荐性能(即CTR
)可以代表不同方法在matching
阶段的有效性。我们将这四种方法部署在一个
A/B test
框架中,2017
年11
月连续7
天的实验结果如下图所示。其中,Base
代表一种item-based CF
方法,在部署graph embedding
方法之前已经在淘宝内部广泛使用。Base
方法根据item
共现co-occurrence
和用户投票权重计算两个item
之间的相似度,并且相似度函数经过精心调优从而适合淘宝的业务。可以看到:
EGES
和GES
在CTR
方面始终优于BGE
和Base
,这证明了在graph embedding
中融合辅助信息的有效性。- 此外,
Base
的CTR
优于BGE
。这意味着经过精心调优的CF-based
方法可以击败简单的embedding
方法,因为在Base
方法中已经利用了大量人工设计的启发式策略。 EGES
始终优于GES
,这和离线实验结果相一致。这进一步证明了辅助信息的加权聚合优于平均聚合。
20.3.3 案例研究
这里我们展示了淘宝中的一些真实案例来说明我们方法的有效性。这些案例从三个方面来研究:
EGES embedding
的可视化、冷启动item
、EGES
中的加权权重。embedding
可视化:我们通过tensorflow
提供的可视化工具,将EGES
学到的item embedding
可视化,结果如下图所示。下图为一组随机选择的运动鞋的embedding
的可视化,item embedding
通过PCA
投影到二维平面中,其中不同颜色代表不同的类目。从图
(a)
中,我们可以看到不同类目的鞋子在不同的cluster
中。这里一种颜色代表一类鞋子,例如羽毛球鞋、乒乓球鞋、足球鞋。这证明了融合辅助信息来学习
emebdding
的有效性,即具有相似辅助信息的item
应该在embedding
空间中更接近。从图
(b)
中,我们进一步分析了羽毛球鞋、乒乓球鞋、足球鞋三种鞋子的embedding
。我们观察到一个有趣的现象:羽毛球鞋和乒乓球鞋的embedding
距离更接近、和足球鞋的embedding
距离更远。这一现象可以解释为:在中国,喜欢乒乓球的人和喜欢羽毛球的人有很多重叠。然而喜欢足球的人和喜欢室内运动(如乒乓球、羽毛球)的人,有很大的不同。从这个意义上讲,向看过乒乓球鞋的人推荐羽毛球鞋,要比推荐足球鞋要好得多。
冷启动
item
:对于淘宝中的新item
,无法从item graph
中学习到embedding
,并且之前CF-based
的方法也无法处理冷启动item
。因此,我们利用新item
的辅助信息的平均embedding
来表示一个冷启动item
。然后我们根据item embedding
的内积从所有item
中检索和冷启动item
最相似的item
。结果如下图所示,我们给出了冷启动
item
的top 4
相似item
。在图中,我们为每个相似item
标注了与冷启动item
相关的辅助信息的类型,其中cat
意思是category
可以看到:
- 尽管缺少用户对冷启动
item
的行为,但是可以利用不同的辅助信息来有效地学习它们embedding
(就top
相似item
的质量而言)。 item
的门店shop
对于衡量两个item
的相似性非常有用,这也和下面介绍的辅助信息的权重保持一致。
- 尽管缺少用户对冷启动
辅助信息权重:我们将
item
的不同类型辅助信息的权重可视化。我们选择了不同类目的8
个item
,并从学到的权重矩阵 $ \mathbf A $ 中提取与这些item
相关的所有辅助信息的权重。结果如下图所示,其中每一行记录一个item
的权重结果。有几点值得注意:
- 不同
item
的权重分布不同,这和我们的假设相一致,即不同的辅助信息对最终representation
的贡献不同。 - 在所有
item
中,代表item
本身embedding
的"Item"
权重始终大于所有其它辅助信息的权重。这证实了一种直觉,即item embedding
本身仍然是用户行为的主要来源,而辅助信息为推断用户行为提供了额外的提示。 - 除了
"Item"
之外,"Shop"
的权重始终大于其它辅助信息的权重。这和淘宝中的用户行为一致,即用户倾向于在同一家店铺购买item
,这是为了便利性convenience
和更低的价格(即店铺的折扣)。
- 不同
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论