Cao Z., Qin T., Liu T., Tsai M. and Li H. Learning to rank: from pairwise approach to listwise approach. ICML, 2007.
Xia F., Liu T., Wang J., Zhang W. and Li H. Listwise approach to learning to rank: theory and algorithm. ICML, 2008.
概
Listwise Ranking.
ListNet
-
以文档检索为例, 假设我们有 query q 和一堆候选的文档 D={d1,d2,…,dn}, 我们希望训练一个 score function f(⋅), 得到 scores:
{s1=f(d1),…,sn=f(dn)}.
-
根据这些 scores, 我们可以对检索结果进行排序,
[r1,r2,…,rn],
其中 srk 表示所有文档中排第 k 个的文档的 score. 于是我们可以推荐一些靠前的 (因为我们认为它们是更靠谱的).
-
本文的目的是设计一个 listwise 的损失, 促使排序结果
[r1,r2,…,rn]≈[y1,y2,…,yn],
这里 [y1,y2,…,yn] 为真实的偏好排序.
Permutation Probability
-
假设 π=[π1,π2,…,πn] 为 [n]=[1,2,…,n] 的一个 permutation, 本文希望根据 scores 在空间 Ωn:={π} 上建立一个分布.
-
概率是如此定义的:
Ps(π)=n∏j=1ϕ(sπj)∑nk=jϕ(sπk),∀π∈Ωn.(1)
这里 ϕ 常常取 exp(⋅).
-
一个比较关键的东西是证明它满足概率的一些性质, 非负性只需取合适 ϕ(⋅) 即可. 下面证明
∑π∈ΩnPs(π)=1.(2)
-
让我们定义位置给定候选集合 C⊂[n], 位置 i 排在首位的概率为:
P(i is top-1|i∈C)=⎧⎨⎩ϕ(si)∑j∈Cϕ(sj)i∈C0i∉C.
-
设想给定一个候选集合 {n}:={1,2,…,n} 和其上的 scores {s1,s2,…,sn}, 我们按照如下方式不放回采样:
- 根据概率 P(i is top-1|{n}) 采样 π1;
- 根据概率 P(i is top-1|{n}∖{π1}) 采样 π2;
- 根据概率 P(i is top-1|{n}∖{π1,π2}) 采样 π3 ...
n. 得到 [π1,π2,…,πn].
-
显然,
Ps(π)=P(π1is top-1|{n})⋅P(π1is top-1|{n}∖{π1})⋅⋯=n∏j=1ϕ(sπj)∑nk=jϕ(sπk).
-
于是我们成功构造了一个采样过程, 条件 (2) 是成立的.
-
(1) 还有一些很不错的性质, 既然这个分布是依照 scores 设计的, 我们很自然地希望 score 越大的位置靠前的考虑越大. 实际上, 可以证明, 如果 s1≥s2⋯≥sn, 我们有
Ps([n])≥Ps(π)≥P([n,n−1,…,1]),∀π∈Ω.(3)
-
此外, 对于如下的序:
π=[⋯,πi,⋯,πj⋯],(4)
如果仅交换 πi,πj 得到 π′ 且 sπi>sπj, 则
Ps(π)>Ps(π′).
-
注: 上面的只要需要证明:
π=[πi,⋯,πj]
这一特殊情形即可.
Top-k Probability
-
有些时候, 我们对于 ranking 的要求不是这么严格, 即通常我可以只要求 Top-k 的 ranking 和 target 尽量一致即可.
-
定义:
Gk(y1,y2,…,yk)={π∈Ωn|πj=yj,∀j=1,2,…k}.
-
于是, 对应的 Top-k 的概率为:
Ps(Gk(y1,y2,…,yk))=∑π∈G(y1,y2,…,yk)Ps(π).(5)
-
然而, 这种计算方式需要计算得到 n⋅(n−1)⋯(n−k+1)=n!(n−k)! 种 Ps(π) 然后求和, 过于复杂了.
-
幸好 (5) 有一种极为方便的计算方式, 它等价于:
Ps(Gk(y1,y2,…,yk))=k∏t=1ϕ(syt)∑nj=tϕ(syt).
-
它依旧可以通过采样的方式理解, 只是这一次我们进行到第 k 次采样便停止.
ListMLE
-
得到上面的概率估计后, ListNet 采用的是交叉熵进行优化:
LListNet(sy,^s)=−∑g∈GkPy(g)log(P^s(g)),
其中
Gk={Gk(j1,…,jk)|∀j1,j2,…,jk,ju≠jv,u≠v}.
-
而 ListMLE 则是采用的似然损失, 给定目标 ranking y:
LListMLE(y,^s)=−log(P^s(y)),
当然了, 我们也可以只匹配 top-k:
LListMLE(y,^s)=−log(P^s(Gk([y1,…,yk]))).
-
在文献 [2] 中, 作者证明了, ListMLE 相比 ListNet 有更好的 soundness, 即它不会对正确的排名施加过大的惩罚, 而 ListNet 则无法避免这一点.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-11-19 Deep Variational Information Bottleneck
2020-11-19 KMM
2020-11-19 MMD