极限多标签之-PfastreXML

PfastreXML阅读笔记

《Extreme Multi-label loss functions for recommendation, tagging, ranking & Other missing label applications》阅读笔记

本文的核心:设计了Propensity-score的XC损失函数。也就是搞出了PSP,PSDCG,PSnDCG等指标。

动机
  1. relevant labels.
    精确预测相关的标签为1比预测不相关的标签为0更重要。而传统的HammingLoss赋予相关标签和不相关标签相同的惩罚。

  2. missing labels.
    在XC问题中,这是必然存在的现象,由于标签数很多,annotator不可能through所有的标签。
    missing labels并不是指不知道这个标签的值,而是这个标签应该为1,但在数据集中却为0,也就是被annotator遗漏的标签。
    传统Hamming损失会惩罚对missing label的预测。因为实际上missing labels的值和irrelevant labels都是0.
    PS. missing labels和irrelevant labels在标签上是无法区分的。而在传统的multi-label问题中,一种场景是missing labels是未知的,学习者并不知道missing labels应该为0还是1. 在这种情况下,missing labels通常被赋予一个不同的值,比如-1。

  3. Tailed labels.
    标签在数据集中出现的次数服从幂律分布。i.e., 尽管Wikipedia和Amazon的数据量非常大,但是有非常多的标签occur不到5次。

符号:

Key notationsMeaning
y ∗ \mathbf{y}^* y完全的真实标签(省略了样本下标i),不可获得
y \mathbf{y} y观测到的真实标签
y ^ \hat{\mathbf{y}} y^估计的标签
p l p_l pl标签 l l l的倾向性(省略了样本下标i)
Propensity-score losses

本文说的是损失,其实就指标而言,它们是越大越好。
重点是设计了以下几种损失 − L ( y , y ^ ) -\mathcal{L}(\mathbf{y},\hat{\mathbf{y}}) L(y,y^)
( Propensity-score Precision )  PSP @ k : = 1 k ∑ l ∈ rank k ( y ^ ) y l p l (\text{Propensity-score Precision}) \text{ PSP}@k := \frac{1}{k} \sum_{l\in \text{rank}_k(\hat{\mathbf{y}})} \frac{\mathbf{y}_l}{p_l} (Propensity-score Precision) PSP@k:=k1lrankk(y^)plyl
PSDCG @ k : = ∑ l ∈ rank k ( y ^ ) y l p l log ⁡ ( l + 1 ) \text{PSDCG}@k := \sum_{l \in \text{rank}_k(\hat{\mathbf{y}})} \frac{\mathbf{y}_l}{p_l\log(l+1)} PSDCG@k:=lrankk(y^)pllog(l+1)yl
PSnDCG @ k : = PSDCG@ k ∑ l = 1 k 1 log ⁡ ( l + 1 ) \text{PSnDCG}@k := \frac{\text{PSDCG@$k$}}{\sum_{l=1}^{k} \frac{1}{\log(l+1)}} PSnDCG@k:=l=1klog(l+1)1PSDCG@k

另外也拓展了Propensity-score的 Recall @ k \text{Recall}@k Recall@k, MRR \text{MRR} MRR, ADG \text{ADG} ADG, F β  score F_\beta \text{ score} Fβ score,但这些损失依赖 y ∗ \mathbf{y}^* y,本文没有重点讨论它们。

L ∗ ( y ∗ , y ^ ) \mathcal{L}^*(\mathbf{y}^*, \hat{\mathbf{y}}) L(y,y^)为真实的损失,但是它根本就没办法计算,因为 y ∗ \mathbf{y}^* y不可获得。

所以本文提出了它的无偏估计 − L ( y , y ^ ) -\mathcal{L}(\mathbf{y},\hat{\mathbf{y}}) L(y,y^)使得
E y [ L ( y , y ^ ) ] = E y ∗ [ L ∗ ( y ∗ , y ^ ) ] \mathbb{E}_\mathbf{y}[\mathcal{L}(\mathbf{y},\hat{\mathbf{y}})] = \mathbb{E}_\mathbf{y^*}[\mathcal{L}^*(\mathbf{y}^*,\hat{\mathbf{y}})] Ey[L(y,y^)]=Ey[L(y,y^)]
只看懂了这一个定理。本文还提出了其他的定理以支持那些依赖 y ∗ \mathbf{y}^* y的损失,根本看不懂。

p l p_l pl是啥?

