文章目录
NeurIPS 2022,是百度提出的Unbiased Learning to rank数据集由于现有数据集的某些局限性,在现有基准数据集上的良好结果可能无法扩展到实际场景:
我们提出Baidu-ULTR数据集,包含1.2billion随机采样的搜索会话和7008个专家标注的查询(397572个查询-文档对)。Baidu-ULTR是第一个 billion 级别的 ULTR(unbiased learning to rank) 数据集,提供:
直接使用点击数据优化模型是不完美的,因为偏差的存在,比如:位置 bias,trust bias,click necessary bias。尽管目前的 ULTR 数据集可以在某种程度上满足数据消耗的需求,仍然存在一些限制:
因此,提出Baidu-ULTR数据集,对web search的大规模无偏 learning to rank数据集。它从最大的中文搜索引擎-百度中随机抽取了12亿个搜索会话,和7008个专家注释查询(397,572个查询文档对)进行验证和测试。
我们的目的是:对一个指定 query,得到一个相关性降序排列的文档 list。查询和文档之间的相关等级 r d r_d rd(通常有0–4级, { b a d , f a i r , g o o d , e x c e l l e n t , p e r f e c t } \{bad, fair, good, excellent,perfect\} {bad,fair,good,excellent,perfect},)如果是人工标记的,我们通常认为是无偏的,但是这样比较费劲。

一个替代方案就是将用户的隐式反馈作为相似度标签。利用点击标签 c d c_d cd 替代相似标签 r d r_d rd

但是,这个loss function是有偏的,因为最终排序结果会影响用户的点击,排名高的文档可能会有更高的点击次数。无偏 learning to rank被提出,这样在有偏数据上的训练就能收敛到用无偏数据上训练的模型
现有的 ULTR 数据集可以分成两类:使用合成/真实用户反馈:
合成数据:Yahoo! LETOR , Microsoft LETOR and Istella LETOR
真实数据:Tiangong-ULTR

主要包含两部分:1)大规模 web search 会话,2)专家注释数据集
Queries:从百度上的搜索会话上随机选取,每个都有一个独一无二的标识符。一个频繁出现的查询可能被采样多次,每个都有不同的标识符。这保证了数据集中查询的分布与在线系统相同:常见的查询有更大的权重
Documents:对于候选文档,只记录了展示出来的。因为没展示的提供的信息比较少,用户不会对这些文档提供反馈。日志会话通常对每个 query 只有十个文档(一页就展示了10个文档)。只有 1.1%的会话包含十个以上,因为1.1%的用户翻页了。这导致了训练和测试的不匹配。在训练时,用户只“label”top-10文档,但是在推理阶段,top-10结果需要通过检索和排序产生,系统需要利用很多模型来排序特别多的文档。
Page Presentation Features:用户在搜索结果页面(SERPs)上的行为受SERPs布局的影响很大。我们收集了在SERPs上的以下信息表示:排序位置,显示的url,显示的文档标题,显示的文档摘要,文档的多媒体类型,SERP的高度

为了保护用户隐私,将查询、标题和摘要的原始文本表示为带有私有字典的顺序 token id。进一步防止丢失语义信息,我们提供了一个 unigram集合,使用 desensitization token ids 来记录高频词,这对建模 word-level 语义信息是很有用的。
User Behavior:我们提供了丰富的用户行为集合,包括:查询重写,跳跃,点击,第一次点击,用户停留时间,显示时间,显示次数,滑走次数,siaplayed count of reverse browsing

Queries:从百度的搜索会话中随机选取的。因为查询是长尾分布的(a),我们进一步提供了查询的频率。我们根据搜索频次,将查询分成10个buckets:0,1,2对应高频,3,4,5,6对应中频,7,8,9对应尾频。
Documents:为了模拟在线长江,候选文档从检索阶段选择。我们选取了检索模型的top-30文档作为排序的候选集合。通过选择间隔为30的文档,我们进一步覆盖检索阶段的前数千个结果,这些文档用于衡量 ranker 在区分对用户体验极具破坏性的文档方面的表现
Expert Annotation:由专业标注者标注,从5个标签 { b a d , f a i r , g o o d , e x c e l l e n t , p e r f e c t } \{bad,fair,good,excellent,perfect\} {bad,fair,good,excellent,perfect} 中选一个,之后转成数字(0对应bad,4对应perfect)。


像Figure.2,我们有如下观察:
长尾分布出现在许多用户行为中
高频查询的搜索结果比尾部查询的更相关,因为高频查询的每个查询的点击数为1.13远远大于尾部查询的0.43
最关键的用户反馈与页面展示特征和其他用户行为展现出强相关。我们在图2©中说明了不同排名位置的点击率
随着显示时间变长,用户更愿意在屏幕顶部花更多时间,在底部花更少时间

