文本多标签分类-SGM

论文标题:SGM:Sequence generation model for Multi-label classification

论文地址:https://arxiv.org/pdf/1806.04822.pdf

 

 模型简况:

            使用seq2seq的方式来解决多标签分类问题,通过这种方式,能够在一定程度上建模标签之间的关联信息。

文本多标签分类-SGM

Encoder

        双向LSTM编码

     文本多标签分类-SGM       

            文本多标签分类-SGM

Attention

文本多标签分类-SGM文本多标签分类-SGM

Decoder

上一时刻解码label对应的embedding向量和注意力向量是解码器的输入

文本多标签分类-SGM

利用解码器状态和注意力聚合向量计算softmax输入

文本多标签分类-SGM

屏蔽前t-1的输出(It是掩码向量)

文本多标签分类-SGM

重点

    1)masked softmax,即上图中的MS

文本多标签分类-SGM

        使用mask的方式就是对上一步的输出 添加一个mask vector  。如果当前时刻输出的标签结果在前面t-1时刻中有出现过,则赋予一个极小值,否则则赋予零向量。至于这个极小值,官方源码中是赋予了-9999999999。

        为什么要使用mask vector,论文说明是为了防止重复预测相同的标签,有时候预测错了标签会因此导致错误一直传递下去,而模型也不希望预测出重复的标签。

文本多标签分类-SGM

  2)sorted label

         即训练时,将每个样本的标签按照频率来排序,即出现较多的标签排在序列的较早时刻。这么做的目的在于,我们训练的loss还是使用交叉熵loss,每个时刻上的标签y都需要给定,因此其顺序也要给定。将频率较高的标签放在开头来训练,能够让模型提早学习对数据整体而言最有用的信息,如果一个标签出现次数很少,模型在一开始花了大力气学习它的性价比就不高,容易拖模型的后腿。

 3)global embedding

        作用就是能让每个时刻都能编码记录前面t-1时刻的标签预测进程。传统的做法是直接使用上一时刻预测出来的结果  ,但是这个结果是通过取所有标签概率分布中最大的那个结果,不一定就是正确的,如果错误,那么就会使这个错误传递。因此论文借鉴了LSTM中的关于门机制的思想,通过门的机制,将前面t-1时刻的所有预测出来的y信息都编码整合。

文本多标签分类-SGM

文本多标签分类-SGM

问题分析

      Seq2Seq模型本质上并不适合MLTC任务。原因在于,它要求人们预先定义输出标签的顺序,而MLTC任务中的一些输出标签本质上是无序集,而不是有序序列。