Learning to Rank系列之Pointwise方法

上一篇综述文章 里我们简单介绍了L2R三种方法的一个概要,接下来将对这三种方法做详细介绍。本篇文章介绍第一种L2R方法–pointwise方法

1、原理

pointwise方法非常简单,考虑的是文档 (doc) 和查询 (query) 的绝对相关度,基于此,我们可以将排序问题转化为分类或者回归问题。我们以分类问题为例,一般来说,会根据相关度设置五个类别 {perfect ,excellent,good,fair,bad},对应数字 { 5,4,3,2,1 },然后根据查询和返回文档可以标注样本,得到这样的形式 (query, doc, label)。

因此我们准备的样本格式如下,其中 q i q_i 代表第 i i 个query, x j ( i ) x^{(i)}_{j} 表示和第 i i 个query相关的文档集里的第 j j 个文档, C k C_{k} 代表所属类别。
这里写图片描述

2、常见算法

Pointwise方法主要包括以下算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

我们详细介绍一下Pranking算法,原文地址:https://pdfs.semanticscholar.org/906f/50f545890ca81231be7cec7c59555c679dba.pdf

2.1 Prank 算法

对于给定的样本集合 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x t , y t ) } \{(x^{1}, y^{1}),(x^{2}, y^{2}),...,(x^{t}, y^{t})\} ,文档特征向量 x i R n x^{i} \in \mathbb{R^{n}} ,对应的排序序号 y Y y\in \mathcal{Y} ,不失一般性,假设 Y = { 1 , 2 , 3 , . . . , k } \mathcal{Y}=\{1,2,3,...,k\} ,并使用 " > \gt "作为顺序关系,如果 y s > y t y^{s}\gt y^{t} ,那么我们说 x s x^{s} 优于 x t x^{t} ,反之同理,但是当 y s = y t y^{s} = y^{t} 时, x s x^{s} x t x^{t} 不可比较。

假设有一个排序规则 H : R n y \mathcal{H}: \mathbb{R^n}\longrightarrow y ,对于系数 w w 和 k个阈值集合 b 1 b 2 . . . b k = b_1\leq b_2\leq ... \leq b_k=\infty ,为方便起见,令 b = ( b 1 , b 2 , . . . , b k 1 ) b=(b_1,b_2,...,b_{k-1}) ,然后就是要找到满足 w x < b r w\cdot x \lt b_r 的最小的 b r b_r ,这个规则将空间分为若干平行的等值区域:所有满足 b r 1 < w x < b r b_{r-1}\lt w\cdot x \lt b_{r} 的样本均属于同样的序号 r r 。因此,对于一个给定 w w b b 的排序规则,我们可以预测一个新样本 x x 的序号是:
H ( x ) = min r { 1 , 2 , . . . , k } { r : w x b r < 0 } H(x)=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\}

具体算法如下:

Initialize: Set w 1 = 0 , b 1 1 , . . . , b k 1 1 = 0 , b k 1 = + w^{1}=0,b_{1}^{1},...,b_{k-1}^{1}=0,b_{k}^{1}=+\infty
Loop: For t = 1 , 2 , . . . , T t=1,2,...,T

  • Get a new rank-value x t R n x^{t}\in \mathbb{R^n}
  • Predict y ^ t = min r { 1 , 2 , . . . , k } { r : w x b r < 0 } \hat{y}^{t}=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\}
  • Get a new label y t y^{t}
  • If y ^ t y t \hat{y}^{t} \neq y^{t} , update w t w^{t} (otherwise set w t + 1 = w t , r : b r t + 1 = b r t w^{t+1}=w^{t}, \forall r:b_{r}^{t+1}=b_{r}^{t} )
    **1. ** For r = 1 , 2 , . . . , k 1 r=1,2,...,k-1 ,if y t < r y^{t}<r Then y r t = 1 y_{r}^{t}=-1 else y r t = 1 y_{r}^{t}=1
    **2. ** For r = 1 , 2 , . . . , k 1 r=1,2,...,k-1 ,if ( w t x t b r t ) y r t 0 (w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0 Then τ r t = y r t \tau_{r}^{t}= y_{r}^{t} else τ r t = 1 \tau_{r}^{t}=1
    **3. ** Update w t + 1 w t + ( r τ r t ) x t w^{t+1}\longleftarrow w^{t}+(\sum_{r}\tau_{r}^{t})x^t
    For r = 1 , 2 , . . . , k 1 r=1,2,...,k-1 , b r t + 1 b r t τ r t b_{r}^{t+1}\longleftarrow b_{r}^{t}-\tau_{r}^{t}

Output: H ( x ) = min r { 1 , 2 , . . . , k } { r : w x b r < 0 } H(x)=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\}