对于一个样本 x i \mathbf{x}_i xi,它在标签 l l l上的倾向性被定义为:
p i l ≡ P ( y i l = 1 ∣ y i l ∗ = 1 ) p_{il} \equiv P(y_{il} = 1 | y^*_{il} = 1) pilP(yil=1∣yil=1)
从形式上看,它是针对样本 x i \mathbf{x}_i xi在相关的标签 l l l上被观测到的边缘概率。
也就是说, x i \mathbf{x}_i xi l l l相关,但它不一定被观测到。
比如:假设 x i \mathbf{x}_i xi与20个标签相关,但annotator只标注了其中5个,那么 p i l = 0.25 p_{il} = 0.25 pil=0.25(这句话是错误的,理解偏差)。
另外本文假设没有错误标注,也就是
P ( y i l = 1 ∣ y i l ∗ = 0 ) = 0 P(y_{il} = 1 | y^*_{il} = 0) = 0 P(yil=1∣yil=0)=0

意思就是说,标签的噪声只来源于遗漏,而不存在错误(one sided)。
为了表示方便,本文用 p l p_l pl表示 p i l p_{il} pil
注意到, p l p_l pl在损失中作为分母的一部分。
也就是说,如果 p l p_l pl越大,就表示 l l l的重要性越低,因为 p l p_l pl越大表示标签 l l l越不容易被遗漏。
而本文偏爱那些更容易被遗漏的标签,赋予其更高的重要性。
所以我们在https://blog.csdn.net/wuyanxue/article/details/126805190?spm=1001.2014.3001.5502这篇文章里面的最后提到:Propensity-score强调在tail labels上的表现,而对预测head labels提供微弱的奖励。

p l p_l pl能不能精确得到?显然不能。因此只能做出估计。

估计 p l p_l pl

本文估计 p l p_l pl的方法比较原始:
p l = N l N l ∗ p_l = \frac{N_l}{N_l^*} pl=NlNl
其中 N l N_l Nl是标签 l l l在观测数据集中出现的次数。而 N l ∗ N_l^* Nl l l l在真实数据集中应该出现的次数。 N l ∗ N_l^* Nl也是通过估计得到。
针对Wikipedia数据,作者假设一个标签如果是相关的,那么其所有祖先标签也都是相关的(Wikipedia的标签应该是具有层次结构)。
所以,令 ⇓ ( l ) \Downarrow(l) (l) l l l的所有descendant标签,本文估计 N l ∗ = N l + ∑ l ′ ∈ ⇓ ( l ) N l ′ N_l^* = N_l + \sum_{l' \in \Downarrow(l)}N_{l'} Nl=Nl+l∈⇓(l)Nl iff ∣ ⇓ ( l ) ∣ > 4 |\Downarrow(l)| > 4 (l)>4.
作者绘制出了 p l p_l pl log ⁡ ( N l ) \log(N_l) log(Nl)关系的散点图,发现散点图符合sigmoidal趋势。因此给出了 p l p_l pl的一般化估计公式(A=0.5,B=0.4):
p l ≡ P ( y l = 1 ∣ y l ∗ = 1 ) = 1 1 + C exp ⁡ ( − A log ⁡ ( N l + B ) ) p_l \equiv P(y_l = 1 | y_l^* = 1) = \frac{1}{1 + C\exp(-A\log(N_l+B))} plP(yl=1∣yl=1)=1+Cexp(Alog(Nl+B))1
其中 C = ( log ⁡ N − 1 ) ( B + 1 ) A C = (\log N - 1)(B+1)^A C=(logN1)(B+1)A
不满足 ∣ ⇓ ( ↑ ( l ) ) ∣ > 4 |\Downarrow(\uparrow(l))| > 4 ((l))>4这个条件的 p l p_l pl通过上式进行估计。

针对Amazon数据,也是上述公式,不过参数 A , B A,B A,B有所不同。

优化目标

