Paper Reading《Taming Pretrained Transformers for Extreme Multi-label Text Classification 》

@time:2020-11-30

github code

arxiv paper

SIGKDD 2020 Applied Data Track

image-20201130151147569

1. 主要工作

针对极端多标签文本分类(Extreme Multi-label Classification, XMC)问题,即给定输入文本,则从大型标签集中返回最相关的标签。

为解决Label输出空间巨大及稀疏性问题,本文提出了针对XMC问题微调的deep transformer结构(BERT, RoBERTa, XLNET)的X-Transformer。在具有500万个标签的Wiki-500K数据集上,X-Transformer的prec@1为77.28%,并在Amazon的product2query数据集相对于baseline模型Parabel在prec@1上提高了10.7%。

2. 问题描述及难点

2.1 问题描述

极端多标签文本分类(XMC):给定输入文本实例,从巨量标签集合中返回最相关的标签,其中标签的数量可能在数百万或更多。若将XMC问题视作学习一个得分函数 f : X × Y → R f: X \times \mathcal{Y} \rightarrow \mathbf{R} f:X×YR,其最终目标(instance,label)对 ( x , y ) (\mathbf{x},\mathbf{y}) (x,y)映射到得分 f ( x , y ) f(\mathbf{x},\mathbf{y}) f(x,y)。优化目标使得高度相关的 ( x , y ) (\mathbf{x},\mathbf{y}) (x,y)对具有较高的分数,而无关的对具有较低的分数。

Amazon上进行产品检索时输入第一个词后剩余的商品类型联想就是个典型的例子,例如输入文本"kitchenaid"作为 x \mathbf{x} x,检索框中会依次推荐的标签 y \mathbf{y} y为"kitchenaid kitchen", "kitchenaid timer"等等。

2.2.1 Extreme Label Space

极大的标签空间导致函数参数量巨大。

image-20201130155550383

具有100万个标签的多标签问题同GLUE中的MNLI问题相比参数量扩大了50万倍。XMC问题在2080Ti上用XLNET_large在batch_size=1的情况下进行后反馈传递就会内存溢出。

2.2.2 Label Sparsity
  1. 上述问题也带来了标签稀疏性的问题,导致了”长尾“标签分布的问题。

    image-20201130160407201

    在wiki-500K数据集上每个标签中占100条样本以上的只占总标签数的2%。