选择了下列具有代表性的 baselines:Naive,IPW,DLA,REM,PairD。这些方法都只考虑了位置相关的 bias,没使用其他的显示特征。因此,利用新提取的SERPs和显示特征,在Baidu-ULTR数据集上设计新的ULTR算法具有很大的潜力。
使用 Discounted Cumulative Gain(DCG),只有在有绝对相关性判断时,才会报告DCG

Expected Reciprocal Rank(ERR)计算用户停止的结果位置的倒数的期望:


一个直观的解释是,用户日志是从一个运行良好的搜索引擎收集的,点击可能没有假设中提到的bias。直接减轻 bias 可能导致过度减轻和不满意的结果。
为了研究搜索频率的影响,我们进一步在三个不同等级搜索频率上比较了 ULTR 算法性能,包括high,middle,tail。

Biased in Real-World User Feedback:因为用户日志是从良好运行的搜索引擎中收集的,点击可能不会有在生成合成数据集时的那种简单又强烈的bias
Long-tail Phenomenon:(1)大多数检索文档与用户查询无关。超过50%的文档被注释为与用户查询无关,而只有1.8%的文档被注释为完美的。(2)用户查询还显示了长尾分布。前10%的高频查询占据了搜索日志的60%以上。ULTR算法在高频查询上的性能远高于尾部查询
Mismatch between Training and Test:由于在线系统的存储限制,我们只记录排名系统中显示的页面,通常是 top-10 的结果。然而,在评估集中,我们记录前30个文档,并通过选择间隔为30的文档,进一步覆盖检索阶段的前上千个结果。这一挑战在实际场景中广泛存在,任意数量的文档都可以检索到我们的排序程序中。用于训练和测试的文档数量很少能完全一致。数据不匹配是排序算法面临的分布失衡挑战。
Baidu-ULTR包含充足的展示信息和丰富类型的用户反馈。在脱敏之后,也可以提供原始文本特征,这确保能够使用更先进的语言模型。
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
我经常使用嵌套数据结构,很多时候我必须从控制台手动分析它们。问题是它们全部打印在一行中。是否有一种简单的方法可以根据{,[,],}和逗号重新构造数据结构的显示,使其看起来像Ruby的pretty_print输出? 最佳答案 :%s/\([{,]\)/\1\r/gggVG=:setft=ruby呜呜呜 关于ruby-如何将Vim中的"expand"文本转换成一种易于阅读的方式?,我们在StackOverflow上找到一个类似的问题: https://stacko
软件特点部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。使用手册基本页面配置路径配置日志所在的目录,配置后按回车键生效,下拉框选择日志名称。选择日志后点击生效,即可加载日志。windows路径E:\java\project\log-view\logslinux路径/usr/local/XX历史模式历史模式下,不会读取新增的日志。针对历史文件可以分页读取,配置分页大小、跳转。历史模式下,支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库,搜索速度相对较低,优点是比较简单。2G日志全文搜
如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1. 创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1. 创建SpringBoot项目 打开IDEA,选择NewProject创建项目。 填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。 选择springboot版本以及需要的包,此处只选择了springweb。 此处需特别注意,若你使用的是jdk1
我正在使用Watir进行自动化,它会创建一封我需要检查的电子邮件。有人指出电子邮件gem是执行此操作的最简单方法。我添加了以下代码,并且能够从我的收件箱中收到第一封电子邮件。require'mail'require'openssl'Mail.defaultsdoretriever_method:pop3,:address=>"email.someemail.com",:port=>995,:user_name=>'domain/username',:password=>'pwd',:enable_ssl=>trueendputsMail.first我是这个论坛的新手,有以下问题:如何获
CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/1266387752021https://arxiv.org/pdf/2103.14259.pdf关键解读在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,
我正在用Ruby编写类似curses的程序,我正在使用stty和ansi转义字符来实现我想要的。当我想获得用户输入时,我的问题就出现了。像许多基于控制台的程序一样,我想从终端底部获取用户输入。因此,我将光标放在屏幕底部并调用Readline.readline(或任何获取用户输入的方法)。像往常一样,它会读取所有内容,直到我按下回车键,并打印一个换行符。由于光标位于终端的最后一行,它会滚动一行,这会弄乱屏幕。我怎样才能避免这种情况?我试图使用stty来停止回显换行符,但我没有成功。也许可以使用stty来阻止终端滚动?当然,我可以编写自己的方法来通过一次读取一个字符(并捕获“返回”)来捕获