和FastXML类似,不过本文的核心优化目标是直接优化 PSnDCG @ k \text{PSnDCG}@k PSnDCG@k
min ⁡ ∣ ∣ w ∣ ∣ 1 + ∑ i C δ ( δ i ) log ⁡ ( 1 + exp ⁡ ( − δ i w T x i ) ) − C r ∑ i 1 2 ( 1 + δ i ) L PSnDCG@ L ( r + , y i ) − C r ∑ i 1 2 ( 1 − δ i ) L PSnDCG@ L ( r − , y i ) \begin{aligned} \min ||\mathbf{w}||_1 & + \sum_i C_\delta(\delta_i) \log(1 + \exp(-\delta_i\mathbf{w}^\text{T}\mathbf{x}_i)) \\ & - C_r \sum_i \frac{1}{2}(1 + \delta_i) \mathcal{L}_{\text{PSnDCG@}L}(\mathbf{r}^+, \mathbf{y}_i) \\ & - C_r \sum_i \frac{1}{2}(1 - \delta_i) \mathcal{L}_{\text{PSnDCG@}L}(\mathbf{r}^-, \mathbf{y}_i) \end{aligned} min∣∣w1+iCδ(δi)log(1+exp(δiwTxi))Cri21(1+δi)LPSnDCG@L(r+,yi)Cri21(1δi)LPSnDCG@L(r,yi)

P pf ( y ∗ ∣ x ) = ∑ t = 1 T P t leaf ( x ) T \mathbf{P}_{\text{pf}}(\mathbf{y}^*|\mathbf{x}) = \frac{\sum_{t=1}^T \mathbf{P}_t^{\text{leaf}}(\mathbf{x})}{T} Ppf(yx)=Tt=1TPtleaf(x)为树型分类器得出的结果,其中 P t leaf ( x ) \mathbf{P}_t^{\text{leaf}}(\mathbf{x}) Ptleaf(x)为第 t t t颗树得到的样本 x \mathbf{x} x的预测结果,和FastXML类似,就是第 t t t颗树的top-k score(这里有点小问题,why top-k,FastXML也是top-k)。

不过本文认为,直接利用FastXML中的树型分类器会导致仍然以低概率预测tailed labels。因为内部节点的分区错误不成比例地减少了tailed labels在叶子节点分布中的支持(看不懂)。
不过猜测是由于tailed labels太少了,在叶子节点中分布也就太少而且散。一旦一个tailed labels分区错了,其预测的准确性就会受到比较大的影响。

为了对tailed labels做出更准确的预测,本文还训练了一个针对tail label的分类器 P ( y l ∗ = 1 ∣ x ) P(y_l^* = 1 | \mathbf{x}) P(yl=1∣x)

最终得到的预测结果是树型分类器与tail label分类器的加权对数平均:
s l = α log ⁡ P pf ( y l ∗ ∣ x ) + ( 1 − α ) log ⁡ P ( y l ∗ = 1 ∣ x ) s_l = \alpha \log P_{\text{pf}}(y_l^*|\mathbf{x}) + (1 - \alpha)\log P(y_l^* = 1 | \mathbf{x}) sl=αlogPpf(ylx)+(1α)logP(yl=1∣x)
s l s_l sl就代表标签 l l l的最终得分(越大越好)。

Tail label classifier

本文将tail label classifier设定为一个超球面分类器(不懂,但还是写下来吧):
P ( y i l ∗ ∣ x i ) = 1 / ( 1 + v i l 2 y i l ∗ − 1 ) P(y_{il}^*|\mathbf{x}_i) = 1 / (1 + v_{il}^{2y_{il}^*-1}) P(yilxi)=1/(1+vil2yil1)
其中 v i l = exp ⁡ ( γ 2 ∣ ∣ x i − μ l ∣ ∣ 2 2 ) v_{il} = \exp(\frac{\gamma}{2}||\mathbf{x}_i - \pmb{\mu}_l||_2^2) vil=exp(2γ∣∣xiμμl22)
利用MLE独立地求解每个标签的 μ l ∗ \pmb{\mu}_l^* μμl, prod --> log sum。
本文原本打算采用SGD进行迭代,但发现代价昂贵。所以采用了一种近似策略求解 μ l ∗ \pmb{\mu}_l^* μμl,同时保证了其稀疏性。

总结

本文提出了倾向性得分的损失,也是比较流行的评价指标。
倾向性得分表征标签的稀缺性,同时本文认为比较稀缺的标签的重要性应该更高,因此标签的倾向得分是作为分母融入到nDCG中的。

另外本文也提出了一个分类器用于处理tail labels,这基于作者的一个观点:FastXML的树状分类器还是容易在tail labels上赋予更低的概率。

该分类器与树状分类器的结果加权平均,就得到了样本的最终分类结果。

优点:利用倾向得分对missing label进行建模,似乎符合直觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值