【多标签文本分类】Deep Learning for Extreme Multi-label Text Classification
2022/2/9 23:15:07
本文主要是介绍【多标签文本分类】Deep Learning for Extreme Multi-label Text Classification,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
·阅读摘要:
本文提出结合CNN的XML-CNN模型来解决大规模的多标签文本分类问题。
[1] Deep Learning for Extreme Multi-label Text Classification
[0] 摘要
极端多标签文本分类(extreme multi-label text classification (XMTC))是指从一个非常大的标签集合为每个文档分类。巨大的特征空间、标签空间带来了数据稀疏性等挑战。
XMTC在机器学习研究较多,本文是第一次提出将XMTC与深度学习(cnn)结合的模型的论文。
[1] 介绍
极端多标签文本分类对机器学习是个挑战。
传统的二元分类器将类标签视为独立的目标变量,这对于多标签分类不友好,因为类标签之间的联系不能被利用。
【注一】:二元分类器应用于多标签分类是老生长谈了。就像我们做文本分类的时候,使用词的tfidf来喂给深度学习算法,而不是用word embedding喂一样。
XMTC面临两大问题:
1、解决XMTC问题的困难部分是由于极其严重的数据稀疏问题。相当大比例的标签只有很少的训练实例与它们相关联。因此,学习标签之间的联系是很困难的。
2、XMTC中的另一个重大挑战是,当标签的数量达到数十万甚至数百万时,训练和测试相互独立的分类器的计算成本难以接受。
有三种处理巨大的标签空间问题的方法:目标嵌入方法、基于树的集成方法、深度学习方法。
【注二】:这里文章介绍了一下目标嵌入方法、基于树的集成方法、深度学习方法,前两个算是机器学习算法,深度学习说的也比较基础,可以跳过。
[2] 相关工作
介绍了几个神经网络模型。
[3] 提出的方法 XML-CNN
论文提出的亮点有三:
1、动态最大池化(dynamic max pooling)
2、二进制交叉熵损失函数(binary cross-entropy loss function)
3、隐藏的瓶颈层(hidden bottleneck layer)
模型图如下所示:
[3.1] 动态最大池化(dynamic max pooling)
这里需要对比最原始的TextCNN模型,如下图:
传统做池化的方法是,一个filter卷积的数据(图中卷积层的一个竖条)池化为一个特征(即一个数字)。
但是本论文提出的思想是: 当一个文本太大,原始的TextCNN算法的每个filter经过卷积池化后,把文本变成一个特征(数字),这样会丢失太多信息。所以应该把filter卷积的数据(图中卷积层的一个竖条)分成p个块,按照每个块进行最大池化,池化后会剩下p个特征,这样即保留了 重要特征(important features) 也保留了 位置信息( position information) ,叫做动态最大池化(dynamic max pooling)。
[3.2] 二进制交叉熵损失函数(binary cross-entropy loss function)
【注三】:这也是多标签分类最常用的损失函数。
[3.3] 隐藏的瓶颈层(hidden bottleneck layer)
在池化层与输出层之间增加一个全连接的隐含层,该隐含层有h个单元,称为隐藏的瓶颈层,其隐藏单元的数量h远小于pooling层和output层。
这样做可以:1)降低计算量。假设pooling层有100个参数,output有100个参数,不加隐藏层会有10000个参数参与计算。如果加一个有h个神经元的隐藏层,参与计算的参数是200*h个,h稍小一点就可以降低很多计算量。2)没有这个隐藏层,模型只有一个非线性的隐藏层,这不够学习良好的文档表示和分类器。
【注四】:感受是名字起的真高大上。
【注五】:文章并没有说如何学习标签之间的关联信息(即标签之间也是具有信息量的,可以参与训练)。
这篇关于【多标签文本分类】Deep Learning for Extreme Multi-label Text Classification的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享