作者丨杨敏

单位丨中国科学院深圳先进技术研究院助理研究员

研究方向丨自然语言处理

文本建模方法大致可以分为两类:(1)忽略词序、对文本进行浅层语义建模(代表模型包括 LDA,EarthMover’s distance等); (2)考虑词序、对文本进行深层语义建模(深度学习算法,代表模型包括 LSTM,CNN 等)。

在深度学习模型中,空间模式(spatial patterns)汇总在较低层,有助于表示更高层的概念(concepts)。例如,CNN 建立卷积特征检测器提取来自局部序列窗口的模式,并使用 max-pooling 来选择最明显的特征。然后,CNN 分层地提取不同层次的特征模式。

然而,CNN 在对空间信息进行建模时,需要对特征检测器进行复制,降低了模型的效率。正如(Sabouret al, 2017)所论证的那样,这类方法所需复制的特征检测器的个数或所需的有标签训练数据的数量随数据维度呈指数增长。

另一方面,空间不敏感的方法不可避免地受限于丰富的文本结构(比如保存单词的位置信息、语义信息、语法结构等),难以有效地进行编码且缺乏文本表达能力

最近,Hinton 老师等提出了胶囊网络(Capsule Network), 用神经元向量代替传统神经网络的单个神经元节点,以 Dynamic Routing 的方式去训练这种全新的神经网络,有效地改善了上述两类方法的缺点。

正如在人类的视觉系统的推理过程中,可以智能地对局部和整体(part-whole)的关系进行建模,自动地将学到的知识推广到不同的新场景中。

到目前为止,并没用工作将 Capsule Network 应用于自然语言处理中(e.g., 文本分类)。

我们针对 Capsule Network 在文本分类任务上的应用做了深入研究。对于传统的分类问题,Capsule Network 取得了较好性能,我们在 6 个 benchmarks 上进行了实验,Capsule Network 在其中 4 个中取得了最好结果。

更重要的是,在多标签迁移的任务上(fromsingle-label to multi-label text classification),Capsule Network 的性能远远地超过了 CNN 和 LSTM

我们的工作已经发表在 arXiv上,论文名为 Investigating Capsule Networks with Dynamic Routing for Text Classificationm,更多细节可以点击阅读原文进行参考。我们会在论文发表后公开源码。

论文模型

文本主要研究胶囊网络在文本分类任务上的应用,模型的结构图如下:

其中,连续两个卷积层采用动态路由替换池化操作。动态路由的具体细节如下:

在路由过程中,许多胶囊属于背景胶囊,它们和最终的类别胶囊没有关系,比如文本里的停用词、类别无关词等等。因此,我们提出三种策略有减少背景或者噪音胶囊对网络的影响

1. Orphan 类别:在胶囊网络的最后一层,我们引入 Orphan 类别,它可以捕捉一些背景知识,比如停用词。在视觉任务加入 Orphan 类别效果比较有限,因为图片的背景在训练和测试集里往往是多变的。然而,在文本任务,停用词比较一致,比如谓词和代词等。

2. Leaky-Softmax:除了在最后一层引入 Orphan 类别,中间的连续卷积层也需要引入去噪机制。对比 Orphan 类别,Leaky-Softmax 是一种轻量的去噪方法,它不需要额外的参数和计算量。

3. 路由参数修正:传统的路由参数,通常用均与分布进行初始化,忽略了下层胶囊的概率。相反,我们把下层胶囊的概率当成路由参数的先验,改进路由过程。 在 ablation test 中,我们对改进的路由和原始路由方法进行对比,如下:

此外,为了提升文本性能,我们引入了两种网络结构,具体如下:

实验

数据集:为了验证模型的有效性,我们在 6 个文本数据集上做测试,细节如下:

在实验中,我们和一些效果较好的文本分类算法进行了对比。由于本文的重点是研究 Capsule Network 相对已有分类算法(e.g.,LSTM, CNN)是否有提升,我们并没有与网络结构太过复杂的模型进行对比。实验结果如下:

此外,我们重点进行了多标签迁移实验。我们将 Rueter-21578 数据集中的单标签样本作为训练数据,分别在只包含多标签样本的测试数据集和标准测试数据集上进行测试。详细的数据统计以及实验结果如下图所示。

从表中我们可以看出,当我们用单标签数据对模型进行训练,并在多标签数据上进行测试时,Capsule Network 的性能远远高于 LSTM、CNN 等

此外,我们还做了 case study 分析,发现路由参数可以表示胶囊的重要性,并对胶囊进行可视化(此处我们主要可视化 3-gram 的结果)。

具体来说,我们删除卷积胶囊层,将 Primary Capsule Layer 直接链接到 Fully-connected Capsule Layer,其中 Primary Capsule 代表了 N-gram 短语在 Capsule 里的形式,Capsule 之间的链接强度代表了每个 Primary Capsule 在本文类别中的重要性(比较类似并行注意力机制)。

由图我们可以看出,对于 Interest Rate 类别,months-interbank-rate 等 3-grams 起着重要作用。

致谢

感谢 jhui 和苏剑林,他们的文章启发了我们的工作。感谢 naturomics 和 gyang274 的开源代码,让我们的开发过程变得高效。

[1] https://jhui.github.io/2017/11/14/Matrix-Capsules-with-EM-routing-Capsule-Network/

[2] https://spaces.ac.cn/archives/4819

[3] https://github.com/bojone/Capsule

[4] https://github.com/naturomics/CapsNet-Tensorflow