2.3 Transfer Learning Failed in XMC
  1. Words2vec, Glove: 文本表示之后是固定的不能根据上下文本具体改变。

  2. Elmo,GPT-2:基于Autoregressive的一阶段PTM,即不用finetune,可以直接用于下游任务,更便于迁移学习,但是代价之一就是失去了模型表达能力。

  3. BERT:基于Auto-Encoder的两阶段PTM,需要finetune之后进行下游任务。

  4. XLNET:基于Auto-Regressive的两阶段PTM,且是排列语言模型双流自注意力机制

    BERT强于Elmo和GPT-1最重要的一个原因就是采用了Auto-Encoder的结构,根据上下文单词来预测输入X中被随机Mask掉的单词。(其中Elmo是个假“上下文”,是LSTM自左向右的隐节点状态简单拼接了自右向左的,本质上还是Auto-Regressive的,并未同时用到上下文。)

    但Mask的方法也是限制BERT地方,在下游微调时不允许文本被MASK,所以造成了预训练阶段和微调阶段数据不统一。;且如果一个句子中多个token被mask掉,预测其中一个token时不能利用其它被mask掉的token的显式语义。

    XLNET就针对如何用单向AR结构结合上下文以及消除MASK做出了创新。

    • Permutation LM

    考虑一个input sequence [ x 1 , x 2 , x 3 , x 4 ] [x_1,x_2,x_3,x_4] [x1,x2,x3,x4],想令模型学习预测 x 3 x_3 x3的位置。为使其能考虑到上下文,既能看到 x 1 , x 2 x_1,x_2 x1,x2又能看到 x 4 x_4 x4。可以固定住 x 3 x_3 x3的位置,然后随机排列组合四个单词的输入顺序,共有 A 4 4 = 24 A_4^4=24 A44=24种,比如 2 → 4 → 3 → 1 2\rightarrow4\rightarrow3\rightarrow1 2431。看上去仍然是个从左到右的AR语言模型,但是其实通过对句子中单词排列组合,把一部分Ti下文的单词排到Ti的上文位置中,但是形式上看上去仍然是从左到右在预测后一个单词。

    img
    举个栗子,比如输入语句为“我爱中国”。
    比如序列 1 → 2 → 4 → 3 1\rightarrow2\rightarrow4\rightarrow3 1243,在预测permutation之后的第三个位置时,也即第一个词是“我”第二个词是“爱”的条件下,求P(第四个词是“国”)。
    也即原文中的 P ( X z t = x ) = P ( x z < t , z t ) P(X_{z_t}=x)=P(x_{z<t},z_t) P(Xzt=x)=P(xz<t,zt).
    其中 z t z_t zt表示在原语句要预测的位置, t t t表示permutation中的id,也就是在新的排列顺序中的id,在该例中 1 ( 1 ) → 2 ( 2 ) → 4 ( 3 ) → 3 ( 4 ) 1(1)\rightarrow2(2)\rightarrow4(3)\rightarrow3(4) 1(1)2(2)4(3)3(4),括号中的id即为 t t t
    本例概率化表示则为 P ( X 4 = ′ 国 ′ ∣ X 1 , X 2 ; 4 ) P(X_4='\text{国}'|X_1,X_2;4) P(X4=X1,X2;4)

    1. Two-Stream Self-Attention

    模型的实现过程中还有两点要求

    • 在预测当前单词的时候,比如上图一 3 → 2 → 4 → 1 3\rightarrow2\rightarrow4\rightarrow1 3241,预测2时,只能使用2位置信息,不能使用2的内容信息。

    • 在预测其他单词的时候,比如上图一 3 → 2 → 4 → 1 3\rightarrow2\rightarrow4\rightarrow1 3241,预测1时,1能看到324所有的位置和信息,可以使用324单词的内容信息。

      而单一的Transformer不能满足该种要求,所以引入双流自注意力机制。

      Content_Stream

      预测其他单词时,可以使用自己的位置与内容。

      h z t ( m ) = h_{z t}^{(m)}= hzt(m)=Attention ( Q = h z t ( m − 1 ) , K V = h z ≤ t ( m − 1 ) ; θ ) \left(Q=h_{z_{t}}^{(m-1)}, K V=h_{z \leq t}^{(m-1)} ; \theta\right) (Q=hzt(m1),KV=hzt(m1);θ)

      img

      Query_Stream

      预测自己时,只是用本身位置。

      g z t ( m ) = g_{z_{t}}^{(m)}= gzt(m)= Attention ( Q = g z t ( m − 1 ) , K V = h z < t ( m − 1 ) ; θ ) \left(Q=g_{z_{t}}^{(m-1)}, K V=h_{z<t}^{(m-1)} ; \theta\right) (Q=gzt(m1),KV=hz<t(m1);θ)

      x z < t x_{z<t} xz<t表示包含上下文的内容信息,只用了 z t z_t zt,即只查询到了表示目标的位置信息,K与V的计算不包含Q,即对角线元素 x z t x_{z_t} xzt不参与计算,无法获得所在位置其自身的内容信息。

      img
      对于Content Stream而言,每一行每一列都是对应着input_text中的origin_id:
      [ 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 ] \left[\begin{array}{rrrr}1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 1 & 1\end{array}\right] 1000110111111001
      对于本例中的 3 → 2 → 4 → 1 3\rightarrow2\rightarrow4\rightarrow1 3241而言:
      对于1来说,在计算Content Stream的Attention时可以看到 t o k e n 1 , t o k e n 2 , t o k e n 3 , t o k e n 4 token_1, token_2, token_3,token_4 token1,token2,token3token4。但在计算Query Stream时则只能看到 t o k e n 2 , 3 , 4 token_{2,3,4} token2,3,4。则第一行向量也即为 [ 0 , 1 , 1 , 1 ] [0,1,1,1] [0,1,1,1]。后面亦相同。
      **注:**此处的0&1都是标识向量,并不是1和0的数值,比如在Query Stream中第三行的 [ 0 , 0 , 0 , 0 ] [0,0,0,0] [0,0,0,0]并不代表0向量。

    双流自注意力机制其实也是另一种实现MASK的变种。Query主要是记录输入文本的position_id。

