LambdaLoss | Google排序学习优化框架
今天分享一篇谷歌在CIKM'18上发表的排序学习listwise损失函数优化的论文「LambdaLoss」[1],可以认为是沿袭着微软早期代表性工作[2]的路线,即:,对learning2rank的一些模型做了一个比较系统性的一个解释框架,从排序优化度量指标(metric)的视角提出了统一的优化框架,通过EM算法,可以和家喻户晓的listwise优化方法Lambda梯度联系起来,个人觉得非常有意思。
另外,我们还建立了自然语言处理、推荐搜索、智能对话、知识图谱等方向的讨论组,欢迎大家加入讨论(人数达到上限,添加下方好友手动邀请),注意一定备注喔!
现状
主流的排序算法中,不管是pointwise还是pairwise都不能直接优化排序度量指标,如NDCG等。在listwise中,我们通过定义「Lambda梯度」来优化排序度量指标,如LambdaRank和LambdaMART,然而Lambda梯度是一种经验性方法,缺乏理论指导。谷歌在CIKM'18上,提出了优化排序度量指标的概率模型框架,叫做「LambdaLoss」[2],提供了一种EM算法来优化Metric驱动的损失函数。文中提到LambdaRank中的Lambda梯度在LambdaLoss框架下,能够通过定义一种良好、特殊设定的损失函数求解,提供了一定的理论指导。
传统的pointwise或pairwise损失函数是平滑的凸函数,很容易进行优化。有些工作已经证明「优化这些损失」的结果是「真正排序度量指标」的界,即实际回归或分类损失函数是排序度量指标误差(度量指标取相反数)的上界[3],不断最小化损失函数这一上界,能够达到最小化度量指标误差的目的,这个思想和ELBO (Evidence lower bound) 如出一辙。但是这个上界粒度比较粗,因为优化不是metric指标驱动的。很自然的想法是,如何得到一种更加逼近真正排序度量指标误差的损失函数。
然而,直接优化排序指标的挑战在于,排序指标依赖于列表的排序结果,而列表的排序结果又依赖于每个物品的得分,导致排序指标曲线要么不是平坦的,要么不是连续的,即非平滑,也非凸。因此,梯度优化方法不实用,尽管有些非梯度优化方法可以用,但是时间复杂度高,难以规模化。为了规模化,目前有3种途径,
1.近似法,缺点是非凸,容易陷入局部最优;
2.将排序问题转成结构化预测问题,在该方法中排序列表当做最小单元来整体对待,损失定义为实际排序列表和最理想排序列表之间的距离,缺点是排序列表排列组合数量太大,复杂度高;
3.使用排序指标在迭代过程中不断调整样本的权重分布(回顾下WRAP就是这种,LambdaRank也属于这种,
就可以看做是权重。这个方法优点是既考虑了排序指标,同时也是凸优化问题。
本文的动机之一就是探索LambdaRank中提出的Lambda梯度真正优化的损失函数是什么。文章通过提出LambdaLoss概率框架,来解释LambdaRank可以通过EM算法优化LambdaLoss得到。进一步,可以在LambdaLoss框架下,定义基于排序和得分条件下,metric-driven的损失函数。
LambdaLoss框架
假定给定文档集合下,不同文档的模型预测得分
确定了一个关于所有可能排序排列组合的分布,即,其中是其中一种排序列表结果。也就是说,模型可以得到多种排序结果,而每种排序结果下,文档真实标签的似然是不同的(pairwise loss只和有关,而Lambda梯度不仅和有关,还和位置(即排序)有关)。我们将看做隐变量,则真实标签的似然关于该隐变量分布的期望如下:
我们的目标是学习排序模型
来最大化该期望(可以类比EM算法中的,我们这里的是EM中的,因为我们要最大化的是文档的标签的似然值)。
则负对数似然为(考察了List-Level的损失):
这个式子有两个核心要素,1是排序分布
,2是似然。这两个核心要素取不同形式,会得到不同的损失函数。
似然
不同形式:
Logistic: ,此时
和没关系,只和得分之间的相对关系有关。则,,故负对数似然求和公式中可以把该似然式子提到求和的外面(和没关系),则排序分布求和为1,可以约掉,则损失等价于Logistic Loss,,注意是参数。generalized logistic: 。这是带指数的广义Logistic分布。此处使用了
代表排序列表和(交换i和j)的NDCG值的差。下面会证明通过EM算法可以根据该式得到LambdaRank的损失函数。借鉴上述的思想,可以得到如下「1个」文档级别的训练样本的损失函数:(我将其称为 ranking-sensitive pairwise loss),
至于排序分布
,作者举了上述LambdaLoss框架中,使用高斯分布作为排序分布时,等价于我们熟知的[4]方法,而使用Plackett-Luce作为排序分布时,等价于我们熟知的ListNet[5]算法。
使用EM算法优化上述损失:
E步:根据当前模型
计算隐变量的分布.M步:固定
,重新在complete数据集上最小化负对数似然,并优化模型参数。其中,完整数据集为:。目标是优化如下损失:。
C是抽样得到的所有的训练样本(每个训练样本都是文档列表级别的,由
构成,也可以理解为E步会对每个原始文档集合排序(),得到的所有文档集合排序结果构成M步的训练样本),M步在C上求期望损失。
其中,
其中,
是根据分布采样得到的。
更特殊的,直接使用hard assignment distribution来表示
。
其中,
是按照得分降序排序得到的列表。(此时EM算法和K-means中的优化方法一样,可以将K-means中E步将样本归入到某个类别簇 类比为 此处对文档列表排一个序,每种序对应一个类别,类别是隐向量;将文档按照得分降序得到唯一的序类比于K-means中将某个样本硬性(hard)的归入到一个具体的类。)
此时,可以通过推导下述负对数似然损失函数得到LambdaRank的损失函数:
E步:根据当前模型计算所有文档的得分,然后按照得分降序排序,得到排序结果
。M步:所有Complete的「文档列表」的损失简化为:
进一步,代入generalized logistic可得到:
因此,上式是LambdaRank潜在的损失函数。
作者进一步给出了定义Metric-driven Loss的方法:
LamdaLoss中一个最具吸引力的特性是,似然部分
既考虑了得分,又考虑了排序。这提供了一个沟通依赖于得分的传统损失函数(e.g., pairwise loss)和依赖于排序的排序度量指标(e.g., NDCG)的桥梁。
作者给出一些常用的排序度量指标的metric-driven Loss。主要利用0-1Loss的上界为Logistic Loss这一性质。比如:Average Relevance Position指标:
,ARP是cost-based function,越小越好。
此时在LambdaLoss框架下的,相应的损失函数为,
:
「上述推导有2个技巧」:
1.把ranking中的position
转成形式:
2.把Metric转成Metric-driven loss过程中,先整理成generalized logistic形式,这个就是排序分布
,再利用EM算法中概率排序分布取hard assignment distribution,将generalized logistic进一步改写成;再取负对数得到损失。另外文中还给出了ARP的另一种损失。
作者还推导了NDCG的LambdaLoss,由于NDCG是gain-based function,故先转成Loss:
其中,
,对于给定的文档列表,是个常数 (和排序无关,公式中分子只和标签有关, 分母是最优的DCG值,是个常数。所以可以直接加到损失函数中);第二项其实就是NDCG(, ),这么定义是因为下文推导方便。
因为:
,有:
同理可得,LmabdaLoss损失为:
上述问题是
太大时,上界太松了。因此,作者又提出了另一种损失,利用了性质(这个性质有待证明)。最后可以推导出NDCG第二种形式的损失(「关键」):
上式的好处在于,可以通过重新定义
和来扩展出很多NDCG-like metrics的LambdaLoss。也可以用来优化binary情况下的,MRR-like metrics。
作者还推导出上述得到的LambdaRank Loss优化结果实际上是优化如下metric的上界,
可以证明,使用LambdaLoss优化该metric得到的,即:LambaLoss优化对应的度量指标误差上界比LambdaRank优化对应的度量指标误差的上界更紧,因此LambdaLoss的优化结果更逼近真实的NDCG指标。
另外,上述讨论都基于hard assignment
。作者也考虑了soft assignment,并作为下一步工作。
总结
非常有意思的文章,通过LambdaLoss框架,可以加深对Lambda梯度的理解。
可以发现lambdaRank的Lambda梯度的优化方法可以通过EM来推导。
lambdaRank有没有潜在的损失函数以及是如何和评价指标NDCG关联上的?lambdaRank的loss本质上是优化ndcg的一个较为粗糙的上界。如果纯从逼近优化ndcg的目标,文中也推导出了ndcg-loss1和ndcg-loss2的表达式,其作为NDCG度量指标误差的上界,能够比lambdaRank更紧。
最后,本篇文章中提到的LambdaLoss值得在搜索推荐等场景中尝试。
参考
[1] CIKM18: The LambdaLoss Framework for Ranking Metric Optimization:https://storage.googleapis.com/pub-tools-public-publication-data/pdf/1e34e05e5e4bf2d12f41eb9ff29ac3da9fdb4de3.pdf
[2] From RankNet to LambdaRank toLambdaMART: An Overview:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.180.634&rep=rep1&type=pdf
[3] mcrank-learning-to-rank-using-multiple-classification-and-gradient-boosting:https://papers.nips.cc/paper/3270-mcrank-learning-to-rank-using-multiple-classification-and-gradient-boosting.pdf
[4] SoftRank:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.469.3608&rep=rep1&type=pdf
[5] ListNet:https://www.microsoft.com/en-us/research/publication/learning-to-rank-from-pairwise-approach-to-listwise-approach/?from=http%3A%2F%2Fresearch.microsoft.com%2Fapps%2Fpubs%2Fdefault.aspx%3Fid%3D70428
- END -
推荐系统技术演进趋势:召回篇
2021-04-06
重磅整理!推荐系统之深度召回模型综述(PART III)
2021-04-01
深度学习最常用的10个激活函数!
2021-03-06
业务,工程和算法的互殴现场
2021-03-03
LambdaLoss | Google排序学习优化框架相关推荐
- 机器学习与计算机视觉(移动端深度学习优化框架)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 我们利用tensorflow.keras.caffe或者mxnet训练好的模型总要移植到嵌入式设 ...
- 【推荐系统】推荐系统中的排序学习
" 本文首先介绍排序学习的三种主要类别,然后详细介绍推荐领域最常用的两种高层排序学习算法框架:BPR和LambdaMART.因为排序学习的算法和实践大都来源于信息检索,一些理论也必须从信息检 ...
- 推荐系统中的排序学习
" 本文首先介绍排序学习的三种主要类别,然后详细介绍推荐领域最常用的两种高层排序学习算法框架:BPR和LambdaMART.因为排序学习的算法和实践大都来源于信息检索,一些理论也必须从信息检 ...
- 滴滴Booster移动APP质量优化框架 学习之旅 二
推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 续写滴滴Booster移动APP质量优化框架学习之旅,上篇文章分 ...
- Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法
作者|Juliuszh 链接 | https://zhuanlan.zhihu.com/juliuszh 本文仅作学术分享,若侵权,请联系后台删文处理 机器学习界有一群炼丹师,他们每天的日常是: 拿来 ...
- TensorFlow:实战Google深度学习框架(六)图像数据处理
第七章 图像数据处理 7.1 TFRecord输入数据格式 TensorFlow提供了一种统一的格式来存储数据--TFRecord格式 7.1.1 TFRecord格式介绍 7.1.2 TFRecor ...
- TensorFlow:实战Google深度学习框架(四)MNIST数据集识别问题
第5章 MNIST数字识别问题 5.1 MNIST数据处理 5.2 神经网络的训练以及不同模型结果的对比 5.2.1 TensorFlow训练神经网络 5.2.2 使用验证数据集判断模型的效果 5.2 ...
- 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记
一.图像识别问题简介及经典数据集 图像识别问题希望借助计算机程序来处理.分析和理解图片中的内容,使得计算机可以从图片中自动识别各种不同模式的目标和对象.图像识别问题作为人工智能的一个重要领域,在最近几 ...
- (转)Tensorflow 实战Google深度学习框架 读书笔记
本文大致脉络: 读书笔记的自我说明 对读书笔记的摘要 具体章节的摘要: 第一章 深度学习简介 第二章 TensorFlow环境搭建 第三章 TensorFlow入门 第四章 深层神经网络 第五章 MN ...
最新文章
- 人生必做清单-----持续更新
- php 百度逆地理编码,百度逆地址解析
- 9-算法 希尔排序 shell_sort
- MongoDB索引概念及使用详解
- sqlserver提权失败_利用mssql模拟登录提权
- iOS设计模式之代理模式
- [RK3399][Android7.1] HDMI Debug
- GIS数据处理-OSGB转换3dTiles
- 当初我要是这么学习操作系统就好了(附带思维导图)
- 阿里短信验证码接口和支付宝沙箱支付接口
- 魔法阵c语言课程设计,魔法阵真的存在吗?
- 打入苹果ipad的大陆芯片供应商
- Outlook-VBA-06-邮件另存为
- python求平均工资_python实现求和,求平均值——函数
- 【课程总结】2022中科大-组合数学-期末考试试题
- 理解java中的反射
- git@gitlab.com: Permission denied报错
- 邢台市工业机器人集成商_十大优秀工业机器人系统集成商分析
- 未来三大主机谁将占领游戏的主战场
- 基于海豚PHP框架 七牛云(插件),合成小程序分享图 并上传到七牛云