我们希望预测的排序尽可能接近真实的排序值,因此学习算法的目标就是最小化真实排序值和预测排序值的差。经过 T T 轮迭代之后,预测值和真实值的累计误差为 t = 1 T y ^ t y t \sum_{t=1}^{T}\lvert \hat y^{t}- y^{t} \rvert

这个算法的更新规则灵感来源于对分类的感知算法,因此我们称为Prank (Perceptron Ranking),举个例子来说明这个算法的过程。假设rank集合 Y \mathcal{Y} = { 1 , 2 , 3 , 4 , 5 } \{1,2,3,4,5\} ,可以理解为把区间分为了五段,如下所示,其中 b 5 = b_5= \infty
rank划分示意图

假设样本1的 y y = 4,那么按照之前的定义 w T x w^{T}\cdot x 应该落在 b 3 b_3 b 4 b_4 之间的这个区间内,但实际预测的值是落在了第一个区间, y ^ \hat{y} =1,如下图所示
在这里插入图片描述

因此就产生了一个误差,为了修正这个误差,我们把 b 1 , b 2 , b 3 b_1,b_2,b_3 分别向左移一个单位,即令 b 1 = b 1 1 , b 2 = b 2 1 , b 3 = b 3 1 b_1=b_1-1,b_2=b_2-1,b_3=b_3-1 ,如下图所示
在这里插入图片描述

同时更新 w = w + ( 1 + 1 + 1 ) x w=w+(1+1+1)x ,于是 w x w\cdot x 相比于原来就变大了 3 x 2 3|\lvert x\rvert|^{2} ,可以看到新的预测结果是3,和真实结果已经非常接近了,随着迭代次数增加,对于新样本的预测会越来越准确。
在这里插入图片描述

3、理论分析

以上基本就是prank算法的过程了,细心的同学可能会发现一个问题,就是一开始的时候我们假设 b 1 b 2 . . . b k = b_1\leq b_2\leq ... \leq b_k=\infty ,每一次迭代,其中某些 b i b_i 值会发生改变,那这个过程是否会发生 b i b j b_i\geq b_j ,其中 i < j i<j 。也就是说是否会改变原先的阈值顺序?答案是肯定不会(前方高能~~~)

3.1 保序引理

