上一篇文章中,将LambdaLoss分为如下三个方面进行介绍
- 排序中会遇到的问题
- LambdaLoss Framework解读
- 由评测指标驱动的损失函数的定义
参考论文为《The LambdaLoss Framework for Ranking Metric Optimization》
这次接着LambdaLoss Framework解读开始。
2. LambdaLoss Framework解读
我们以概率的形式来定义损失,具体可参考Learning2Rank-lambda loss解读(1)。
我们可以认为一个文档序列的得分s可以表征一个特定的分布。用 π \pi π表示一个特定的资料排序,然后用 { P ( π ∣ s ) : π ∈ Π } \{ P(\pi|s): \pi \in \Pi\} {
P(π∣s):π∈Π}来表示这种排列的概率。看到这里大家是不是有点眼熟了,后验概率最大化。由于 π \pi π我们并不知道,所以可以将 π \pi π视为隐变量,这样s决定了一组特定的资料排列 π \pi π,然后在这种排列下,求解出现特定labe的概率,即
P ( y ∣ s ) = ∑ π ∈ Π P ( y ∣ s , π ) P ( π ∣ s ) P(y|s) = \sum_{\pi \in \Pi} P(y|s,\pi)P(\pi|s) P(y∣s)=π∈Π∑P(y∣s,π)P(π∣s)
基于这个概率表示,我们可以重新定义损失。我们的目标是使上述概率达到最大,换言之可以取负号将其设置为最小,然后通过算法的方法求解。
l ( y , s ) = − l o g 2 P ( y ∣ s ) = − l o g 2 ∑ π ∈ Π P ( y ∣ s , π ) P ( π ∣ s ) l(y,s) = -log_2 P(y|s) = -log_2 \sum_{\pi \in \Pi} P(y|s,\pi)P(\pi|s) l(y,s)=−log2P(y∣s)=−log2π∈Π∑P(y∣s,π)P(π∣s)
基于上述公式,可以讲损失拆为两部分,似然函数 P ( y ∣ s , π ) P(y|s,\pi) P(y∣s,π)和分布函数 P ( π ∣ s ) P(\pi|s) P(π∣s)。
2.1 似然函数
似然函数可以定义为两种形式,简单的如Bradley-Terry模型。复杂一些的考虑资料在排列中的位置。
对于简单的形式,通过sigmoid函数定义该概率,注意在损失中只保留排序出错的pair:
P ( y i > y j ∣ s i , s j ) = 1 1 + e − σ ( s i − s j ) P(y_i > y_j | s_i, s_j) = \frac {1}{1+e^{-\sigma (s_i-s_j)}} P(yi>yj∣si,sj)=1+e−σ(si−sj)1 l ( y , s ) = − l o g 2 P ( y ∣ s ) = ∑ y i > y j l o g 2 ( 1 + e − σ ( s i − s j ) ) l(y,s) = -log_2 P(y|s) = \sum_{y_i>yj} log_2 (1+e^{-\sigma(s_i -s_j)}) l(y,s)=−log2P(y∣s)=yi>yj∑log2(1