数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十二、BPR [2009]
内容推荐是很多信息系统中的一项重要任务,例如像
Amazon
这样的在线购物网站为每个客户提供用户可能感兴趣商品的个性化推荐。其它例子像YouTube
这样的视频门户网站,为用户推荐电影。个性化对于内容提供商和用户都很有吸引力,前者可以增加销售额或者浏览量,后者可以更容易找到有趣的内容。这里我们专注于item
推荐。item
推荐任务是为一组item
创建user-specific
排序。用户对item
的偏好是从用户历史行为中获悉的,如用户的购买历史、观看历史等等。推荐系统是一个活跃的研究课题。最近的工作是关于用户提供显式反馈的场景,例如在评分方面。然而,在现实世界的场景中,大多数反馈不是显式而是隐式的。隐式反馈会自动跟踪,例如跟踪点击次数、浏览次数、购买次数等等。隐式反馈的收集要容易的多,因为用户不需要显式表达他的口味。事实上,几乎任何信息系统都已经可以使用隐式反馈,例如
web
服务器在日志文件中记录的任何页面浏览行为。在论文
《BPR: Bayesian Personalized Ranking from Implicit Feedback》
中,作者提出了一种用于学习个性化排序模型的通用方法。这项工作的主要贡献是:- 论文提出了从最大后验估计导出的、用于最佳个性化排序的通用优化标准
BPR-Opt
。论文展示了BPR-Opt
与AUC
的类比。 - 为了最大化
BPR-Opt
,论文提出了通用学习算法LearnBPR
,它基于随机梯度下降、以及对训练三元组的bootstrap
采样。论文表明作者的算法在优化BPR-Opt
方面优于标准的梯度下降方法。 - 论文展示了如何将
LearnBPR
应用于两个state-of-the-art
的推荐模型族。 - 论文的实验表明,对于个性化排序任务,使用
BPR
学习的模型优于其它学习方法。
- 论文提出了从最大后验估计导出的、用于最佳个性化排序的通用优化标准
相关工作:
推荐系统最流行的模型是
k-nearest neighbor: KNN
协同过滤。传统上,KNN
的相似度矩阵是通过启发式计算的,例如Pearson
相关性。但是在最近的工作《Factorization meets the neighborhood: a multifaceted collaborative filtering model》
中,相似度矩阵被视为模型参数,并为任务专门学习。最近,矩阵分解
matrix factorization: MF
在隐式反馈和显式反馈的推荐系统中变得非常流行。在早期的工作《Incremental singular value decomposition algorithms for highly scalable recommender systems》
中,作者已经提出奇异值分解singular value decomposition: SVD
来学习特征矩阵。SVD
学习的MF
模型已经被证明非常容易过拟合,因此人们使用正则化技术。对于item
预测,《Collaborative filtering for implicit feedback datasets》
和《One-class collaborative fi ltering》
提出了一种带有样本权重正则化的最小二乘优化(WR-MF
)。样本权重可用于减少负样本的影响。《Latent semantic models for collaborative filtering》
提出了一种用于item
推荐的概率潜在语义模型。《Compound classifi cation models for recommender systems》
将问题转变为多分类问题,并使用一组二分类器解决它。
尽管上面讨论的所有
item
预测工作都是在个性化排序数据集上进行评估的,但是这些方法都没有为排序任务直接优化模型参数。相反,他们优化模型参数从而预估用户是否会选择某个item
。在我们的工作中,我们导出了一个基于item pair
(即特定用户的两个item
之间的顺序)的个性化排序优化标准。我们将展示如何根据该标准优化MF
或者自适应kNN
等state-of-the-art
模型,从而提供比常规的学习方法更好的排序质量。我们还详细讨论了
《Collaborative filtering for implicit feedback datasets》
和《One-class collaborative fi ltering》
的WRMF
方法、以及《Improving maximum margin matrix factorization》
的maximum margin matrix factorization: MMMF
方法与我们方法之间的关系。我们还将讨论我们的优化准则和AUC
优化准则的关系。在本文中,我们专注于模型参数的离线学习。在评分预测相关的任务中,
《Online updating regularized kernel matrix factorization models for large-scale recommender systems》
已经为MF
研究了将学习方法扩展到在线学习的场景(如,添加一个新用户,然后新用户的历史行为记录从0
增加到1,2,...
)。相同的方法可用于BPR
。还有关于学习使用非协同过滤模型进行排序的相关工作(
《Efficient inference for distributions on permutations》
,《《Multiobject tracking with representations of the symmetric group》
)。一个方向是对排列的分布进行建模。《Learning to rank using gradient descent》
针对排序任务,使用梯度下降优化了一个神经网络模型。所有这些方法只学习一个排序,即它们是非个性化的。相反,我们的模型是学习个性化排序的协同过滤模型,即每个用户一个单独的排序。在我们的评估中,我们根据实验表明,在典型的推荐设置中,我们的个性化BPR
模型甚至优于非个性化排序的理论上限。个性化排序
personalized ranking
任务是为用户提供一个排序的item
列表,这也被称作item
推荐item recommendation
。例如,一家在线商城会向用户推荐用户可能想要购买的商品的个性化排序列表。在本文中,我们研究了从隐式反馈中推断ranking
的场景。隐式反馈有意思的地方在于,只有正的观察值是可用的。未观察到的user-item pair
(例如,用户尚未购买的商品)的真实反馈是未知的,可能是用户不喜欢(负反馈)、也可能是用户喜欢但是尚未见过。
12.1 BPR 准则
令 $ \mathbb U $ 为所有用户集合, $ \mathbb I $ 为所有
item
集合。推荐系统的任务是针对用户 $ u $ 提供个性化排名函数 $ \gt_u \sub \mathbb I\times \mathbb I $ ,其中 $ \gt_u $ 满足以下条件:- 完备性
totality
: $ \forall i,j\in \mathbb I: i\ne j \rightarrow (i \gt_u j) \; \or\; (j\gt_u i) $ 。 - 反对称性
antisymmetry
: $ \forall i,j\in \mathbb I: (i\gt_u j) \;\and \;(j\gt_u i) \rightarrow i= j $ 。 - 传递性
transitivity
: $ \forall i,j,k\in \mathbb I: (i\gt_u j)\; \and (j\gt_u k)\rightarrow i\gt_u k $ 。
- 完备性
常规的
item
推荐思路是预测用户 $ u $ 对item
$ i $ 的评分 $ \hat r_{u,i} $ ,从而反映用户对该item
的偏好。然后根据预估评分对item
进行排序。令隐式反馈数据 $ \mathbb S\sube \mathbb U\times \mathbb I $ 。定义缺失样本集合为 $ \complement_{\mathbb S} = \mathbb U\times \mathbb I - \mathbb S $ ,它为 $ \mathbb S $ 的补集。定义 $ \mathbb I_u^+ = \{i\in \mathbb I:(u,i)\in \mathbb S\},\quad \mathbb U_i^+ = \{u\in \mathbb U:(u,i)\in \mathbb S\} $ 。
在隐式反馈系统中,系统只能观察到用户的
postive
行为,剩余的数据是缺失值。一种解决缺失值的方法是忽略这些缺失值。但是直接忽略缺失值使得我们没有
negative
样本,从而模型无法学习。另一种解决缺失值的方法是将缺失值都是为
negative
行为。这意味着模型对 $ \mathbb S $ 中的样本预估为1
、对 $ \complement_{\mathbb S} $ 中的样本预估为0
。考虑到 $ \complement_{\mathbb S} $ 中的item
就是我们候选的、需要向用户推荐的item
,因此一个学习能力强的模型会根据这些negative
数据学到 $ \complement_{\mathbb S} $ 中所有得分都为零。 这意味着模型完全无法排序。目前该方法之所以有一定效果的原因是模型采取了一些缓解过拟合的策略,如正则化。
我们采用了不同的思路:使用
item pair
来训练模型从而优化item pair
的排名,而不是优化单个item
的得分。这相比使用negative
来代替缺失值更好地刻画了问题。我们从 $ \mathbb S $ 中构造训练样本。对于用户 $ u $ :
- 如果
item
$ i $ 已被用户购买,即 $ (u,i) \in \mathbb S $ ,则我们认为:相比于缺失item
,用户 $ u $ 更喜欢item
$ i $ 。 - 如果
item
$ i,j $ 有 $ (u,i)\in \mathbb S, (u,j)\in \mathbb S $ ,则我们无法比较它们之间的任何偏好。 - 如果
item
$ i,j $ 有 $ (u,i)\notin \mathbb S, (u,j)\notin \mathbb S $ ,则我们也无法比较它们之间的任何偏好。
因此我们构建训练集:
$ \mathbb D_{\mathbb S} = \{(u,i,j)\mid i\in \mathbb I_u^+\;\and\; j\in \complement_{\mathbb I_u^+}\} $其中 $ \complement_{\mathbb I_u^+} $ 为 $ \mathbb I_u^+ $ 的补集 : $ \complement_{\mathbb I_u^+} = \mathbb I - \mathbb I_u^+ $ 。
对于任何三元组 $ (u,i,j)\in \mathbb D_{\mathbb S} $ 意味着用户 $ u $ 在
item
$ i,j $ 之间更喜欢item
$ i $ 。由于 $ \gt_u $ 的反对称性,在提供正样本的同时也就提供了负样本。这种方式有两个优点:
训练集包含
postive pair
、negative pair
。 测试集包含所有缺失item pair
,这个刚好就是我们希望进行排序的目标item pair
。这意味着从pair-wise
角度来看,训练集 $ \mathbb D_{\mathbb S} $ 和测试集是不相交的。训练集包含的是 “(观测样本,未观测样本)” 的
pair
,而测试集是 “(未观测样本,未观测样本)” 的pair
,因此二者是不相交的。训练数据是为真实的
ranking
目标而构建的。
- 如果
在贝叶斯分析框架下,个性化排名的任务是:为每个
$ p(\Theta\mid \gt _u) = \frac{p(\Theta,\gt_u)}{p(\gt_u)} = \frac{p(\gt_u\mid \Theta)\times p(\Theta)}{p(\gt_u)} $item
$ i $ 最大化后验概率。即:考虑到 $ p(\gt_u) $ 与 $ \Theta $ 无关,因此有:
$ p(\Theta\mid \gt_u) \propto p(\gt_u\mid \Theta)\times p(\Theta) $其中 $ \gt_u $ 为用户的偏好, $ \Theta $ 为模型的参数。
假设用户之间彼此独立,并且假设用户 $ u $ 的
$ \prod_{u\in \mathbb U} p(\gt_u\mid \Theta) = \prod_{(u,i,j)\in \mathbb U\times \mathbb I\times \mathbb I} p(i\gt_u j\mid \Theta)^{\delta((u,i,j)\in \mathbb D_{\mathbb S})}\times (1-p(i\gt_u j\mid \Theta))^{\delta((u,i,j)\notin \mathbb D_{\mathbb S})} $item pair
之间的顺序也是相互独立的。因此 $ p(\gt_u\mid \Theta) $ 可以重写为:其中 $ \delta $ 为示性函数:
$ \delta(x) = \begin{cases} 1,&x = \text{ true}\\ 0,&\text{else} \end{cases} $进一步地,根据完备性和反对称性,我们有:
$ \prod_{u\in \mathbb U} p(\gt_u\mid \Theta) = \prod_{(u,i,j)\in \mathbb D_{\mathbb S}} p(i\gt _u j \mid \Theta) $目前为止,我们还无法确保得到个性化排序。为满足完备性、反对称性、传递性,我们定义用户 $ u $ 在
$ p(i\gt_u j \mid\Theta) = \sigma(\hat x_{u,i,j}(\Theta)) $item
$ i,j $ 之间的偏好概率为:其中: $ \sigma(x) $ 为
sigmoid
函数; $ \hat x_{u,i,j} $ 为一个模型,它捕获了用户 $ u $ 、item
$ i $ 、item
$ j $ 之间的关系。即:我们的
BPR
通用框架把对 $ u,i,j $ 之间的关系建模委托给了诸如矩阵分解、kNN
之类的基础模型,由这些模型来预估 $ \hat x_{u,i,j}(\Theta) $ 。通过这些基础模型以及BPR
框架,我们可以对个性化排序 $ \gt_u $ 进行建模。我们引入先验概率密度函数 $ p(\Theta) $ 为零均值、协方差矩阵为 $ \Sigma_{\Theta} $ 的高斯分布概率密度分布函数:
$ p(\Theta) \sim \mathcal N(\mathbf 0, \Sigma_{\Theta}) $为减少超参数数量,我们选择 $ \Sigma_{\Theta} = \lambda \mathbf I $ 。
$ \text{BPR-OPT}: \max\ln p(\Theta\mid \gt_u) = \max \ln \left(p(\gt_u\mid \Theta)\times p(\Theta)\right)\\ = \max \ln\left(\prod_{(u,i,j)\in \mathbb D_{\mathbb S}}\sigma\left(\hat x_{u,i,j}\right)p(\Theta)\right)=\max \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) + \ln p(\Theta)\\ = \max \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) - \lambda ||\Theta||^2 $BPR-OPT
:个性化排名通用准则BPR-OPT
是最大化后验估计 $ p(\Theta\mid \gt _u) $ ,因此有:其中 $ \lambda $ 为模型的正则化参数。
$ p(i\gt_u j \mid\Theta) = \sigma(\hat x_{u,i,j}(\Theta)) $ 的物理意义是观察到的
item
$ i $ 排序在未观察到的item
$ j $ 之前的概率。因此 $ \ln\sigma(\hat x_{u,i,j}) $ 为训练集排序成立的对数似然。
12.2 BPR 学习
和
$ \text{AUC}(u) = \frac{\sum_{i\in \mathbb I_u^+}\sum_{j\in \complement_{\mathbb I_u^+}} \delta(\hat x_{u,i,j} \gt 0)}{|\mathbb I_u^+|\times |\complement_{\mathbb I_u^+}|} $AUC
的联系:我们将BPR
和AUC
进行类比。用户维度的AUC
定义为:即在所有
postive item
和missing item
组合中,模型预估对postive item
和missing item
能够正确区分的概率。因此所有用户的平均
$ \text{AUC} = \frac{ \sum_u \text{AUC}(u)}{|\mathbb U|} $AUC
为:根据 $ \mathbb D_{\mathbb S} $ 的定义有:
$ \text{AUC}(u) = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}} z_u \delta(\hat x_{u,i,j} \gt 0) $其中 $ z_u $ 为归一化常数:
$ z_u = \frac{1}{ |\mathbb I_u^+|\times |\complement_{\mathbb I_u^+}|} $这和
$ \mathcal J = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) - \lambda ||\Theta||^2 $BPR-OPT
准则非常类似。BPR-OPT
的目标函数为:如果将这个代价函数视为损失函数(第一项)和正则化项(第二项),则
$ \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) $BPR-OPT
的损失函数为:这和
AUC
有两个区别:AUC
使用了归一化常数 $ z_u $ 。
$ \delta(x\gt 0) = H(x)=\begin{cases} 1,&x\gt 0\\ 0,&\text{else} \end{cases} $AUC
使用不可导的示性函数 $ \delta(\cdot) $ ,这等价于Heaviside
函数:通常在优化
AUC
时我们使用可导的 $ \sigma(x) $ 来替代不可导的Heaviside
函数。而
BPR-OPT
使用可导的损失函数 $ \ln\sigma(x) $ 。
学习算法:虽然我们已经导出了个性化排名的优化准则,并且该准则是可微的,但是我们无法利用标准的梯度下降算法来求解该最优化问题。为解决该最优化问题,我们提出了基于
bootstrap
采样的随机梯度下降算法LearnBPR
。
$ \nabla_{\Theta} \mathcal J = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}} \nabla_{\Theta} \ln \sigma(\hat x_{u,i,j}) - \lambda \nabla_{\Theta} ||\Theta||^2\\ = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}} \frac{-\exp(-\hat x_{u,i,j})}{1+\exp(-\hat x_{u,i,j})}\nabla_{\Theta} \hat x_{u,i,j} - \lambda \Theta $BPR-OPT
目标函数的梯度为:在
$ \Theta \leftarrow \Theta - \alpha \times \nabla_{\Theta} \mathcal J $full
随机梯度下降算法中,在每个step
需要计算所有训练样本的梯度,然后更新参数:这种方法可以确保每次参数更新的方向是正确的,但是缺点是计算复杂度太高: $ \mathbb D_{\mathbb S} $ 包含 $ O(|\mathbb S|\times |\mathbb I|) $ 个三元组,因此在每个
step
中计算完整的梯度不可行。另外,使用完整的梯度优化也会存在梯度倾斜问题,这也会拖慢训练的收敛速度:
- 不同的
item
为postive
的分布不同,因此我们很难选择一个合适的学习率:对于postive
较多的item
(梯度较大), 我们必须选择一个较小的学习率;对于postive
较少的item
(梯度较小) ,我们必须选择一个较大的学习率。 - 另外梯度分布差距太大,导致正则化系数的选择非常困难。
- 不同的
在随机梯度下降算法中,我们对单个三元组 $ (u,i,j)\in \mathbb D_{\mathbb S} $ 执行更新:
$ \Theta \leftarrow \Theta + \alpha \times \left( \frac{ \exp(-\hat x_{u,i,j})}{1+\exp(-\hat x_{u,i,j})}\nabla_{\Theta} \hat x_{u,i,j} + \lambda \Theta\right) $这可以解决梯度倾斜问题。但是,随机梯度下降依赖于样本的遍历顺序,需要确保每次都是随机选择 $ (u,i,j)\in \mathbb D_{\mathbb S} $ 。
LearnBPR
学习算法采用每次均匀随机选择三元组 $ (u,i,j)\in \mathbb D_{\mathbb S} $ 的随机梯度下降算法。通过这种方式,在连续更新step
中选择相同user-item
组合的机会很小。我们建议使用bootstrap
采样方法,这样可以在任何step
来停止。在我们的案例中,放弃完整epoch
循环的想法特别有用,因为样本数量巨大,并且只需要整个epoch
的一小部分模型就能收敛。这就是
batch
随机梯度下降,并且batch
是随机选择(而不是user-wise
或者item-wise
选择)。下图给出了典型的
user-wise
随机梯度下降,以及LearnBPR
随机梯度下降的收敛速度。可以看到learnBPR
随机梯度下降的收敛速度更快。
12.3 模型结合 BPR
这里我们展示如何将
BPR
和经典的矩阵分解、kNN
模型融合。在
$ \hat x_{u,i,j} = \hat x_{u,i} - \hat x_{u,j} $BPR-OPT
通用框架中,我们需要利用其它模型来预估 $ \hat x_{u,i,j} $ 。我们将 $ \hat x_{u,i,j} $ 定义为:现在我们可以使用标准的协同过滤算法来预估 $ \hat x_{u,l} $ 。
- 即使我们使用了和别人一样的模型,我们和它也有本质的不同:我们采用了另一个准则来优化模型,这会导致更好的排序结果。因为我们的准则是直接优化个性化排名。
- 我们的准则并不是尝试通过单个预估值 $ \hat x_{u,l} $ 来拟合某个目标,而是试图拟合两个预估值 $ \hat x_{u,i} - \hat x_{u,j} $ 之间的差异。
矩阵分解结合
BPR
:假设每个用户 $ u $ 关联一个representation
向量 $ \mathbf{\vec w}_u\in \mathbb R^k $ , 每个item
$ i $ 关联一个representation
$ \mathbf{\vec h}_i\in \mathbb R^k $ , $ k $ 为representation
向量维度。用户 $ u $ 对item
$ i $ 的预估值为: $ \hat x_{u,i} = \mathbf{\vec w}_u \cdot \mathbf{\vec h}_i $ 。则有:
$ \hat {\mathbf X} = \mathbf W\mathbf H^\top $其中 $ \mathbf W\in \mathbb R^{|\mathbb U|\times k} $ 的各行由所有用户向量 $ \mathbf{\vec w}_u $ 组成 , $ \mathbf H\in \mathbb R^{|\mathbb I|\times k} $ 的各行由所有
item
向量 $ \mathbf{\vec h}_i $ 组成, $ k $ 远小于用户或item
的数量, $ \hat{\mathbf X} $ 为评分矩阵 $ \mathbf X $ 的估计值。该模型称作矩阵分解
Matrix Factor
,模型的参数为 $ \Theta=(\mathbf W,\mathbf H) $ 。可以通过奇异值分解
SVD
来求解参数 $ \mathbf W $ 和 $ \mathbf H $ ,但是该方法很容易陷入过拟合。为此,一些机器学习方法引入了其它的矩阵分解技术,如:带正则化的矩阵分解、非负矩阵分解non-negative MF
、最大裕量矩阵分解maximum margin factorization
等等。对于个性化排名任务,更好的方法是采用
BPR-OPT
准则进行优化,称作BPR-MF
。对于使用了
$ \frac{\partial}{\partial \theta}\hat x_{u,i,j} = \begin{cases} (h_{i,j} - h_{j,f}),&\text{if}\; \theta = w_{u,f}\\ w_{u,f},&\text{if}\; \theta = h_{i,f}\\ -w_{u,f},&\text{if}\; \theta = h_{j,f}\\ 0,&\text{else} \end{cases} $BPR-OPT
准则的矩阵分解模型,LearnBPR
优化时使用的梯度为:另外我们还引入三个正则化约束:
- 使用 $ \lambda_{\mathbf W} $ 来约束用户
representation
矩阵 $ \mathbf W $ 。 - 使用 $ \lambda_{\mathbf H^+} $ 来约束 $ h_{i,f} $ 上的
positive
更新 。 - 使用 $ \lambda_{\mathbf H^-} $ 来约束 $ h_{j,f} $ 上的
negative
更新。之所以拆分 $ \lambda_{\mathbf H^+} $ 和 $ \lambda_{\mathbf H^-} $ 是因为postive
样本和negative
样本的规模差异巨大。
- 使用 $ \lambda_{\mathbf W} $ 来约束用户
自适应
kNN
结合BPR
:kNN
可以基于item
之间的相似或者user
之间的相似来建模,这里我们介绍基于item
相似的kNN
方法,但是基于user
相似性的kNN
方法原理类似。基于
item
相似的kNN
的基本思想是:用户 $ u $ 在item
$ i $ 上的预估值依赖于item
$ i $ 和 $ \mathbb I_u^+ $ 上item
的相似性。通常我们仅使用 $ \mathbb I_u^+ $ 中和item
$ i $ 最相似的top k
个item
,即kNN
。最终基于
$ \hat x_{u,i} = \sum_{l\in \mathbb I_u^+\;\and\; l\ne i} c_{i,l} $item
的kNN
模型为:其中 $ \mathbf C\in \mathbb R^{|\mathbb I|\times |\mathbb I|} $ 为
item
之间的相似度矩阵,它也是模型的参数 $ \Theta = \mathbf C $ 。注意:这里假设
postive
得分为1
、negative
得分为0
。因此最终预估评分就是top k
个item
的相似度之和。另外,有的方法也对相似度矩阵按行进行归一化。大多数方法使用启发式的相似度函数,如余弦相似度:
$ c_{i,j} = \frac{|\mathbb U_i^+ \cap \mathbb U_j^+|}{\sqrt{|\mathbb U_i^+|\times |\mathbb U_j^+|}} $一个更好的方法是通过学习相似度矩阵 $ \mathbf C $ 来自适应:直接将 $ \mathbf C $ 作为模型参数。如果 $ \mathbf C $ 规模太大,我们也可以对其进行矩阵分解: $ \mathbf C = \mathbf H\mathbf H^\top $ 。其中我们只需要学习参数 $ \mathbf H\in \mathbb R^{|\mathbb I|\times k} $ 。
我们考虑通过
$ \frac{\partial }{\partial \theta} \hat x_{u,i,j} = \begin{cases} +1 ,&\text{if}\;\theta \in \{c_{i,l},c_{l,i}\}\;\and\; l\in \mathbb I_u^+\;\and\;l \ne i\\ -1,&\text{if}\;\theta \in \{c_{j,l},c_{l,j}\}\;\and\; l\in \mathbb I_u^+\;\and\;l \ne j\\ 0,&\text{else} \end{cases} $BPR-OPT
准则和LearnBPR
学习方法来利用kNN
对个性化排序进行建模,称作kNN-BPR
。LearnBPR
优化时采用的梯度为:另外我们还引入两个正则化约束:
- $ \lambda_+ $ 用于更新 $ c_{i,l} $ 。
- $ \lambda_{-} $ 用于更新 $ c_{j,l} $ 。
12.3 BPR VS WR-MF 、MMMF
这里我们讨论
BPR
和WR-MF
以及MMMF
模型之间的联系。
$ \mathcal J = \sum_{(u,i)\in \mathbb S} c_{u,i}\left(1 - \mathbf{\vec w}_u\cdot \mathbf{\vec h}_i \right)^2 + \lambda\left(||\mathbf W||_F^2 + ||\mathbf H||^2_F\right) $Weighted Regularized Matrix Factorization:WR-MF
用于从隐式反馈数据中执行矩阵分解(参考Implicit Feedback CF
章节),其模型为:其中 $ ||\cdot||_F $ 为矩阵的
F
范数, $ c_{u,i} $ 为user-item
组合的先验权重。例如,对于所有postive
样本选择 $ c_{i,j} =1 $ 、对于所有negative
样本选择 $ c_{i,j} \lt 1 $ 。这里假设正样本的评分为
1
、负样本评分为0
,因此 $ (1-\mathbf{\vec w}\cdot \mathbf{\vec h}) $ 为残差。和
BPT-OPT
的 $ \mathcal J = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) - \lambda ||\Theta||^2 $ (应该取负号,从而最小化目标函数)相比可以发现:BPT-OPT
是对每个用户 $ u $ 优化的是一对item pair
,而WR-MF
优化的是单个item
。BPT-OPT
的损失函数为逻辑回归损失,而WR-MF
的损失函数为最小平方误差。但是
item
预测实际上不是回归任务(定量分析),而是分类任务(定性分析),因此用逻辑回归损失更合适。BPT-OPT
对每个损失的权重为1
,而WR-MF
对每个损失的权重为 $ c_{i,j} $ 。
$ \mathcal J = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\max \left(0,1- \mathbf{\vec w}_u\cdot (\mathbf{\vec h}_i - \mathbf{\vec h}_j) \right) + \lambda_w||\mathbf W||_F^2 + \lambda_h||\mathbf H||_F^2 $Maximum Margin Matrix Factorization:MMMF
并不适合于隐式反馈数据集。我们可以将缺失值设置为0
、将非缺失值设置为1
。通过这些修改,MMMF
的目标函数为:和
BPT-OPT
的 $ \mathcal J = \sum_{(u,i,j)\in \mathbb D_{\mathbb S}}\ln\sigma(\hat x_{u,i,j}) - \lambda ||\Theta||^2 $ 相比可以发现:BPT-OPT
的损失函数为逻辑回归损失,而MMMF
的损失函数为hinge
损失。BPT-OPT
准则是通用的,可应用于多种模型;而MMMF
方法仅针对矩阵分解。
MMMF
:正负样本预估得分之间的差距尽可能大;BPT-OPT
:正样本预估得分大于负样本预估得分的概率尽可能大。二者都是排序关系,因此思想上是相近的。如果将Hinge
损失替换为逻辑回归损失,则MMMF
等价于BPT-OPT
。
12.4 实验
数据集:
Rossmann
数据集:一个在线商店数据集,包含10000
个用户在4000
个item
上的购买历史,总共有426612
条购买记录。我们的任务是为用户推荐该用户下一次可能购买的商品的列表。Netflix
数据集:一个DVD
出租数据集,包含用户在电影上的显式评分,评分从1~5
共五个等级。由于我们需要解决隐式反馈任务,因此我们从数据集中删除了评分分数。现在的任务是预测用户是否可能为电影评分。我们从原始数据集中采样了
10000
个用户、5000
个item
,包含565738
个评分。采样时,我们选择至少对10部电影进行评分的用户 $ \{u\mid |\mathbb I_u^+|\gt 10\} $ , 以及每个item
至少有10个用户观看 $ \{i\mid |\mathbb U_i^+|\gt 10\} $ 。
baseline
模型:我们选择了矩阵分解MF
和kNN
这两种流行的模型。- 对于矩阵分解模型,我们采用三种不同的方法来实现:标准矩阵分解
SVD-MF
、带权重矩阵分解WR-MF
、基于BPR-OPT
优化准则的矩阵分解BPR-MF
。 - 对于
kNN
模型,我们采用两种不同的方法来实现: 基于余弦相似度的kNN
方法cosin-kNN
、基于BPR-OPT
优化准则的自适应kNN
方法BPR-kNN
。 - 另外我们还比较了基于热门程度的
baseline
方法:根据item
热门程度排名,然后为每个用户 $ u $ 选择其中的top
热门的item
。这也是一种非个性化的推荐,即所有用户推荐的item
都相同。
- 对于矩阵分解模型,我们采用三种不同的方法来实现:标准矩阵分解
实验配置:我们使用留一法
$ \text{AUC} = \frac{1}{|\mathbb U|} \sum_u \frac{1}{|\mathbb T(u)|}\sum_{(i,j)\in \mathbb T(u)}\delta(\hat x_{u,i}\gt \hat x_{u,j}) $leave one out
来评估。对于每个用户随机删除一条历史记录,并将该历史记录作为测试集。这样我们得到了不相交的训练集 $ \mathbb S_{\text{train}} $ 以及测试集 $ \mathbb S_{\text{test}} $ 。我们在训练集上训练各个模型,并在测试集上评估模型,评估指标是测试集的平均AUC
:其中 $ \mathbb T(u) $ 为每个用户的评估数据,它由保留的那一条
$ \mathbb T(u) = \{(i,j)\mid (u,i)\in \mathbb S_{\text{test}}\;\and \;(u,j)\ne (\mathbb S_{\text{test}}\cup \mathbb S_{\text{train}})\} $item
,以及所有的缺失item
组成:AUC
的值越高表明模型效果越好。随机猜测的AUC
为0.5
, 最好的AUC
为1.0
。即对每个用户 $ u $ ,评估其测试集中唯一的正样本和未观测样本之间的排序。
我们还给出了非个性化推荐方法的理论
AUC
上界 $ \text{np}_{\max} $ ,这是通过在测试集 $ \mathbb S_{\text{test}} $ 上搜索最佳的排名 $ \gt $ 函数(不是 $ \gt_u $ ,因为非个性化推荐与用户无关),从而得到理论上的非个性化排名的上界。对于每种实验配置,随机重复执行
10
次,在每一次都随机拆分训练、测试集。所有模型的超参数都在第一次执行时采用grid search
搜索,并在剩余9
次保持不变。在两个数据集上所有模型的效果如下。结论:
BPR-MR
和BPR-kNN
均优于其它所有方法。这表明我们的BPR-OPT
准则以及对应的LearnBPR
学习方法在个性化排序任务中的效果。尽管所有的矩阵分解方法
SVD-MF,WR-MF,BPR-MF
采用完全相同的模型(即MF
),但是它们的效果差别很大。SVD-MF
可以对训练数据拟合的更好,但是它会陷入严重的过拟合。这可以从SVD-MF
随着维度的增加,测试AUC
反而下降来观察到。WR-MF
相比之下更为成功。由于正则化的效果,当维度增加时WR-MF
的效果并未下降。BPR-WF
在所有数据集上都超越了SVD-MF
和WR-MF
。
即使是
cosin-kNN
这样最简单的个性化推荐方法也超越了非个性化的 $ \text{np}_{\max} $ ,因此也意味着超越了所有的非个性化方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论