[关闭]
@twoer2 2018-11-15T09:47:37.000000Z 字数 2241 阅读 594

LambdaMART-郑扬锋

毕业设计


论文地址:
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/MSR-TR-2010-82.pdf


1. 关于

在2.1节 Factoring RankNet: Speeding Up Ranknet Training中,作者把下面式子:

整理成:

其中

这里是url 组成的对。根据原文

it is convenient to adopt the convention that contains pairs of indices for which , so that = 1

的相关性强于,而对不计入求和里。

现在假设一个查询里有三条url,,且,那么:

并没有项出现(这个求和里的项有这样的特征:
反而,我觉得应该是:


这样定义,才能在我举的例子中正确的化简:

所以,我觉得论文里的是不正确的。


2. MART叶子节点的值

在第6节 MART for Two Class Classification 中,作者简单讲了一下MART的原理。在求叶子节点值时


(其中是叶子节点region,是损失函数)
使用了牛顿迭代法求局部极值。

这应该是个逐步迭代逼近极小值的过程。但是作者直接用

作为了叶子节点值,也就是说迭代就进行了一步。虽然这个值可用,但肯定不够好。这样也可以吗?


3. LambdaMART的算法

下面是LambdaMART算法伪代码:

image.png-123.2kB

这里的子学习器(回归树)学习对象是梯度,这个根据前面的步骤,是同一个查询中不同对的组合计算偏导得出的,它跟本查询中第i个url是密切相关的。
但是原文里说

In LambdaMART, each tree models the λi for the entire dataset (not just for a single query).

这是怎么做到的?一个文档的梯度在不同查询中方向、强度可能都会不一样,为什么能综合多个查询来算?从下面给出的式子看,的求法和之前单个查询的求法也没什么区别?

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注