基于Transformer的百万类文本分类技术解析
文本分类是自然语言理解领域最基础的任务。例如,某智能助手的用户请求需要按领域进行分类——天气、音乐、智能家居、信息等,许多自然语言处理应用都依赖根据词性对单词进行分类的解析器。
对于文本类别相对较少的任务,性能最佳的文本分类系统使用预训练的Transformer模型,如BERT、XLNet和RoBERTa。但基于Transformer的模型随输入序列长度呈二次方扩展,随类别数量呈线性扩展。对于具有大量类别(数十万甚至数百万)的任务,它们变得不切实际地庞大。
在一篇即将在ACM知识发现与数据挖掘年会(KDD)上发表的论文中,我们描述了一种将基于Transformer的模型应用于具有大量类别的文本分类问题(或称"极端分类")的新方法。
我们的模型在类别数量上的扩展较为合理,在实验中,我们展示了在给定输入选择相关类别的任务上,它在四个不同数据集上优于最先进的系统。
分类器规模爆炸问题
通常,对于自然语言处理任务,基于Transformer的模型在大型通用文本语料库上进行预训练,学习语言的单词嵌入,或向量表示,使得相关单词在向量空间中聚集在一起。这些嵌入随后作为新分类器的输入,该分类器在特定任务上进行训练。
无论任务如何,Transformer模型本身的大小是固定的,通常在3.5亿个参数左右,其中参数是神经网络中单个连接(边)的权重。
在我们的论文中,我们考虑了通用语言理解评估(GLUE)基准测试的一个组成部分,即多类型自然语言推理(MLNI)语料库,其中包含具有三种可能逻辑关系的句子对:蕴含、矛盾或中立。训练识别这三种关系类型的分类器仅向模型添加约2,000个参数,差异可忽略不计。
我们还考虑了一个内部系统,该系统根据产品标题(例如,对于黑色数字厨房计时器,它会建议"黑色计时器"、"厨房计时器"、"黑色数字计时器"等)为添加到某电商平台的新商品推荐可能的关键词。
该系统拥有约一百万个产品类别。训练一个将产品名称分类到这些类别的分类器会向模型添加超过十亿个参数,几乎使其规模翻了两番,大大降低了训练和操作的效率。
聚类解决方案
我们通过训练基于Transformer的模型将每个输入分配给一个类别簇而不是单个类别来解决这个问题。然后我们使用一个简单的线性分类器从簇中选择一个类别。这大大减少了基于Transformer的模型的规模,同时保持了分类准确性。
为了在合理扩展的同时保留Transformer的优势,我们的方法使用Transformer模型将每个输入分配给一个标签簇。然后一个更简单的线性分类器从簇中选择单个标签。
我们实验了两种不同的类别聚类方法。一种使用预训练的XLNet模型生成的嵌入,对在向量空间中彼此接近的类别名称进行聚类。为了嵌入多词类别名称,我们对其组成词的嵌入取平均值。
另一种方法嵌入了每个类别的样本输入,而不仅仅是类别名称。同样,我们对输入文本的单个词的嵌入取平均值,为每个输入文本生成单个嵌入;然后我们对输入文本的嵌入取平均值,为特定任务生成嵌入。
在我们的实验中,结合这两种方法对类别进行聚类比单独使用任何一种效果更好。但我们的模型对使用哪种类别聚类技术是不可知的。
负样本构建技术
为了从簇中选择一个类别,我们使用一对多分类器,该分类器为簇中的每个类别学习在嵌入空间中将该类别的成员与非成员分开。每个类别的划分相当不精确,但多个划分的交集可以准确识别单个类别。
学习划分需要负训练样本以及正样本。我们使用两种不同的方法来构建负样本。
首先,对于簇中的每个类别,我们从同一簇中的其他类别抽取负样本。由于给定簇中的类别在语义上相关,这确保了负样本具有挑战性,因此比简单样本对分类器更具信息量。
我们还使用基于Transformer的聚类模型来识别具有挑战性的负样本。对于每个输入,基于Transformer的模型生成一个可能的簇分配列表,按概率排序。对于特定类别的正训练样本,我们识别模型始终以高概率预测的不正确簇。然后我们使用这些簇作为额外负样本的基础,根据概率分数加权。
实验结果
在实验中,我们在四个不同的数据集上将我们的系统与九个基准系统进行了比较。在为给定输入识别单个最佳分类标签的任务上,我们的系统在所有数据集上都是最准确的。
相对于第二名(一个名为AttentionXML的最新系统)的改进幅度很小——约1%——在一个数据集上,AttentionXML在识别前三个标签和前五个标签的任务上略更准确。但AttentionXML使用的一些技术与我们系统的技术是互补的,结合这两种方法是否能进一步提高性能值得探讨。
研究领域
对话式AI
标签
自然语言处理(NLP)、KDD、极端多标签分类