对数损失可以通过对0,1标签的损失求和来计算:−(y log(p) +(1−y) log(1−p))
正如你所看到的,错误的高置信度的答案得到很高的损失 。
文章插图
更多关于LTR系统的梯度训练算法可以在这里找到:
https://medium.com/recombee-blog/
//www.microsoft.com/en-us/research/wp-content/uploads/2005/08/icml_ranking.pdf 。
Rankboost直接优化分类错误 。它源自Adaboost,在文档对上进行训练 。它训练弱分类器,将更多的权重赋给在前面步骤中没有正确分类的对 。
RankSVM是第一批采用pairwise方法解决问题的算法之一 。它以序数回归的方式进行排序,并对类的阈值进行训练 。RankSVM采用hinge损耗函数最小化 。它还允许直接使用kernel进行非线性处理 。
listwise方法的动机
pairwise的方法很好,但也有缺点 。训练过程是昂贵的,并且存在固有的训练偏差,在不同的query中差异很大 。也只有pairwise的关系被考虑在内 。我们想使用一个评价指标,能让我们优化完整的list,同时考虑到所有物品的相关性 。
文章插图
指数排序的优势在于,即使当模型f给所有文档分配相似的分数时,它们的最高概率也会非常不同 —— 最好的文档接近1,相关性较低的文档接近0 。
文章插图
这里,损失是针对一个文档列表计算的 。我们不太关心不相关的文档Py(x)=0,最大的损失是由相关文档造成的 。
如何得到LTR系统的训练数据?获取LTR系统的训练数据可能是一个漫长而昂贵的过程 。你通常需要一群人,人工来输入查询并判断搜索结果 。关联判断也比较困难 。评估人评估下列分数之一:
相关度 —— 二值:相关与不相关(适合pointwise)
pairwise偏好 —— 文件A比文件B更相关 。
总的顺序 —— 文件按A、B、C、…,排序,根据它们的相关性 。(对listwise来说很完美,但很耗时)
很明显,人工标注非常贵,而且它们的标签也不是很可靠 。因此,应该从用户在网站上的行为来获得排名和训练系统 。
更好的方法是用推荐系统代替上述的LTR算法 。
推荐阅读
- 2020年最好的.NET开发工具
- 为什么面试互联网公司的都在刷Leetcode? 正确打开方式是什么?
- 作为程序员的你,这10款在线编辑器,你用过哪一个?
- 不改一行代码,让你的web应用支持https协议
- 冬天喝两款保健茶,保健茶的种类介绍
- 如何在今日头条上开启挣钱之路,适合新手的升级攻略,倾囊相授
- 茶叶美食介绍,抹茶叶形饼的做法
- 我用这个方法,半小时给C盘清理出30G空间!C盘飘红的快来试试
- 冲泡优质黑茶的方法,椰仙苦丁茶的冲泡方法
- 解决网络连接缓慢的故障