不过以上两个特点也决定了XLNET要比BERT和RoBERTa慢1.8倍。

3. 解决模型方法思路

XMC的最终目标是通过样本集合构造得分函数 f ( x , l ) = w l T ϕ ( x ) f(\mathbf{x}, l)=\mathbf{w}_{l}^{T} \phi(\mathbf{x}) f(x,l)=wlTϕ(x),来预测 t o p − b top-b topb个标签 f b ( x ) = Top ⁡ − b ( [ f ( x , 1 ) , … , f ( x , L ) ] ) ∈ { 1 , … , L } f_{b}(\mathbf{x})=\operatorname{Top}-\mathrm{b}([f(\mathbf{x}, 1), \ldots, f(\mathbf{x}, L)]) \in\{1, \ldots, L\} fb(x)=Topb([f(x,1),,f(x,L)]){1,,L}

ϕ ( x ) \phi(\mathbf{x}) ϕ(x)代表输入文本的encoding形式, W = [ w 1 , ⋯   , w l ] T ∈ R L × d \mathbf{W}=[\mathbf{w_1},\cdots,\mathbf{w_l}]^T\in\mathbb{R}^{L\times d} W=[w1,,wl]TRL×d是bottleneck layer.

image-20201201094022877

3.1 Semantic Label Indexing

为解决上述提到的问题,论文利用了层次聚类将XMC问题转化为了更小的K个输出空间的子问题:

聚类的簇可以用 C ∈ { 0 , 1 } L × K \mathbf{C}\in\{0,1\}^{L\times K} C{0,1}L×K c l k = 1 c_{lk}=1 clk=1表示标签 l l l属于簇 k k k。例如wiki-500K的数据集,将L=500000聚类到了K=8000,99.4% 的clusters里都超过了100个样本数,压缩比率低至1.6%。

ϕ ( x ) \phi(x) ϕ(x)的编码具体用了以下两种形式:

  1. Label embedding via label text

    标签的文本信息。加入外部知识。e.g. Wiki-500K中标签信息的简短介绍。

    ψ text-emb  ( l ) = 1 ∣ text ⁡ ( l ) ∣ ∑ w ∈ text ⁡ ( l ) ϕ xlnet  ( w ) \psi_{\text {text-emb }}(l)=\frac{1}{|\operatorname{text}(l)|} \sum_{w \in \operatorname{text}(l)} \phi_{\text {xlnet }}(w) ψtext-emb (l)=text(l)1wtext(l)ϕxlnet (w)

    具体形式是利用XLNET的对每一个token进行词嵌入(token_dim= 1 × 1024 1\times 1024 1×1024)后求和然后平均池化得到标签的向量表示。

  2. Label embedding via embedding of positive instances

    从标签内的样本得到标签表示。Positive Instance Feature Aggregation (PIFA)。

    ψ pifa-tfidf  ( l ) = v l / ∥ v l ∥ , v l = ∑ i : y i l = 1 ϕ t f − i d f ( x i ) , l = 1 , … , L ψ pifa-neural  ( l ) = v l / ∥ v l ∥ , v l = ∑ i : y i l = 1 ϕ xlnet  ( x i ) , l = 1 , … , L \begin{aligned} \psi_{\text {pifa-tfidf }}(l)=\mathbf{v}_{l} /\left\|\mathbf{v}_{l}\right\|, \mathbf{v}_{l} &=\sum_{i: y_{i l}=1} \phi_{\mathrm{tf}-\mathrm{idf}}\left(\mathbf{x}_{i}\right), \quad l=1, \ldots, L \\ \psi_{\text {pifa-neural }}(l)=\mathbf{v}_{l} /\left\|\mathbf{v}_{l}\right\|, \mathbf{v}_{l} &=\sum_{i: y_{i l}=1} \phi_{\text {xlnet }}\left(\mathbf{x}_{i}\right), \quad l=1, \ldots, L \end{aligned} ψpifa-tfidf (l)=vl/vl,vlψpifa-neural (l)=vl/vl,vl=i:yil=1ϕtfidf(xi),l=1,,L=i:yil=1ϕxlnet (xi),l=1,,L

    其中 i : y i l = 1 i: y_{i l}=1 i:yil=1表示属于现在这个label l l l对应的所有样本; ψ ( l ) \psi(l) ψ(l)则代表各自标签利用TF-IDF或XLNET向量表示后所求得的单位向量表示。 8192 = 2 13 8192=2^{13} 8192=213

    image-20201201094844311

