损失函数
Published on Aug. 22, 2023, 12:11 p.m.
损失函数
评价模型预测值和真实值的函数为损失函数(loss function)。它是一个非负实值函数,损失函数越小,模型的性能就越好。
o L1 loss也称Mean Absolute Error,简称MAE,计算实际值和预测值之间的绝对差之和的平均值。
o L2 loss也称为Mean Squared Error,简称MSE,计算实际值和预测值之间的平方差的平均值。
· 分类损失函数(Classification loss)
o 交叉熵损失函数(Cross-Entroy Loss Function)
· 排序损失函数(Ranking loss)
· Learning to Rank (LTR)是指一系列基于机器学习的排序算法,最初主要应用于信息检索(Information Retrieval,IR)领域,最典型的是解决搜索引擎对搜索结果的排序问题。除了信息检索以外,Learning to Rank 也被应用到许多其他排序问题上,如商品推荐、计算广告、生物信息学等。
o PointWise单文档方法的处理对象是单独的一篇文档,将文档转换为特征向量后,机器学习系统根据从训练数据中学习到的分类或者回归函数对文档打分,打分结果即是搜索结果
o Learning to Rank (LTR)是指一系列基于机器学习的排序算法,最初主要应用于信息检索(Information Retrieval,IR)领域,最典型的是解决搜索引擎对搜索结果的排序问题。除了信息检索以外,Learning to Rank 也被应用到许多其他排序问题上,如商品推荐、计算广告、生物信息学等。在二分类中,常常使用Precision, Recall, ROC 曲线,AUC来评价一个模型的性能,然而这些指标很难对多分类模型进行准确的评价。
§ 分类
· Discriminative model for IR (SIGIR 2004)
· McRank (NIPS 2007)
§ 回归
· Least Square Retrieval Function (TOIS 1989)
· Regression Tree for Ordinal Class Prediction (Fundamenta Informaticae, 2000)
· Subset Ranking using Regression (COLT 2006)
§ Ordinal Classification
· Ranking with Large Margin Principles (NIPS 2002)
· Constraint Ordinal Regression (ICML 2005)
o PairWise对于搜索系统来说,系统接收到用户査询后,返回相关文档列表,所以问题的关键是确定文档之间的先后顺序关系。单文档方法完全从单个文档的分类得分角度计算,没有考虑文档之间的顺序关系。文档对方法将排序问题转化为多个pair的排序问题,比较不同文章的先后顺序。
o 但是文档对方法也存在如下问题:文档对方法考虑了两个文档对的相对先后顺序,却没有考虑文档出现在搜索列表中的位置,排在搜索结果前面的文档更为重要,如果靠前的文档出现判断错误,代价明显高于排在后面的文档。同时不同的査询,其相关文档数量差异很大,所以转换为文档对之后, 有的查询对能有几百个对应的文档对,而有的查询只有十几个对应的文档对,这对机器学习系统的效果评价造成困难常用PairWise实现:SVM RankRankNet(2007)RankBoost(2003)配对法的基本思路是对样本进行两两比较,构建偏序文档对,从比较中学习排序,因为对于一个查询关键字来说,最重要的其实不是针对某一个文档的相关性是否估计得准确,而是要能够正确估计一组文档之间的 “相对关系”。因此,Pairwise 的训练集样本从每一个 “关键字文档对” 变成了 “关键字文档文档配对”。也就是说,每一个数据样本其实是一个比较关系,当前一个文档比后一个文档相关排序更靠前的话,就是正例,否则便是负例,如下图。试想,有三个文档:A、B 和 C。完美的排序是 “B>C>A”。我们希望通过学习两两关系 “B>C”、“B>A” 和 “C>A” 来重构 “B>C>A”。这里面有3个非常关键的假设:我们可以针对某一个关键字得到一个完美的排序关系。在实际操作中,这个关系可以通过相关标签来获得,也可以通过其他信息获得,比如点击率等信息。然而,这个完美的排序关系并不是永远都存在的。试想在电子商务网站中,对于查询关键字 “哈利波特”,有的用户希望购买书籍,有的用户则希望购买含有哈利波特图案的 T 恤,显然,这里面就不存在一个完美排序。我们寄希望能够学习文档之间的两两配对关系从而 “重构” 这个完美排序。然而,这也不是一个有 “保证” 的思路。用刚才的例子,希望学习两两关系 “B>C”、“B>A” 和 “C>A” 来重构完美排序 “B>C>A”。然而,实际中,这三个两两关系之间是独立的。特别是在预测的时候,即使模型能够正确判断 “B>C” 和 “C>A”,也不代表模型就一定能得到 “B>A”。注意,这里的关键是 “一定”,也就是模型有可能得到也有可能得不到。两两配对关系不能 “一定” 得到完美排序,这个结论其实就揭示了这种方法的不一致性。也就是说,我们并不能真正保证可以得到最优的排序。我们能够构建样本来描述这样的两两相对的比较关系。一个相对比较简单的情况,认为文档之间的两两关系来自于文档特征(Feature)之间的差异。也就是说,可以利用样本之间特征的差值当做新的特征,从而学习到差值到相关性差异这样的一组对应关系。## 配对法(Pairwise)的缺点Pairwise 方法通过考虑两两文档之间的相关对顺序来进行排序,相比 Pointwise 方法有明显改善。但 Pairwise 方法仍有如下问题:使用的是两文档之间相关度的损失函数,而它和真正衡量排序效果的指标之间存在很大不同,甚至可能是负相关的,如可能出现 Pairwise Loss 越来越低,但 NDCG 分数也越来越低的现象。只考虑了两个文档的先后顺序,且没有考虑文档在搜索列表中出现的位置,导致最终排序效果并不理想。不同的查询,其相关文档数量差异很大,转换为文档对之后,有的查询可能有几百对文档,有的可能只有几十个,这样不加均一化地在一起学习,模型会优先考虑文档对数量多的查询,减少这些查询的 loss,最终对机器学习的效果评价造成困难。Pairwise 方法的训练样例是偏序文档对,它将对文档的排序转化为对不同文档与查询相关性大小关系的预测;因此,如果因某个文档相关性被预测错误,或文档对的两个文档相关性均被预测错误,则会影响与之关联的其它文档,进而引起连锁反应并影响最终排序结果。Pairwise常用算法:Learning to Retrieve Information (SCC 1995)Learning to Order Things (NIPS 1998)Ranking SVM (ICANN 1999)RankBoost (JMLR 2003)LDM (SIGIR 2005)RankNet (ICML 2005)Frank (SIGIR 2007)MHR(SIGIR 2007)GBRank (SIGIR 2007)QBRank (NIPS 2007)MPRank (ICML 2007)IRSVM (SIGIR 2006)LambdaRank (NIPS 2006)LambdaMART (inf.retr 2010)
§ RankNet
§ RankNet是一个pairwise模型,上文介绍在pairwise模型中,将排序问题转化为多个pair的排序问题,比较文档di排在文档dj之前的概率。最终的输出的sigmoid函数,RankNet采用神经网络模型优化损失函数,故称为RankNet。RankNet是2005年微软提出的一种pairwise的Learning to Rank算法,它从概率的角度来解决排序问题。RankNet的核心是提出了一种概率损失函数来学习Ranking Function,并应用Ranking Function对文档进行排序。这里的Ranking Function可以是任意对参数可微的模型,也就是说,该概率损失函数并不依赖于特定的机器学习模型,在论文中,RankNet是基于神经网络实现的。除此之外,GDBT等模型也可以应用于该框架。相关性概率我们先定义两个概率:预测相关性概率、真实相关性概率。
· github
§ 超链接 LambdaMART
§ lambdaMART我们知道GBDT算法每一次迭代中, 需要学习上一次结果和真实结果的残差。在lambdaMART中,每次迭代用的并不是残差,lambda在这里充当替代残差的计算方法。
§ SVM Rank
§ RankBoost
§ 贝叶斯个性化排序(Bayesian personalized ranking,BPR)
o ListWise:单文档方法将训练集里每一个文档当做一个训练实例,文档对方法将同一个査询的搜索结果里任意两个文档对作为一个训练实例,文档列表方法与上述两种方法都不同,ListWise方法直接考虑整体序列,针对Ranking评价指标进行优化。
o 常用的MAP, NDCG。常用的ListWise方法有:LambdaRankAdaRankSoftRankLambdaMART列表法(Listwise)的应用代表算法:基于 Measure-specific 的 SoftRank、SVM-MAP、SoftRank、LambdaRank、LambdaMART基于 Non-measure specific 的 ListNet、ListMLE、BoltzRank。推荐中使用较多的 Listwise 方法是 LambdaMART。列表法(Listwise)的缺点列表法相较单点法和配对法针对排序问题的模型设计更加自然,解决了排序应该基于 query 和 position 问题。但列表法也存在一些问题:一些算法需要基于排列来计算 loss,从而使得训练复杂度较高,如 ListNet 和 BoltzRank。位置信息并没有在 loss 中得到充分利用,可以考虑在 ListNet 和 ListMLE 的 loss 中引入位置折扣因子。Listwise常用算法:Measure-specificAdaRank (SIGIR 2007)SVM-MAP (SIGIR 2007)SoftRank (LR4IR 2007)RankGP (LR4IR 2007)LambdaMART (inf.retr 2010)(也可以做Listwise)Non-measure specificListNet (ICML 2007)ListMLE (ICML 2008)BoltzRank (ICML 2009)
§ ListNet
§ ListMLE
· 相关资料
o 损失函数总结
o 损失函数总结 排序损失函数
o 超链接 机器学习常用损失函数以及各种排序算法,python实现
o 超链接 排序优化算法Learning to Ranking
· 超链接 回归损失函数(Regression loss)
·