在证明保序引理之前,先回顾一下prank算法里提到的 τ r t \tau_{r}^{t} ,if ( w t x t b r t ) y r t 0 (w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0 Then τ r t = y r t \tau_{r}^{t}= y_{r}^{t} else τ r t = 1 \tau_{r}^{t}=1 。我们先定义一个运算 π \lfloor \pi\rfloor ,当表达式 π \pi 成立的时候, π \lfloor \pi\rfloor = 1,否则为0,于是 τ r t = y r t ( w t x t b r t ) y r t 0 \tau_{r}^{t}=y_{r}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0\rfloor 。因为 b r t Z , b r 1 = 0 b_{r}^{t}\in \mathbb{Z},b_{r}^{1}=0 ,所以 b r t + 1 b r t { 1 , 0 , + 1 } b_{r}^{t+1}-b_{r}^{t}\in\{-1,0,+1\}

3.1.1 (保序引理 ) 令 w t , b t w^{t},b^{t} 是当前一轮迭代的参数,其中 b 1 t b 2 t . . . b k 1 t b_{1}^{t}\leq b_{2}^{t}\leq ... \leq b_{k-1}^{t} ( x t , y t ) (x^{t},y^{t}) 是第 t t 轮迭代时训练的样本,经过新一轮迭代后,prank算法的参数更新为 w t + 1 , b t + 1 w^{t+1},b^{t+1} ,且满足 b 1 t + 1 b 2 t + 1 . . . b k 1 t + 1 b_{1}^{t+1}\leq b_{2}^{t+1}\leq ... \leq b_{k-1}^{t+1}

证明:要证明prank算法对阈值保序,为方便起见我们沿用prank算法里对 y r t y_{r}^{t} 的定义,当 r < y t r\lt y^{t} 时, y r t = + 1 y_{r}^{t}=+1 ,当 r y t r\geq y^{t} 时, y r t = 1 y_{r}^{t}=-1 ,我们想要证明,对于任意的 r r 都有 b r + 1 t + 1 b r t + 1 b_{r+1}^{t+1}\geq b_{r}^{t+1} ,借助如下式子:

b r + 1 t b r t y r + 1 t ( w t x t b r + 1 t ) y r + 1 t 0 y r t ( w t x t b r t ) y r t 0 ( ) b_{r+1}^{t}-b_{r}^{t}\geq y_{r+1}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r+1}^{t}) - y_{r+1}^{t}\le 0\rfloor-y_{r}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0\rfloor (*)
对于上面的式子,如果我们可以证明对于任意 r r ,在 t t 轮中上式右边恒小于等于0,而左边恒大于等于0,那么可以推断在 t + 1 t+1 轮中, b r + 1 t + 1 , b r + 1 t b_{r+1}^{t+1},b_{r+1}^{t} 要么同时增加或减少1,要么一个保持不变,另一个增加或减少1,而显然当在第 t t 轮迭代的时候,如果 b r + 1 t b r t > 0 b_{r+1}^{t}-b_{r}^{t}\gt 0 ,又因为 b r + 1 t , b r t Z b_{r+1}^{t},b_{r}^{t}\in \mathbb{Z} ,所以 b r + 1 t b r t 1 b_{r+1}^{t}-b_{r}^{t}\ge 1 ,因此在下一轮迭代中,一定可以保证 b r + 1 t + 1 b r t + 1 0 b_{r+1}^{t+1}-b_{r}^{t+1}\ge 0 ,如果 b r + 1 t b r t = 0 b_{r+1}^{t}-b_{r}^{t}=0 ,则下一轮迭代中依然有, b r + 1 t + 1 b r t + 1 = 0 b_{r+1}^{t+1}-b_{r}^{t+1}=0 ,仍然满足 b r + 1 t + 1 b r t + 1 0 b_{r+1}^{t+1}-b_{r}^{t+1}\ge0
根据算法可知,当 y t > r y^{t}\gt r 时, y r t = 1 y_{r}^{t}=1 ,否则 y r t = 1 y_{r}^{t}=-1 ,因此 y r + 1 t y r t y_{r+1}^{t}\leq y_{r}^{t} ,我们分两种情况讨论:
(1). y r + 1 t y r t y_{r+1}^{t}\neq y_{r}^{t}
也就是说 y r + 1 t = 1 , y r t = 1 y_{r+1}^{t}=-1,y_{r}^{t}=1 ,此时 ( ) (*) 式右边最大为0,因此 ( ) (*) 式左边大于等于0大于等于 ( ) (*) 右边
(2). y r + 1 t = y r t y_{r+1}^{t}= y_{r}^{t}
此时 ( ) (*) 式左边为0,右边可以知道不会超过1,当 b r + 1 t = b r t b_{r+1}^{t}=b_{r}^{t} 时, ( ) (*) 式右边两项完全一样,故为0,因此 ( ) (*) 式成立;当 b r + 1 t b r t b_{r+1}^{t}\neq b_{r}^{t} 时,由假设可知, b r + 1 t b r t 1 b_{r+1}^{t}-b_{r}^{t}\geq 1 ,因此不论 ( ) (*) 式右边是否为1, ( ) (*) 式依旧成立,故引理得证。

3.2 有界误差定理
3.2 (有界误差定理) 令 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x T , y T ) (x^{1},y^{1}),(x^{2},y^{2}),...,(x^{T},y^{T}) 是PRank算法的输入序列,其中 x t R n , y { 1 , 2 , . . , k } x^{t} \in\mathbb{R^{n}},y\in\{1,2,..,k\} ,记 R 2 = max t x t 2 R^{2}=\max_{t}||x^{t}||^{2} ,假设有一组标准化后的参数(一个排序规则) v = ( w , b ) , b 1 b 2 . . . b k 1 v^{*}=(w^{*},b^{*}),b_{1}^{*}\leq b_{2}^{*}\leq ... \leq b_{k-1}^{*} 在边界 γ = min r , t { ( w x t b r ) y r t > 0 } \gamma=\min_{r,t}\{(w^{*}\cdot x^{t}-b_{r}^{*})y_{r}^{t}\gt 0\} 条件下,将整个序列正确分类,那么这个算法的排序误差 t = 1 T y ^ t y t \sum_{t=1}^{T}|\hat y^{t}-y^{t}| 不会超过 ( k 1 ) ( R 2 + 1 ) / γ 2 (k-1)(R^2+1)/{\gamma^{2}} .

证明思路是利用数学归纳法和柯西-施瓦尔兹方法进行放缩来推导,具体过程不再赘述,可以直接参考论文证明过程,也可以后续留言交流。

猜你喜欢

转载自blog.csdn.net/zuolixiangfisher/article/details/80561488