3.2 Deep Transformer as Neural Matcher

SLI之后,构建一个分类器:

g ( x , k ) = w k T ϕ T ( x ) , k = 1 , … , K g(\mathbf{x}, k)=\mathbf{w}_{k}^{T} \phi_{T}(\mathbf{x}), \quad k=1, \ldots, K g(x,k)=wkTϕT(x),k=1,,K

其中 K K K是聚类个数, W = [ w 1 , ⋯   , w K ] T ∈ R K × d \mathbf{W}=[\mathbf{w_1},\cdots,\mathbf{w_K}]^T\in\mathbb{R}^{K\times d} W=[w1,,wK]TRK×d。也即将原来的样本点 { ( x i , y i ) : i = 1 , ⋯   , n } \{(\mathbf{x_i},\mathbf{y_i}):i=1,\cdots,n\} {(xi,yi):i=1,,n}空间变换至 { ( x i , m i ) : i = 1 , ⋯   , n } \{(\mathbf{x_i},\mathbf{m_i}):i=1,\cdots,n\} {(xi,mi):i=1,,n},其中 m i ∈ { 0 , 1 } K = b i n a r i z e ( C T y i ) \mathbf{m_i}\in \{0,1\}^K=binarize(C^T\mathbf{y_i}) mi{0,1}K=binarize(CTyi)。也即 M = Y C , Y ∈ R N × L , C = R L × K M=YC, Y\in \mathbb{R}^{N\times L},C=\mathbb{R}^{L\times K} M=YC,YRN×L,C=RL×K

源码中用了逻辑回归和SVM

分类器训练时的Loss为squared hinge loss:

min ⁡ W , θ 1 N K ∑ i = 1 N ∑ k = 1 K max ⁡ ( 0 , 1 − M ~ i k g ( x , k ; W , θ ) ) 2  s.t.  g ( x , k ; W , θ ) = w k T ϕ transformer  ( x ) \begin{aligned} \min _{\mathbf{W}, \theta} & \frac{1}{N K} \sum_{i=1}^{N} \sum_{k=1}^{K} \max \left(0,1-\tilde{M}_{i k} g(\mathbf{x}, k ; \mathbf{W}, \theta)\right)^{2} \\ \text { s.t. } & g(\mathbf{x}, k ; \mathbf{W}, \theta)=\mathbf{w}_{k}^{T} \phi_{\text {transformer }}(\mathbf{x}) \end{aligned} W,θmin s.t. NK1i=1Nk=1Kmax(0,1M~ikg(x,k;W,θ))2g(x,k;W,θ)=wkTϕtransformer (x)

也就是 L h i n g e = max ⁡ { 0 , 1 − y ^ ⋅ y } L_{hinge}=\max\{0,1-\hat{y}\cdot y\} Lhinge=max{0,1y^y} L L 2 = ( y − y ^ ) 2 L_{L2}=(y-\hat{y})^2 LL2=(yy^)2的结合。 M ~ i k = 2 M i k − 1 ∈ { − 1 , 1 } \tilde{M}_{ik} = 2M_{ik} - 1 ∈ \{-1, 1\} M~ik=2Mik1{1,1}

