数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十四、MV-DNN [2015]
推荐系统和内容个性化
content personalization
在web
服务中扮演着越来越重要的角色。最近的很多web
服务都致力于寻找与用户最相关relevant
的内容,以最大限度地提高网站的互动engagement
、并最大限度地降低寻找相关内容relevant content
的时间。完成该任务的主要方法称作协同过滤
Collaborative Filtering: CF
,它使用用户在网站上的历史交互interaction
来预测最相关的内容从而进行推荐。另一种常见的方法是基于内容的推荐content-based recommendation
,它使用有关item
特征或/和用户特征来基于特征之间的相似性similarity
从而向用户推荐新的item
。虽然这两种方法在许多实际应用中运行良好,但是它们通常都面临一定的限制limitations
和挑战challenges
,尤其是在个性化需求日益增加以及考虑推荐质量recommendation quality
的情况下。具体而言:CF
在提供高质量推荐之前需要大量的网站交互interaction
的历史记录。这个问题被称作用户冷启动问题user cold start problem
。在一个新建的在线服务中,由于用户与网站的历史交互很少或者没有历史交互,因此问题变得更加严重。因此,传统的CF
方法通常无法为新用户提供高质量的推荐。另一方面,
content-based
推荐方法从每个用户或/和item
中提取特征,并使用这些特征进行推荐。例如,如果两个新闻News
$ N_i $ 和 $ N_j $ 共享相同的主题topic
,并且用户喜欢新闻 $ N_i $ ,则系统可以向用户推荐新闻 $ N_j $ 。类似地,如果两个用户 $ U_i $ 和 $ U_j $ 共享某些相似性similarity
(如地理位置location
相似、年龄相似、性别相同),则系统可以向用户 $ U_j $ 推荐用户 $ U_i $ 之前喜欢的item
。在实践中,研究表明:
content-based
方法可以很好地处理新item
的冷启动问题。然而,当应用于对新用户的推荐时,其有效性是有问题的。因为user-level
特征通常更难获取,并且user-level
特征通常是是从用户在线个人画像user online profiles
中的有限信息生成的,而这些信息无法准确地捕获实际的用户兴趣。即:精准画像难以获取,而且画像相似不代表兴趣相似。
为解决这些限制,论文
《 Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems》
提出了一个利用用户特征和item
特征的推荐系统。和许多基于用户画像user profile-based
的方法不同,为了构建用户特征,论文提出从用户的浏览和搜索历史中提取丰富的特征来建模用户的兴趣。潜在的假设是:用户的历史在线活动historical online activities
反映了用户的背景background
和偏好preference
,因此提供了关于用户可能感兴趣的item
和主题topic
的精确洞察precise insight
。例如,具有很多与婴儿相关query
和相关网站访问的用户可能暗示着这个用户是一个新生儿的妈妈。通过这些丰富的用户在线活动user online activities
,可以更有效地实现对相关relevant
的item
的推荐。在论文中,作者提出了一种新颖的深度学习方法,该方法从深度结构语义模型
Deep Structured Semantic Model: DSSM
扩展而来,将用户和item
映射到共享的语义空间,并推荐与用户在语义空间中相似性最大的item
。为此,论文的模型通过非线性转换层将用户和item
(均由丰富的特征集合来表示)投影到紧凑的共享潜在语义空间compact shared latent semantic space
中。在这个语义空间中,用户的语义表示和用户喜欢的item
的语义表示之间的相似性similarity
被最大化。这使得该模型能够学到兴趣的映射interesting mapping
。例如,访问过fifa.com
的用户喜欢阅读有关世界杯的新闻,并在PC
或者Xbox
玩足球游戏。用户侧
user side
的丰富特征可以对用户的行为进行建模,从而克服了content-based
推荐中的诸多限制。用
user
的行为来代替用户画像,可以解决用户画像不准或者不全的问题。该模型还有效地解决了用户冷启动问题,因为该模型允许我们从
query
中捕获用户兴趣并推荐相关的item
(例如音乐),即使用户没有使用音乐服务的任何历史记录。该模型有一个
ranking-based
目标,旨在将正样本(用户喜欢的item
)排名高于负样本。这种ranking-based
目标已经被证明对推荐系统更有利。
此外,作者扩展了原始的
DSSM
模型(在本文中称之为single-view DNN
,因为DSSM
学习来自单个领域domain
的用户特征和item
特征),从而联合学习来自不同领域的item
的特征。作者将新模型命名为Multi-View Deep Neural Network: MV-DNN
。在文献中,多视图学习
multi-view learning
是一个经过充分研究的领域,它从非共享公共特征空间not share common feature space
的数据中学习。作者认为MV-DNN
是多视图学习配置setup
中一种通用的深度学习方法。具体而言,在包含新闻News
、Apps
、Movie/TV
日志的数据集中,作者不是为每个领域建立独立的模型来简单地将用户特征映射到领域内的item
特征,而是建立新的多视图模型来发现潜在空间中用户特征的单个映射,从而与来自所有领域的item
特征共同进行了优化。MV-DNN
使得我们能够学到更好的用户representation
,它利用更多的跨域数据,并利用来自所有领域的用户偏好数据从而解决数据稀疏性问题。论文在实验中表明:这种多视图扩展同时提高了所有领域的推荐质量。此外,值得一提的是,深度学习模型中的非线性映射使得我们能够在潜在空间中找到用户的紧凑表示
compact representation
,这使得存储学到的用户映射user mapping
以及在不同任务之间共享信息变得更加容易。使用深度学习来建模丰富的用户特征的另一个挑战是特征空间的高维
high dimension
,这使得学习效率低下并可能影响模型的泛化能力。作者提出了几种有效effective
且可扩展scalable
的降维技术,这些技术在不损失大量信息的情况下可以将维度降低到合理的大小。论文的主要贡献:
- 使用丰富的用户特征来构建通用的推荐系统。
- 为
content-based
推荐系统提出深度学习方法,并研究不同的技术以扩展该系统。 - 引入新颖的多视图深度学习模型,通过组合来自多个领域的数据集来构建推荐系统。
- 通过利用从
multi-view DNN model
中学到的语义特征映射semantic feature mapping
来解决文献中未充分研究的用户冷启动问题。 - 使用四个真实世界的大型数据集进行严格的实验,并证明论文提出的方法相对于
state-of-the-art
方法有着显著的优势。
相关工作:已有大量文献对推荐系统进行广泛的研究。这里我们旨在回顾一组与论文提出的方法最相关的代表性方法。通常推荐系统可以分为协同推荐
collaborative recommendation
和基于内容的推荐content-based recommendation
。协同推荐系统
Collaborative Recommendation Systems
向用户推荐一个item
,如果相似的用户喜欢这个item
。该技术的例子包括:最近邻模型
nearest neighbor modeling
、矩阵补全Matrix Completion
、受限玻尔兹曼机Restricted Boltzmann machine
、贝叶斯矩阵分解Bayesian matrix factorization
等等。本质上,这些方法都是用户协同过滤user collaborative filtering
、item
协同过滤item collaborative filtering
、或者同时item
和用户的协同过滤。- 在
user-based
协同过滤中,基于用户喜欢的item
来计算用户之间的相似度similarity
。然后,通过组合相似用户在目标item
上的score
来计算当前用户对目标item
的user-item pair
的score
。 - 在
item-based
协同过滤中,基于喜欢这两个item
的用户来计算item
之间的相似度similarity
。然后向用户推荐该用户曾经喜欢的item
所相似的item
。 - 在
user-item based
协同过滤中,基于user-item
矩阵为user
和item
找到公共空间common space
,并结合item representation
和用户representation
来找到推荐。几乎所有矩阵分解方法都是这种技术的例子。
collaborative filtering: CF
可以扩展到大规模设置large-scale setup
,但是它无法处理新用户和新item
。这一问题通常被称作冷启动问题cold-start issue
。- 在
content-based
推荐从item
和/或用户的画像中提取特征,并根据这些特征向用户推荐item
。背后的假设是:相似的用户倾向于喜欢他们以前喜欢的item
所相似的item
。在
《Amazon.com recommendations: Item-to-item collaborative filtering》
中,作者提出了一种方法来构建具有用户历史喜欢的item
的一些特征的搜索query
,从而寻找其它相关的item
来推荐。在
《Personalized news recommendation based on click behavior》
中,作者给出了另一个例子,其中每个用户都是由新闻主题topics
上的分布建模的。其中这个主题分布是根据用户喜欢的文章来构建的,并且使用和用户相同地理位置location
的所有其它用户的主题分布偏好preference
作为先验分布prior distribution
。这种方法可以处理新
item
(新的新闻),但是对于新用户,系统仅使用地理位置特征,这意味着新用户预期看到该用户当地最热门的主题topics
的新闻。这可能是推荐新闻的很好的特性,但是在其他领域(如Apps
推荐)中,仅使用地理位置信息location information
可能无法得到用户偏好的一个很好的先验prior
。
最近,研究人员开发了将协同推荐和
content-based
推荐结合在一起的方法。- 在
《Content-boosted collaborative filtering for improved recommendations》
中,作者在使用协同过滤之前使用item
特征来平滑用户数据。 - 在
《Tied boltzmann machines for cold start recommendations》
中,作者使用受限玻尔兹曼机来学习item
之间的相似性,然后将其与协同过滤相结合。 - 在
《Collaborative topic modeling for recommending scientific articles》
中开发从一种贝叶斯方法来共同学习item
(在他们的场景中item
是研究论文research paper
) 在不同主题topics
上的分布、以及评分矩阵的因子分解。
- 在
在推荐系统中处理冷启动问题主要针对新
item
(没有任何用户评分的item
)进行研究。如前所述,所有content-based filtering
都可以处理item
的冷启动,并且有一些方法是专门针对冷启动问题开发和评估的。《Learning preferences of new users in recommender systems: an information theoretic approach》
中的工作研究了如何通过推荐能够提供用户最多偏好信息的item
、同时最小化推荐不相关内容irrelevant content
的概率,从而为新用户逐步地学习用户偏好。近年来,通过丰富的特征进行用户建模的研究很多。例如,已经表明用户的搜索
query
可以用于发现用户之间的相似性。用户搜索历史中的丰富特征也被用于个性化的web
搜索。对于推荐系统,《Scalable hierarchical multitask learning algorithms for conversion optimization in display advertising》
中的作者利用用户的历史搜索query
来构建推荐广告的个性化分类personalized taxonomy
。另一方面,研究人员发现,用户的社交行为也可以用于建立用户画像。在
《Twitter-based user modeling for news recommendations》
中,作者使用Twitter
数据中的用户推文tweets
来推荐新闻文章。大多数传统的推荐系统的研究都几种在单个领域
domain
内的数据。最近人们对跨域推荐cross domain recommendation
越来越感兴趣。有不同的方法来处理跨域推荐。一种方法是假设不同的领域共享相似的用户集合,但是不共享
item
集合。如《Cross-domain collaborative recommendation in a cold-start context: The impact of user profile size on the quality of recommendation》
所示。在他们的工作中,作者从电影评分数据集和书籍评分数据集抽取公共用户并增强数据,然后将增强的数据集用于执行协同过滤。他们表明:这种方法尤其有助于那些在某个领域中几乎没有用户画像的用户(冷启动用户)。另一种方法处理的场景是:同样的
item
集合在不同领域中共享不同类型的反馈(如用户点击、用户显式评分等等)。- 在
《Transfer learning in collaborative filtering for sparsity reduction》
中,作者介绍了一种用于跨域矩阵分解的坐标系转换方法coordinate system transfer method
。 - 在
《Transfer learning for collaborative filtering via a rating-matrix generative model》
中,作者研究了在领域之间不存在共享用户或共享item
的情况下的跨域推荐。他们开发了一个生成模型来发现不同领域之间的公共簇common clusters
。但是,由于计算成本问题,他们的方法无法扩展到中等规模数据集之外。 - 在
《Cross-domain collaboration recommendation》
中介绍了一种不同的author collaboration
推荐方法,其中他们建立了一个主题模型来推荐来自不同研究领域的author collaboration
。
- 在
对于推荐系统中的很多方法,目标函数是最小化
user-item
矩阵重构reconstruction
的均方误差。最近,ranking-based
目标函数已经显示出在给出更好的推荐方面更有效。深度学习最近被提出从而用于为协同过滤和
content-based
方法建立推荐系统。- 在
《Restricted boltzmann machines for collaborative filtering》
中,受限玻尔兹曼机模型被用于协同过滤。 - 在
《Cross-domain collaborative recommendation in a cold-start context: The impact of user profile size on the quality of recommendation》
中,深度学习用于content-based
推荐,其中深度学习用于学习音乐特征的embedding
。然后使用这个embedding
在协同过滤中对矩阵分解进行正则化。
- 在
24.1 模型
24.1.1 数据集
这里首先介绍数据集。我们描述了每个数据集的数据收集过程和特征表示
feature representation
,以及数据集的一些基本统计信息。这里使用的四个数据集是从微软的几款产品的用户日志中收集的,包括:Bing Web vertical
的搜索引擎日志、Bing News vertical
的新闻浏览历史记录、Windows AppStore
的App
下载日志、Xbox
的Movie/TV
观看日志。所有日志都是在2013-12 ~ 2014-06
期间收集的,并且重点关注美国、加拿大、英国等英语市场English-speaking markets
。用户特征:我们从
Bing
收集了用户的搜索query
和他们点击的URL
,从而形成用户特征。首先对
query
进行规范化normalized
、词干化stemmed
,然后将其拆分为unigram
特征。然后,我们使用
TF-IDF
得分来保留最热门popular
和最重要non-trivial
的特征。对于
URL
,我们压缩到仅保留domain-level
(如www.linkedin.com
) 。
通过对
query
和URL
的这些操作我们降低了特征的维度。总体而言,我们选择了
300
万个uni-gram
特征和50
万个域名特征,最终得到的用户特征向量user feature vector
为350
万维。query
特征向量为300
万维,分量大小为对应uni-gram term
的TF-IDF
得分。- 域名特征向量为
50
万维,为域名的one-hot
向量。
新闻特征:我们从
Bing News vertical
收集了点击的新闻News
。每个新闻item
由三部分的特征来表示:- 第一部分是使用字母三元组表示
letter tri-gram representation
编码的标题特征。 - 第二部分是每篇新闻的
top-level
类目category
(如娱乐Entertainment
) 编码的二元特征。 - 第三部分是在每篇新闻中,通过内部专有的
NLP parser
抽取的命名实体Named Entities
,这些命名实体也是通过letter tri-gram representation
来编码。
这三部分得到的新闻特征向量为
10
万维。- 第一部分是使用字母三元组表示
App
特征:我们从Windows AppStore
日志中收集用户历史下载的App
。每个App item
由两部分的特征来表示:- 第一部分是使用
letter tri-gram representation
编码的App
标题特征。 - 第二部分是每个
App
的类目category
(如游戏Game
) 编码的二元特征。
考虑到
App
描述信息descriptions
不断的变化,我们决定不将它纳入特征空间中。最终得到的App
特征向量为5
万维。- 第一部分是使用
Movie/TV
特征:我们从XBox
日志中收集了每个XBox
用户观看的历史Movie/TV
。每个item
由两部分的特征来表示:- 第一部分是
item
标题和描述信息description
合并为文本特征text features
,然后使用letter tri-gram
来编码。 - 第二部分是每个
item
的流派genre
编码的二元特征。
最终得到的
Movie/TV
特征向量为5
万维。- 第一部分是
在我们的神经网络框架中,用户特征被映射到用户视图
user view
,其它特征被映射到不同的item
视图item view
。出于训练的目的,每个用户视图都与一个包含相应用户集合的item
视图相匹配。为实现这一点,我们根据用户ID
(每个用户都有一个唯一的、匿名的、哈希的Microsoft User ID
)来执行inner join
,从而得到user-item view pair
。这导致每个user-item view pair
中包含的用户数量不同。下表描述了本文所使用的数据的一些基本统计信息。
Joint Users
列给出了item view
和user view
之间公共用户common users
的数量。读者注:为什么用搜索数据作为
User View
?因为搜索数据的规模最大、用户行为最丰富、暴露用户的主动意图,从而能够更好地刻画用户兴趣。
24.1.2 DSSM
在论文
《Learning deep structured semantic models for web search using click-through data》
中引入了深度结构化语义模型deep structured semantic model: DSSM
,从而增强web
搜索上下文中的query document
匹配。考虑到DSSM
和我们提出的MV-DNN
模型密切相关,因此这里我们简要回顾一下DSSM
。DSSM
的典型体系结构如下图所示。DNN
的输入(原始文本特征)是一个高维的term vector
,例如query
或document
中term
的未归一化的原始计数raw count
。- 然后
DSSM
通过两个神经网络传递其输入,每个神经网络对应不同的输入(如query
和document
),并将每个输入映射到共享语义空间shared semantic space
中的语义向量semantic vector
。 - 对于
web document ranking
,DSSM
将query
和document
之间的相关度得分relevance score
计算为它们对应的语义向量之间的余弦相似度cosine similarity
,并通过document
和query
的相似度得分对document
进行排序rank
。
正式而言,对于
$ \mathbf{\vec h}_1 = \mathbf W_1\mathbf{\vec x}\\ \mathbf{\vec h}_i = f\left(\mathbf W_i\mathbf{\vec h}_{i-1} + \mathbf{\vec b}_i\right),\; 2=1,\cdots,L-1\\ \mathbf{\vec y} = f\left(\mathbf W_L\mathbf{\vec h}_{L-1} + \mathbf{\vec b}_L\right) $DSSM
中的单个神经网络,如果我们将 $ \mathbf{\vec x} $ 表示为输入的term vector
,将 $ \mathbf{\vec y} $ 表示为输出向量,将 $ \mathbf{\vec h}_i,i=1,2\cdots,L-1 $ 表示为中间的隐向量hidden vector
。令 $ \mathbf W_i $ 为第 $ i $ 层的权重矩阵, $ \mathbf{\vec b}_i $ 为第 $ i $ 层的偏置向量,那么有:其中 $ f(\cdot) $ 为非线性激活函数,这里我们使用
$ f(x) = \frac{1-e^{-2x}}{1+e^{-2x}} $tanh
函数:然后,
$ R(Q,D) = \cos \left(\mathbf{\vec y}_Q,\mathbf{\vec y}_D\right) = \frac{\mathbf{\vec y}_Q\cdot \mathbf{\vec y}_D}{\left\|\mathbf{\vec y}_Q\right\|\times \left\|\mathbf{\vec y}_D\right\|} $query
$ Q $ 和document
$ D $ 之间的语义相关性得分semantic relevance score
为:其中 $ \mathbf{\vec y}_Q $ 和 $ \mathbf{\vec y}_D $ 分别为
query
语义向量和document
语义向量。在
web
搜索中,给定query
条件下,document
按照它和query
之间的语义相关性得分semantic relevance score
进行排序。传统上,每个单词
word
由一个one-hot word vector
来表示,其中向量的维度是词表vocabulary
的大小。然而,在现实世界的web
搜索任务中词表通常非常大,因此one-hot
向量的word representation
使得模型的学习代价太大。因此,DSSM
使用一个word hashing layer
来用一个letter tri-gram vector
来表示一个单词。例如,给定一个单词(如
web
),在添加了单词边界符号(如#web#
)之后,单词被分割为一系列的letter n-grams
。然后,单词表示为letter tri-grams
的count vector
。例如,web
这个单词的letter tri-gram representation
为:#-w-e, w-e-b, e-b-#
。在
DSSM
中,第一层layer
的权重矩阵 $ \mathbf W_1 $ 表示从term-vector
映射到letter tri-gram count vector
的letter tri-gram
映射矩阵,这不需要学习。尽管英语单词的总量可能非常庞大,但是英语(或者其它类似语言)中不同的
letter tri-grams
总量通常是有限的。因此,这种做法可以泛化到没有在训练集中出现的新单词。在训练中,假设
query
和针对该query
点击的document
相关,我们利用这一信号来训练DSSM
的参数,即权重矩阵 $ \mathbf W_i $ 、偏置向量 $ \mathbf{\vec b}_i $ 。首先,给定
$ p(D\mid Q) = \frac{\exp(\gamma \times R(Q,D))}{\sum_{D^\prime \in \mathbb D}\exp(\gamma\times R(Q,D^\prime))} $query
的条件下,一个document
被点击的概率是通过softmax
函数从它们之间的语义相关性得分来估计:其中:
$ \gamma $ 为
softmax
函数中的平滑因子smoothing factor
,并且通常是根据实验中的验证集来设定的。$ \mathbb D $ 为待排序的候选
document
的集合。理想情况下 $ \mathbb D $ 应该包含所有可能的document
。实际上对于每个
$ \mathbb D = \left\{D^+\right\}\bigcup \left\{D_j^{-};j=1,\cdots,q\right\} $(query, clicked-document)
的pair
对,记作 $ Q,D^+ $ 其中 $ Q $ 为query
、 $ D^+ $ 为点击的document
,我们使用 $ D^+ $ 和 $ q $ 个随机选择的未点击document
来近似 $ \mathbb D $ 。即:
然后,我们通过最大化在整个训练集上的、给定
$ \mathcal L(\Theta) = -\log \prod_{Q,D^+} p\left(D^+\mid Q\right) $query
条件下点击document
的likelihood
来估计模型参数:其中 $ \Theta $ 为模型的参数集合。
注意,虽然目标函数 $ \mathcal L(\Theta) $ 中没有负样本的损失函数,但是 $ p(D\mid Q) $ 中有负样本参与计算。而且 $ \sum_{D\in \mathbb D} p(D\mid Q) = 1.0 $ ,因此 $ p(D^+\mid Q) $ 尽可能大意味着 $ p(D^-_j\mid Q) $ 尽可能小。
24.1.3 MV-DNN
DSSM
可以视作一个多学习框架multi-learning framework
,它将数据的两个不同的视图映射到一个共享视图shared view
。从这个意义上讲,可以从更一般地角度来学习两个不同视图之间的共享映射shared mapping
。在这项工作中我们提出了
DSSM
的扩展,其中包含有两个以上的数据视图,我们称之为多视图DNN
模型Multi-view DNN: MV-DNN
。在这种配置setting
下我们有 $ K+1 $ 个视图,其中一个中心视图pivot view
称作 $ \mathbf V_u $ ,其它 $ K $ 个辅助视图auxiliary views
记作 $ \mathbf V_1,\cdots,\mathbf V_K $ 。- 每个 $ \mathbf V_i\in \{\mathbf V_u,\mathbf V_1,\cdots,\mathbf V_K\} $ 都有它自己的领域输入
domain input
$ \mathbf X_i\in \mathbb R^{N_i\times d_i} $ ,其中 $ N_i $ 为第 $ i $ 个视图的样本数、 $ d_i $ 为第 $ i $ 个视图的输入维度。 - 每个视图 $ \mathbf V_i\in \{\mathbf V_u,\mathbf V_1,\cdots,\mathbf V_K\} $ 都有自己的非线性映射层,从而将 $ \mathbf X_i $ 映射到共享的语义空间
shared semantic space
$ \mathbf Y_i $ 。
MV-DNN
的体系架构如下图所示。在我们的推荐系统设置setup
中,我们将中心视图 $ \mathbf V_u $ 设为用户特征,并为我们要推荐的每种不同类型的item
创建辅助视图。下图中,
MV-DNN
将高维稀疏特征(如用户、新闻、App
中的原始特征)映射为联合语义空间joint semantic space
中的低维稠密特征。DNN
第一个隐层(具有5
万个单元)完成单词哈希word hashing
。然后将word-hashed
特征通过多个非线性层来投影,其中最后一层的激活值构成了语义空间中的特征。注意:该图中的输入的特征维度(
5M
和3M
)是假设的,因为实际上每个视图可以具有任意数量的特征。- 每个 $ \mathbf V_i\in \{\mathbf V_u,\mathbf V_1,\cdots,\mathbf V_K\} $ 都有它自己的领域输入
给定训练的一组
user-item view pair
,假设第 $ j $ 个样本具有中心视图特征 $ \mathbf{\vec x}_j^{(u)} $ 、以及某个活跃的辅助视图特征 $ \mathbf{\vec x}_j^{(a)} $ ,其中 $ 1\le a\le K $ 。所有其它辅助视图的输入 $ \left\{\mathbf{\vec x}_j^{(k)}\right\}_{k\ne a} $ 都设为零向量。
$ \mathcal L=\sum_{a=1}^K \mathcal L_a = \sum_{a=1}^{K} \sum_{j=1}^{N_a}\frac{\exp\left(\gamma_a\cos\left(\mathbf{\vec y}_j^{(u)},\mathbf{\vec y}_{j}^{(a)}\right)\right)}{\sum_{i=1}^{I_a}\exp\left(\gamma_a \cos\left(\mathbf{\vec y}_{j}^{(u)},\mathbf{\vec y}_{i}^{(a)}\right)\right)} $MV-DNN
的目标函数是为每个视图找到一个非线性映射,使得在语义空间中,中心视图的映射 $ \mathbf Y_u $ 和其它所有视图的映射 $ \mathbf Y_1,\cdots,\mathbf Y_K $ 之间的相似度之和最大化。数学上表述为:其中: $ K $ 为辅助视图的总数, $ N_a $ 为第 $ a $ 个辅助视图的样本数, $ I_a $ 为第 $ a $ 个辅助视图的
item
数量, $ \gamma_a $ 为第 $ a $ 个辅助视图的平滑因子。该目标函数就是将各辅助视图的目标函数相加。
具有该目标函数的直觉是:试图为用户特征找到单个映射
single mapping
,该映射可以将用户特征转换到一个匹配不同视图/领域中用户喜欢的所有item
的空间中。这种共享参数的方式允许没有足够信息的领域通过具有更多数据的其它领域来学习良好的映射。例如,如果我们假设具有相似新闻
News
偏好的用户在其他领域中也具有相似的偏好,那么这意味着其它领域也可以从新闻领域学到的用户映射中受益,那么这种方式应该会很好地工作。如果该假设成立,那么来自任何领域的样本都将有助于所有领域中更准确
accurately
地对相似用户进行分组。实验结果表明,该假设在我们实验的领域是合理的,我们将在实验部分进一步阐述。DSSM
和MV-DNN
的目标函数评估的是:最大化正样本和负样本之间的相对序关系。这和CTR
预估任务中的logloss
目标函数不同,后者的目标是准确预估样本的点击率。因此DSSM
和MV-DNN
无法直接应用与CTR
预估任务,而只能用于推荐任务。MV-DNN
训练:可以使用随机梯度下降Stochastic Gradient Decent: SGD
来训练MV-DNN
。实际上每个训练样本都包含一对
a pair
输入,一个用于用户视图user view
、一个用于数据视图data view
。因此,尽管在我们的模型中仅有一个用户视图,但是使用 $ K $ 个用户特征文件user feature files
会更方便,每个文件对应于一个item
特征文件item feature file
。MV-DNN
的优势:尽管MV-DNN
是原始DSSM
框架的扩展,但是MV-DNN
具有几个独特的特点使得它优于DSSM
。首先,原始的
DSSM
模型对query
视图和document
视图使用相同的特征维度,并使用相同的representation
(例如letter tri-gram
)进行预处理。这在特征构建步骤feature composition step
中产生了巨大的限制。原始的
DSSM
使用相同的塔结构来处理query
视图和doc
视图,因此特征维度和预处理方法都一样。由于推荐系统的异质性
heterogeneity
,用户视图和item
视图很可能具有不同的输入特征。此外,很多类型的特征不能用
letter tri-gram
来最佳地表示。例如,
URL
域名特征通常包含前缀和后缀,如www
、com
、org
。如果采用letter tri-gram
,那么这些前缀、后缀将映射到相同的letter tri-gram
。在实践中我们发现,在输入的原始文本很短的情况下(如原始
DSSM
模型中的query
文本和document
标题),letter tri-gram
的representation
工作得很理想。但是不适合为通常包含大量query
和URL
域名的user-level
特征来建模。
通过消除这些约束,新的
MV-DNN
模型可以融合类别特征categorical feature
(如电影题材、app
类目)、地理位置特征(如国家、地区)、以及来自用户输入的uni-gram
或bi-gram
表示的原始文本特征。其次,
MV-DNN
有能力扩展到很多不同的领域,而这是原始DSSM
框架无法做到的。通过在每个
user-item view pair
之间执行pair-wise
训练,我们的模型能够轻松地采用新的view pair
。这些新的view pair
可能包含完全独立的用户集合和item
集合。例如,可以添加从Xbox games
收集的新的数据集。通过在每次训练迭代中交替
user-view pair
,我们的模型最终可以收敛到最优的用户视图embedding
。这个用户视图embedding
通过所有item
视图来训练。注意,虽然理论上我们可以在不同的
item
视图中使用不同的用户集合,但是在我们的实验中我们选择在所有视图中保持相同的用户集合。这是为了同时考虑便利性convenience
和更容易特征归一化feature normalization
。
24.1.4 降维和数据缩减
在实践中,
MV-DNN
通常需要在高维特征空间中为用户视图处理大量的训练样本。为了系统的可扩展性,我们提出了几种降维技术来减少用户视图中的特征数量。然后,我们提出了一种压缩
compact
和摘要summarize
用户训练样本的思想,从而将训练数据的数量缩减reduce
到用户数量的线性关系。用户特征降维技术(仅用于用户视图):
top
特征:一种简单的用户特征降维方法是选择top-K
的最高频most frequent
特征。我们选择特征出现频率
>= 0.001
的用户特征。 主要的基本假设是:可以使用一组相对较小的、解释用户常见在线行为common online behavior
的常用特征frequent feature
来很好地描述用户。注意,用户的原始特征使用
TF-IDF
得分进行预处理,以便我们选择的top
特征不再包含搜索query
中的常见停用词。最终用户特征的维度为8.3
万。K-means
:K-means
是一种众所周知的聚类技术,旨在创建多个聚类使得每个点与其最近的聚类之间的距离之和最小化。这里的基本思想是:将相似的特征分组到同一个簇中。
给定输入 $ \mathbf X\in \mathbb R^{N\times d} $ ,我们根据列来拆分得到 $ d $ 个样本点
point
$ (X_1,\cdots,X_d) $ 。然后对这 $ d $ 个点聚类为 $ C $ 个簇, $ C\ll d $ 。
然后我们统计这些簇中分别有多少个点。假设簇 $ 1\le c\le C $ 中有 $ n_c $ 个点,则我们得到簇向量 $ \mathbf{\vec f}=(n_1,\cdots,n_C)^\top $ 。其中 $ \sum_{c=1}^C n_c = d $ 。
这相当于将 $ d $ 个特征降维到 $ c $ 个特征。这是基于特征的聚类,而不是基于样本的聚类。
然后我们归一化 $ \mathbf{\vec f} $ ,得到 $ \mathbf{\vec f}^* $ 。
实际上可以不用归一化。可以通过实验对比归一化和未归一化的效果。
对于用户特征向量 $ \mathbf{\vec x}_i\in \mathbb R^d $ ,我们假设它在的非零特征为 $ (x_{i,1},\cdots,x_{i,m}) $ ,这些特征对应的簇为 $ 1\le c_{1},\cdots,c_m \le C $ 。则用户特征向量降维为:
$ x^\prime_{i,c} = \sum_{1\le s\le m, c_s = c} f^*(c)\times x_{i,s},\quad 1\le c\le C\\ \mathbf{\vec x}_i^\prime = (x^\prime_{i,1},\cdots,x^\prime_{i,C})^\top\in \mathbb R^C $为了能够使用
K-means
提取合理数量的特征,我们需要有相对较大的簇数量。因为考虑到用户特征的维度为350
万,较少的簇(比如100
)将导致大块large chunk
特征在同一个簇中。因此,这将产生难以学到有用模式的特征。为了缓解这个问题,我们将簇数量设置为10k
。这意味着平均每个簇有350
个用户特征。大规模的簇和大规模的原始特征使得运行
K-means
的计算量很大。在我们的实验中,我们使用了一个基于云计算的Map-Reduce
实现来运行K-means
。LSH
:局部敏感哈希Local Sensitive Hashing: LSH
的工作原理是使用随机投影矩阵random projection matrix
将数据投影到一个低得多的低维空间,使得原始空间中的pair-wise
余弦距离cosine distance
仍然在新空间中保留preserved
。LSH
需要一个变换矩阵 $ \mathbf A\in \mathbb R^{d\times C} $ ,其中 $ d $ 为原始空间中的特征数量, $ C $ 为随机投影的数量。这意味着 $ \mathbf A $ 包含 $ C $ 个不同的投影,我们记作 $ \mathbf{\vec a}_i\in \mathbb R^d,i=1,2\cdots,C $ 。每个投影 $ \mathbf{\vec a}_i $ 将原始输入向量 $ \mathbf{\vec x}\in \mathbb R^d $ 映射到一个哈希值 $ y_i\in \mathbb R $ 。LSH
的输出向量 $ \mathbf {\vec y}\in \mathbb R^C $ 可以通过拼接所有不同的哈希值 $ y_i $ 来得到。具体而言,为了计算每个 $ y_i $ ,我们使用以下方程:
$ y_i = \begin{cases} 1,& \mathbf{\vec a}_i\cdot \mathbf{\vec x} \ge 0\\ 0,&\text{else} \end{cases} $两个输入向量 $ \mathbf{\vec x}_1,\mathbf{\vec x}_2\in \mathbb R^d $ 的余弦相似度可以近似为 $ \cos\left(\frac{H(\mathbf{\vec y}_1,\mathbf{\vec y}_2)}{C}\pi\right) $ ,其中 $ H(\mathbf{\vec y}_1,\mathbf{\vec y}_2) $ 为
LSH
输出向量 $ \mathbf{\vec y}_1 $ 和 $ \mathbf{\vec y}_2 $ 的汉明距离。为了以更高的准确率accuracy
保持余弦相似度,我们需要提高投影数量 $ C $ 。我们使用 $ C=10000 $ ,这和k-Means
聚类的簇数量相同。LSH
可以独立地应用于每个特征向量,并且可以独立地计算所有投影,因此使得该算法在Map-Reduce
框架内高度可分布distributable
。但是,LSH
算法需要生成变换矩阵 $ \mathbf A $ ,在我们的case
中该矩阵包含从标准正态分布 $ \mathcal N(0,1) $ 中随机生成的 $ 3.5M\times 10^4 $ 个元素,这大概需要300GB
的存储空间。此外,在计算LSH
向量的时候,必须将 $ \mathbf A $ 存储在每个计算节点上。这些问题使得LSH
在Map-Reduce
框架中代价太大。人们已经提出了很多方案来解决这个问题,其中大多数方案都是基于生成稀疏矩阵 $ \mathbf A $ 。这里我们使用
《Online generation of locality sensitive hash signatures》
中介绍的池化技巧pooling trick
。 基本思想是:保留一个由 $ \mathcal N(0,1) $ 生成的、size
为 $ m $ 的随机数池子 $ \mathbf B $ ,其中 $ m $ 通常要远远小于 $ \mathbf A $ 的size
。为了获得元素 $ A_{i,j} $ ,只需要应用 $ i,j $ 的一致哈希函数consistent hash function
来获得 $ \mathbf B $ 中的索引并查找对应的值。在我们的实验中,我们设置 $ m=1000000 $ ,这样一来内存需求减少了10000
倍,并且可以在Map-Reduce
期间仅使用10M
的存储空间轻松地存储在每个节点上。
减少训练样本的数量:每个视图的训练数据包含
pair
对 $ (\text{User}_i,\text{Item}_j) $ 的集合,其中 $ \text{User}_i $ 偏好 $ \text{Item}_j $ 。实践中,用户可能会喜欢很多item
,这可能使得训练数据非常大。例如,在我们的新闻News
推荐数据集中,pair
对的数量远远超过10
亿。即使使用优化的GPU
实现optimized GPU implementation
,训练也会非常慢。为了缓解这个问题,我们压缩了训练数据,使得每个视图中每个用户都包含一个训练样本。具体而言,压缩的训练样本使用了用户在该视图中喜欢的所有
item
的特征的均值(即对item
特征进行均值池化)。这样可以将每个视图的训练样本数量降低为用户数量,从而大大减少了训练数据的大小。注意,这种技术的一个问题是:目标函数现在变成了最大化用户特征和用户喜欢的
item
的平均特征之间的相似性。在评估的时候有细微的差异,因为在测试期间每个用户只能提供一个item
。但是,这种逼近approximation
是必要的,使得系统有很好的可扩展性。此外,实验结果表明:这种逼近在实践中仍然会产生非常有前景的结果。
24.2 实验
这里我们将解释我们的实验研究过程,并简要回顾了我们作为
baseline
的几种推荐算法。数据集:对于每个数据集,我们旨在评估已经在该领域中具有历史交互的用户(老用户)、以及在该领域中没有任何历史交互但是在用户视图中具有历史搜索和浏览行为的用户(新用户)。为了进行评估,我们根据以下标准将数据集划分为训练集和测试集:
首先,以
0.9 : 0.1
的比例为每个用户随机分配一个train
或者test
的标记。然后,对于每个带
test
标记的用户,我们以0.8 : 0.2
的比例将其进一步随机分配一个old
或者new
标记。接着,对于每个带
old
标记的用户,他们的50%
的item
用于训练、剩余的用于测试。于每个带
new
标记的用户,他们的所有item
都用于测试,从而确保这批用户的user-item
的pair
永远不会出现在训练过程中。通过这种方式,这批用户都成为系统的全新用户。
数据集的详细划分信息在下表所示。
性能评估:对于训练数据集中的每个 $ (\text{user}_i,\text{item}_j) $ 的
pair
对,我们随机选择其它的9
个item
$ \{\text{item}_{r_1},\cdots,\text{item}_{r_9}\} $ ,其中 $ r_1,\cdots,r_9 $ 都是随机的索引,然后创建9
个测试的pair
对 $ \{(\text{user}_i,\text{item}_{r_1}),\cdots,(\text{user}_i,\text{item}_{r_9}\}) $ 并添加到测试数据集。评估指标是:衡量系统对用户 $ \text{user}_i $ 是否将正确的
pair
对 $ (\text{user}_i,\text{item}_j) $ 排序在随机的pair
对 $ \{(\text{user}_i,\text{item}_{r_1}),\cdots,(\text{user}_i,\text{item}_{r_9}\}) $ 之上。因此,我们采用了两个指标:- 平均倒数排名
Mean Reciprocal Rank: MRR
:计算所有item
中正确item
的排名的倒数,然后对整个测试数据集的得分进行平均。 Precision@1: P@1
:计算系统将正确item
排名为top 1 item
的次数占比。
注意:这种随机抽取
item
为负样本的方式有可能导致负样本太简单。可以考虑同类目或者同主题下抽取负样本,从而得到hard
负样本来评估。- 平均倒数排名
baseline
方法:标准的
SVD
矩阵分解:在这个baseline
中,我们构建user-item
矩阵,并使用SVD
执行矩阵分解。这是协同过滤技术的标准baseline
。实际上,该
baseline
仅在相对较小的数据集(在我们的case
中为Apps
数据)上在计算上是可行的。此外,该方法不能为新用户提供推荐,因为他们没有出现在user-item
矩阵中。最热门
item
:由于SVD
无法处理新用户的推荐,因此我们使用最热门item
作为新用户的简单baseline
。它的工作原理是首先计算训练集中每个
item
的频次frequency
,然后针对每个测试样本 $ (\text{user}_i,\text{item}_j) $ 及其随机pair
对 $ \{(\text{user}_i,\text{item}_{r_1}),\cdots,(\text{user}_i,\text{item}_{r_9}\}) $ ,该方法根据训练集中item
的频次来排序。Canonical Correlation Analysis: CCA
:CCA
是一种传统的多视图学习技术,旨在找到两对two pair
线性变换,每个输入视图一对,使得变换后transformed
的数据之间的相关性最大化。CCA
和DSSM
相似,但是有两个主要区别:- 尽管
CCA
的kernel
版存在非线性变换,但是CCA
经常使用线性变换,因为kernel
版在大规模数据中计算量是不可行的。 CCA
在某种固定方差certain fixed variance
约束下最大化相关性,而DSSM
最大化correct pair
的排序rank
。排序目标函数ranking objective
已经被证明是一个更好的推荐系统目标函数。
在我们针对
CCA
的实验中,我们仅使用top-k
的用户特征,因为其它两种降维技术(K-means
和LSH
)产生了一个非常稀疏的特征向量,这会使得相关性矩阵correlation matrix
过于稠密dense
从而无法有效地计算。- 尽管
协同主题回归
Collaborative Topic Regression: CTR
:CTR
是最近提出的推荐系统,它结合了贝叶斯矩阵分解Bayesian matrix factorization
和item
特征来创建item
推荐。它在学术论文推荐academic paper recommendation
方面已被证明是成功的。在
CTR
模型中有两个输入:协同矩阵collaborative matrix
、item
特征(以bag-of-words
来表示)。该模型通过最大化协同矩阵的重构误差reconstruction error
并将item
特征作为额外信号extra signal
从而匹配用户和item
。这有助于对训练数据中没有出现过的新item
进行建模。对于我们场景中的新用户推荐,我们将协同矩阵 $ \mathbf A $ 的转置作为输入,并提供用户特征而不是item
特征。single-view DNN
:对于Apps
和News
数据集,我们运行三组实验来训练单视图DNN
模型,每组实验对应于一种降维方法(SV-TopK
、SV-Kmeans
、SV-LSH
)。MV-DNN
:我们针对MV-DNN
进行了另外三组实验。- 前两个使用
TopK
或Kmeans
降维的用户特征(MV-TopK
、MV-Kmeans
)来联合训练Apps
和News
数据。 - 第三组实验使用
TopK
用户特征(MV-TopK w/Xbox
)来联合训练Apps
、News
、Movie/TV
数据。
- 前两个使用
我们评估了
App
数据集(第一张表)和News
数据集(第二张表)中的不同方法获得的结果,如下表所示。我们将算法分为三类:第一类是baseline
方法,第二类是我们的单视图模型,第三类是MV-DNN
模型。可以看到:第一类方法:
- 朴素的最热门
item
的baseline
表现很差,这证明了对新用户的简单解决方案在我们的场景下不会很好地工作。 - 即使对于在协同过滤矩阵中存在的老用户,标准的
SVD
矩阵分解方法在该任务中也不够好。 - 出乎意料的是,
CCA
模型的表现并不比对Apps
数据的随机猜测更好。这表明在DSSM
中使用非线性映射以及基于排序的目标函数ranking-based objective
对于系统很重要。 CTR
模型对于老用户而言表现不错,但是对于新用户却表现不佳。
- 朴素的最热门
第二类方法:对于单视图
DNN
,结果表明性能取决于所使用的的降维方法。对于
Apps
和News
数据而言,最好的降维方法是top-K
特征降维方法,该方法的性能远远优于其它两种方法。这可以被视为对以下假设的证实:用户可以使用相对较少的、有信息量
informative
的特征的集合来建模。这也表明K-means
和LSH
在正确捕获用户行为语义方面不太有效。作为单视图
DNN
和传统推荐方法的直接比较,我们的最佳模型 (SV-TopK
) 的性能优于最佳的baseline
方法(CTR
,它也利用了item
特征来进行推荐),其中在所有用户上提升了11%
(MRR
得分为0.497 vs 0.448
) 、在新用户上提升了36.7%
(MRR
得分为0.436 vs 0.319
)。在
P@1
指标上,我们看到了更大的提升:在所有用户上提升13%
、在新用户上提升88.7%
。这表明我们的系统在推荐top-rated item
方面的有效性。
第三类方法:对于
MV-DNN
,结果表明添加更多领域确实有助于同时改善所有领域。具体而言:通过将
News
视图和Apps
视图进行联合训练,我们发现News
和Apps
数据集在这两个指标中都有显著提升。具体而言,在
App
数据中,和最佳单视图模型相比,所有用户的MRR
得分从0.497
提升到0.517
,相对提升4%
。更重要的是,我们看到新用户有大幅提升,这表明一个视图中缺少新用户的数据可以通过其它视图该用户的数据来弥补。这可以从App
数据集中新用户的相对提升来说明,其中新用户的MRR
指标提升了7%
(0.436 vs 0.466
)、P@1
指标提升11%
(0.268 vs 0.297
)。因此,我们迫切地想知道:我们能否安全地得出结论,即更多的视图确实有助于提升系统的性能?为了回答这个问题,我们进一步将
Xbox
数据添加到框架中,并使用三个user-item view pair
来训练了一个MV-DNN
模型。结果令人振奋: 在
Apps
数据中所有用户的MRR
得分进一步提升了6%
、新用户的MRR
得分进一步提升了8%
。另一方面,通过和
state-of-the-art
算法进行比较,我们具有top-K
特征的MV-DNN with Xbox view
的方法相比CTR
模型在所有用户上的P@1
指标提升25.2%
(0.277 vs 0.347
)、在新用户上的P@1
指标提升115%
(0.142 vs 0.306
)。
News
数据集也可以观察到类似的结果:相对于CTR
模型,MV-DNN
在所有用户上的P@1
指标提升49%
、在新用户上的P@1
指标提升101%
。注意,在该数据集中缺少CCA
和SVD
的结果。由于包含150
万用户和超过10
亿条数据,这两种传统算法无法处理如此大规模的数据。很明显,我们基于DNN
的方法可以很轻松地扩展到数十亿条数据,同时产生出色的推荐结果。下表为
App
数据集的结果:下表为
News
数据集的结果:为了探索从系统中学到的模型的有效性,我们执行以下实验来测试单特征输入
single-feature input
的推荐性能。具体而言,我们采用了性能最佳的系统(带top-k
特征的MV-DNN
),并构建了仅开启URL
域名特征的用户特征user feature
。由此产生的用户特征只有一个值,即域名ID
。然后,我们针对其它视图运行我们的预测模型,以便在所有现有item
中找到最匹配的News
和Apps
。下表显示了其中的一些结果。可以看到,学到的推荐系统确实非常有效。- 在第一个示例中,我们假设用户仅访问了
brackobama.com
。匹配度最高的新闻显示了和奥巴马总统Obama
以及Obamacare health
的所有相关信息,这些信息都和该网站有关。另一方面,这个示例中最匹配的Apps
也和健康有关。 - 在第二个例子中,我们有一个用户访问了
www.spiegel.de
,这是一个主要的在线的德国新闻网站,除了用户会阅读德语之外,它没有告诉关于用户的更多信息。该系统为用户匹配了2014
年FIFA
世界杯的文章,这似乎是德国人在这段时间内的共同兴趣。 - 在最后一个例子中,用户似乎对婴儿相关的信息感兴趣,最匹配的
News
和Apps
都和婴儿、怀孕等相关。
注意:在这个实验中我们仅使用域名
ID
,域名的名字domain name
对于目标任务而言是未知的。- 在第一个示例中,我们假设用户仅访问了
公共数据集:为进一步展示我们的方法在跨域用户建模方面的优势,我们对公共数据集进行了一系列实验。
数据集包含来自五个领域(数据挖掘、理论等等)的
33739
位作者,其中每条数据包含研究领域的name
、论文的标题和摘要、论文的作者列表、论文的发表年份。目标是推荐来自另一个领域的作者进行跨领域合作cross-domain collaboration
。我们使用
single-view DNN
来建模这种跨领域协作(如数据挖掘和理论研究学者之间的协作)。在这种情况下,用户视图和item
视图都共享相同的特征表示。具体而言,我们使用作者在训练期间(1990~2001
年)发表的论文的标题和摘要中的uni-gram
单词作为特征,从而得到31932
维的特征向量。我们随机选择训练期间已经有跨域协作、并且在测试期间至少由五个跨域协作的作者作为我们的测试集。对于不同领域之间的每个协作集合,我们将迭代100
次来训练一个single-view DNN
。注:这里仅评估了single-view DNN
(即DSSM
)。结果如下表所示。总体而言,除了
P@20
指标之外,我们的方法在所有四个跨域数据集中的性能均明显优于CTL
方法。特别是,我们在P@100
时实现了更高的召回率,这对于DM to theory
提升了96%
的推荐性能。结果表明,将丰富的用户特征和非线性深度神经模型结合使用,确实可以捕获更多语义,而这些语义无法使用传统的
word-based
共享模型(例如生成式的主题模型topic model
)准确地建模。我们相信,使用多视图DNN
模型可以进一步提高性能。但是我们将其留待将来研究。在效率方面,作者报告了整个数据集的
CTL
方法的训练时间为12~15
小时。而我们的算法运行速度非常快,每个模型仅用5~7
分钟就可以在GPU
机器上以相同数量的数据完成100
次迭代。可扩展性:这里我们根据训练时间来比较各种算法的性能。我们的方法使用
SGD
进行训练,因此可以使用分布式训练来处理大量数据。下表给出了不同方法的性能的详细信息。可以看到:
对于较小的
Apps
数据集,SVD
和CCA
训练完成时间相对较快(大约四个小时),但是推荐性能却很差。single-view DNN
模型(SV-TopK
)在33
小时内完成了100
次训练迭代。content-based CTR
模型需要花费很长的时间进行训练,原因是CTR
需要使用LDA
模型训练的主题比例 ( $ \theta $ ) 和主题分布 ( $ \beta $ ) 的初始种子。然后
CTR
获取了这些文件,并优化了用户特征和item
特征之间的关联。因此,对于这两个数据集,训练CTR
比我们的深度学习模型更昂贵。另一方面,我们看到
SV-TopK
和MV-TopK
都表现出对数据大小的 (亚)线性训练时间。因为当更多的数据可用时,SGD
通常会花费更少的时间来收敛。
另外,下图显示了
News
和Apps
视图在MV-TopK
模型的每次迭代期间的训练误差。在我们的实验中,我们手动将训练迭代次数设置为100
次。有两个原因:一个原因是,尽管随着时间的推移效果提升越来越小,但是我们仍然能够看到所有视图的性能都有所提升。
另一个原因是,我们发现在实践中,某些视图的收敛速度比其他视图更快。例如,对于下图中的特定模型,
News
视图在20
次迭代后迅速收敛,而Apps
视图大约花费了70
次迭代才能达到收敛。由于训练期间交替使用
user-item view pair
的过程以及不同视图的收敛速度不同,因此使用早停以进一步提高模型的可扩展性成为未来的关键工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论