主要参考文献

[1] Dynamic Routing Between Capsules

[2] Matrix Capsules with Em Routing

点击以下标题查看相关文章:

  • 揭开迷雾,来一顿美味的「Capsule」盛宴

  • 再来一顿贺岁宴 | 从K-Means到Capsule

  • 三味Capsule:矩阵Capsule与EM路由

#投 稿 通 道#


投稿须知 | 让你的文字被很多很多很多人看到

我是彩蛋

 解锁新功能:热门职位推荐!

PaperWeekly小程序升级啦

今日arXiv√猜你喜欢√热门职位

找全职找实习都不是问题

 解锁方式 

1. 识别下方二维码打开小程序

2. 用PaperWeekly社区账号进行登陆

3. 登陆后即可解锁所有功能

 职位发布 

请添加小助手微信(pwbot02)进行咨询

长按识别二维码,使用小程序

*点击阅读原文即可注册

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

▽ 点击 | 阅读原文 | 查看论文

胶囊网络(Capsule Network)在文本分类中的探索相关推荐

  1. 论文解读:胶囊网络在小样本做文本分类中的应用(下)

    Dynamic Memory Induction Networks for Few-Shot Text Classification 论文提出Dynamic Memory Induction Netw ...

  2. python实现胶囊网络_胶囊网络(Capsule Network)在文本分类中的探索

    作者丨杨敏 单位丨中国科学院深圳先进技术研究院助理研究员 研究方向丨自然语言处理 文本建模方法大致可以分为两类:(1) 忽略词序.对文本进行浅层语义建模 (代表模型包括 LDA,EarthMover' ...

  3. 【Mo 人工智能技术博客】胶囊网络——Capsule Network

    胶囊网络--Capsule Network 作者:林泽龙 1. 背景介绍 CNN 在处理图像分类问题上表现非常出色,已经完成了很多不可思议的任务,并且在一些项目上超过了人类,对整个机器学习的领域产生了 ...

  4. 基于动态路由的胶囊网络在文本分类上的探索

    摘要 简介 模型 2.1 N-gram 卷积层 2.2 初级胶囊层 2.2.1 孩子-父母(部分-整体)关系 2.3 动态路由 孤立类别 Leaky-Softmax 参数修正 实验 3.1 实验数据集 ...

  5. python实现胶囊网络_Capsule Network胶囊网络解读与pytorch代码实现

    本文是论文<Dynamic Routing between Capsules>的论文解读与pytorch代码实现. 如需转载本文或代码请联系作者 @Riroaki 并声明. 众所周知,卷积 ...

  6. 结合胶囊网络Capsule和图卷积GCN的文章

    结合胶囊网络Capsule和图卷积GCN的文章 一.Capsule Neural Networks for Graph Classification 1.1 文章概要 1.2 实现方法 1.2.1 G ...

  7. paddle2.0高层API实现自定义数据集文本分类中的情感分析任务

    paddle2.0高层API实现自定义数据集文本分类中的情感分析任务 本文包含了: - 自定义文本分类数据集继承 - 文本分类数据处理 - 循环神经网络RNN, LSTM - ·seq2vec· - ...

  8. EMNLP 2021 | 多标签文本分类中长尾分布的平衡策略

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 黄毅 作者简介:黄毅,本文一作,目前为罗氏集团的数据科学家 ...

  9. label-embedding在文本分类中的应用

    ©PaperWeekly 原创 · 作者|蔡杰 学校|北京大学硕士生 研究方向|QA 最近在做文本分类相关的工作,目标是想提高分类器泛化新样本的能力,当有新样本产生的时候能够不需要重新训练分类器.所以 ...

最新文章

  1. Android 改变AlertDialog的大小
  2. windows puppet manifests 文件维护
  3. 学习笔记Flink(五)—— Flink开发环境配置及运行实例(单词计数)
  4. 大数据平台应用 17 个知识点汇总
  5. Lucene创建索引入门案例
  6. jvm MinorGC和查看GC日志
  7. AUTOSAR从入门到精通100讲(九)-汽车Tbox
  8. Java中抽象类和接口的区别?
  9. 多媒体微型计算机必不可少的硬件,第1章计算机基础知识习题材料.doc
  10. TensorFlow入门:TensorFlow工作原理
  11. 深度学习——用神经网络解决非线性问题
  12. TcpTrace追踪远程服务器的soap信息
  13. tomcat stdout文件快速增长原因_Tomcat下载安装及配置
  14. LDA线性判别原理解析<数学推导>
  15. 贪吃蛇html游戏代码
  16. js实现添加删除表格
  17. 计算机学不学p图的,五分钟学会P图!只需要电脑自带的看图软件!无需专业的PS软件!...
  18. SpringMVC添加登录页面以及首页实现跳转
  19. 计算机主机hs编码,电脑设备的进出口品名
  20. 题解-[Usaco2005 Mar]Out of Hay 干草危机

热门文章

  1. c++ 类 A类调用B类
  2. 第三模块:面向对象(目录)
  3. 小技巧2 - 负边距居中法
  4. 上学路线 (Standard IO)
  5. python模块的导入的两种方式区别详解
  6. Static Final用法
  7. [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件...
  8. 小米redmi_小米Redmi小爱触屏音箱8,不仅屏幕大,而且功能多,价格更超值
  9. python代码300行程序_Python:游戏:300行代码实现俄罗斯方块
  10. r2游戏服务器网站,云服务器win2008r2玩游戏