不同loss之间的可视化变现:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LcuzFQQO-1606821955023)(https://gitee.com/heisenberg1996/Typora_pictures/raw/master/loss_overview.svg)]

对输入句长的讨论

文中针对input sequence length的进行了讨论。本文对seq_len=512/128进行对比发现效果差别不大。在后续实验中都用了seq_len = 128提升计算效率。

3.3 Ranking

再用一个线性排序器one-vs-all h ( x , l ) = w l T ϕ ( x ) h(x,l)=\mathbf{w_l^T\phi(\mathbf{x})} h(x,l)=wlTϕ(x)对所属簇类标签进行排序。

源码中用了逻辑回归和SVM

在ranking的过程中运用到了两个tricks:

  1. Teacher Forcing Negatives (TFN)

    为了在反向更新权重时提升运算效率并节省运算空间,我们在back propagation时一般都要进行负采样。本文在负采样抽样时只包含了与groudtruth l l l 标签属于同一簇的实例。

    TFN则是个在RNN中运用极多的trick:

    • Autoregressive 模式下, t t t时刻的输入是 t − 1 t-1 t1输出 y ^ t − 1 \hat{y}_{t-1} y^t1
    • Teacher-Forcing 模式下, t t t时刻的输入是 Ground-truth 语句中的 y t − 1 y_{t-1} yt1

    一种能够有效避免RNN中错误累积的方法。(比如 y ^ t − 1 \hat{y}_{t-1} y^t1是错误的那后续无法修正将错误传递,最后输出时累积了前面的错误之和。)在加快模型收敛速度的同时,是保证 Transformer 模型能够在训练过程中完全并行计算所有token的关键技术。

    但同时也会带exposure bias的问题。即“曝光误差 ”。在test集上没有groundtruth的信息,训练和预测是在不同的分布中推断出来。好比平常做测验天天抄答案,一道期末考试啥都不会了。

    一般的解决思路是Scheduled Sampling:

    1. 模型在训练过程中的每一个steps,有 p p p的概率选择使用 teachering-forcing,有 1 − p 1-p 1p的概率选择使用 Autoregressive。
    2. 模型在训练前期, p p p应该尽可能的大,这样能够加速收敛;而在快要结束训练的时候, p p p尽可能的小,让模型在 Autoregressive 的方案中尽可能的修复自身生成的错误。

    M ∈ R 6 × 4 , Y ∈ R 6 × 20 , C ∈ R 20 × 4 M\in\mathbb{R}^{6\times4},Y\in\mathbb{R}^{6\times20},C\in\mathbb{R}^{20\times4} MR6×4,YR6×20,CR20×4

    image-20201201103535507

    例如在上图中,以样本点 x 4 x_4 x4为例,其正标签集合为 y 4 + = { 6 , 9 , 10 , 16 , 17 } y_4^+=\{6,9,10,16,17\} y4+={6,9,10,16,17},所以M矩阵中 m 4 ← [ 0 , 1 , 0 , 1 ] T m_4 \leftarrow [0,1,0,1]^T m4[0,1,0,1]T。训练时 m 4 m_4 m4的候选label list为 { 6 , 7 , 8 , 9 , 10 , 16 , 17 , 18 , 19 , 20 } \{6,7,8,9,10,16,17,18,19,20\} {6,7,8,9,10,16,17,18,19,20}。则负标签样本 s ( m ^ 4 ∣ c ) / y 4 + = { 7 , 8 , 18 , 19 , 20 } s(\mathbf{\hat{m}}_4|c)/y_4^+=\{7,8,18,19,20\} s(m^4c)/y4+={7,8,18,19,20}

  2. Matcher-aware Negatives (MAN)

    为了解决exposure bias的问题,选择使用了Matcher-aware Negatives的方法。MAN方法借鉴了Scheduled Sampling的思路,将groudtruth与上一个隐状态预测的label所在的簇相互融合(对于binary数据其实相当于取并集)

    M ′ = M + M ^ = Y C + M ^ , M ^ ∈ { 0 , 1 } N × K \mathbf{M}^{\prime}=\mathbf{M}+\hat{\mathbf{M}}=\mathbf{Y C}+\hat{\mathbf{M}},\hat{\mathbf{M}}\in\{0,1\}^{N\times K} M=M+M^=YC+M^,M^{0,1}N×K

f ( x , l ) = { σ ( g ( x , c l ) , h ( x , l ) ) ,  if  c l ∈ g b ( x ) − ∞ ,  otherwise  f(\mathrm{x}, l)=\left\{\begin{array}{ll}\sigma\left(g\left(\mathrm{x}, c_{l}\right), h(\mathrm{x}, l)\right), & \text { if } c_{l} \in g_{b}(\mathrm{x}) \\ -\infty, & \text { otherwise }\end{array}\right. f(x,l)={σ(g(x,cl),h(x,l)),, if clgb(x) otherwise 

最后用一个非线性激活函数 σ ( ) \sigma() σ()当bottleneck layer。

4. 实验结果评估

4.1 数据集,评估指标及实验设置

4.1.1 数据集
  1. XMC Benchmark Data

    Eurlex-4K,Wiki10-31K, AmazonCat-13K, Wiki-500K

  2. Amazon Prod2Query-1M

4.1.2 评估指标

Precision@k(k=1,3,5)

Recall@K(k=1,3,5)

4.1.3 实验设置
  • PTM: BERT, RoBERTa, XLNET
  • PTM layers: 24
  • input seq len: 128
  • batch size: 16
  • lr: { 4 , 5 , 6 , 8 } x 1 0 − 5 \{4,5,6,8\}x10^{-5} {4,5,6,8}x105

4.2 实验结果

4.2.1 XMC Benchmark结果

image-20201201154645146

ϕ fnt-xlnet  ⊕ ϕ tfidf  \phi_{\text {fnt-xlnet }} \oplus \phi_{\text {tfidf }} ϕfnt-xlnet ϕtfidf 代表XLNET向量表示后拼接TF-IDF向量

相对于AttentionXML提高了0.1-1.4%。

4.2.2 Amazon 实验结果

image-20201201155448158

4.2.3 消融实验

image-20201201155759810

  1. ID={0,1,2}实验结果证明:TFN+MAN更有效
  2. ID={2,3,4}实验结果证明:XLNET≈RoBERTa>BERT
  3. ID={4,5,6}实验结果证明:在Eurlex-4K中,text_emb更好;在Wiki-500K中,xlnet_emb更好。与Eurlex-4K相比,Wiki-500K标签文本的噪声更大
  4. ID={7,8,9}实验结果证明: ϕ fnt-xlnet  ⊕ ϕ tfidf  ⊕ ϕ text-emb \phi_{\text {fnt-xlnet }} \oplus \phi_{\text {tfidf }}\oplus\phi_{\text{text-emb}} ϕfnt-xlnet ϕtfidf ϕtext-emb更有效

该组的余相甫在20年10月延续了该思路,在arxiv放了最新的工作进展:
PECOS: PREDICTION FOR ENORMOUS AND CORRELATED OUTPUT SPACESimage-20201201165702482

  1. 用了比较新的聚类方法

    • K-means
    • Spherical K-Means
    • recursive B-ary partitioning approach clustering(递归二分区聚类)
  2. 文本表示将PIFA与label text feature相融合

    ψ ( l ) = α l ψ L F ( l ) + ( 1 − α l ) ψ P I F A ( l ) \psi(l) =\alpha_l\psi_{LF}(l)+(1-\alpha_l)\psi_{PIFA}(l) ψ(l)=αlψLF(l)+(1αl)ψPIFA(l)

  3. 在matcher器上做了一定的创新工作

参考资料

XLNET

XLNet:运行机制及和Bert的异同比较

XLNET理解

神经网络中的负采样

negative sampling方法在什么情况下有效,背后的原因是什么? - 赵印的回答

Choosing a loss function

关于Teacher Forcing 和Exposure Bias的碎碎念

PECOS: PREDICTION FOR ENORMOUS AND CORRELATED OUTPUT SPACES

choosing a loss function

关于Teacher Forcing 和Exposure Bias的碎碎念

PECOS: PREDICTION FOR ENORMOUS AND CORRELATED OUTPUT SPACES

The Emerging Trends of Multi-Label Learning

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值