TextRCNN、TextCNN、RNN…你都掌握了吗?一文总结文本分类必备经典模型(二)

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: TextRCNN、TextCNN、RNN…你都掌握了吗?一文总结文本分类必备经典模型(一)

三、RNN


递归神经网络(Recurrent Neural Network,RNN)被广泛用于通过递归计算捕捉长距离的依赖性。RNN 语言模型学习历史信息,考虑到适合文本分类任务的所有单词之间的位置信息。首先,每个输入词都用一个特定的向量表示,使用词嵌入技术。然后,嵌入的单词向量被逐一送入RNN 单元。RNN 单元的输出与输入向量的维度相同,并被送入下一个隐藏层。RNN 在模型的不同部分共享参数,每个输入词的权重相同。最后,输入文本的标签可以由隐藏层的最后一个输出来预测。


图6. RNN架构


3.1 TextRCNN


TextRCNN 相关论文首次发表在 AAAI 2015 中。在 TextCNN 网络中,网络结构采用“卷积层+池化层”的形式,卷积层用于提取 n-gram 类型的特征,在 RCNN(循环卷积神经网络)中,卷积层的特征提取的功能被 RNN 替代,即通过 RNN 取代 TextCNN的特征提取。RNN 的优点是能够更好地捕捉上下文信息,有利于捕获长文本的语义。因此整体结构变为了 RNN+池化层,所以叫 RCNN。

TextRCNN 在词嵌入的基础上加上了上下文环境作为新的词嵌入表示。左侧和右侧的context 是通过前向和后向两层 RNN 的中间层输出得到的。这些中间层的输出和原始的词嵌入拼接形成新的词嵌入 y,然后送入池化层。下图是 TextRCNN 模型框架,输入是一个文本 D,可以看成是由一系列单词(W_1, W_2,...)组成的。输出是一个概率分布,最大的位置对应文章属于的类别 K。


图7. 递归卷积神经网络的结构。该图是 "A sunset stroll along the South Bank affords an array of stunning vantage points "这句话的部分例子,下标表示原句中相应的词的位置

RCNN 整体的模型构建流程如下:1)利用前向和后向 RNN 得到每个词的前向和后向上下文的表示,词的表示就变成词向量和前向后向上下文向量 concat 起来的形式了。2)将拼接后的向量非线性映射到低维。3)向量中的每个位置的值都取所有时序上的最大值,得到最终的特征向量。4)softmax 分类得到最终的评分向量。使用随机梯度下降来对参数进行更新。

当前 SOTA!平台收录 TextRCNN 共 1 个模型实现资源,支持框架:TensorFlow。

模型 SOTA!平台模型详情页
TextRCNN  前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/a5a82cbe-98b7-4f3d-87ae-f9fd59caa55e

3.2 Multi-task


Multi-task 的文章发表与 IJCAI 2016。在本文中,作者使用多任务学习框架来共同学习多个相关任务(相对于多个任务的训练数据可以共享),以应对数据不足的问题。本文提出了三种不同的基于递归神经网络的信息共享机制,以针对特定任务和共享层对文本进行建模。整个网络在这些任务上进行联合训练。

图8. Multi-task 三种模型


对于模型 I,每个任务共享一个 LSTM 层和 Eembedding 层,同时每个任务都拥有自己的 Eembedding 层,也就是说,对于任务 m,输入x定义为以下形式:


其中,(x_t)^(m)、(x_t)^(s) 分别表示特定任务和共享词嵌入,⊕表示连接操作。

模型 II 中,每个任务都拥有自己的 LSTM 层,但是下一时刻的输入中包含了下一时刻的char 及所有任务在当前时刻的隐层输出 h。
作者修改了 cell 的计算公式以决定保存多少信息:


模型 III 中,每个任务都拥有一个共享的 BI-LSTM 层,同时各自有一个 LSTM 层,LSTM 的输入包括 char 及 BI-LSTM 在该时刻的隐层输出,与模型 II 一样,作者也修改了 cell 的计算公式


当前 SOTA!平台收录 Multi-task 共 1 个模型实现资源,支持框架:PyTorch。

模型 SOTA!平台模型详情页
Multi-task  前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/351b1aba-c543-437a-8cf8-9b027c5c42b7


3.3 DeepMoji


DeepMoji 发表在 EMNLP 2017 中,是 Bjarke Felbo 等提出的一种联合 Bi-LSTM 和Attention 的混合神经网络,对表情符号的情绪识效果最优,在文本分类任务中表现也不错。

DeepMoji 的结构如图 9 所示,第一层是一个让每个 Word 能够嵌入向量空间的嵌入层,然后用 tanh 激活函数把嵌入维度压缩到[-1,1];第二层和第三层用一个 BiLSTM,每一个方向用 512 个隐层单元;第四层是一个 attention 层,通过 skip-connections 将前面三层的输出拼接,输入到 attention 中;第五层就是一个 softmax 层。简言之,DeepMoji 就是在 Embedding 后接两层 Bi-LSTM,然后再将这三层的输出拼接,到Attention,再接一个 softmax。


图9. DeepMoji模型,S为文本长度,C为类别数量


当前 SOTA!平台收录 DeepMoji 共 8 个模型实现资源,支持框架:TensorFlow、PyTorch、Keras。

模型 SOTA!平台模型详情页
DeepMoji 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/9f50abc9-d67e-483a-bb44-e10c3baeb327

3.4 RNN-Capsule


RNN-Capsule 是胶囊方法在文本分类中的应用,相关论文发表在 EMNLP 2018 中。胶囊网络(Capsule Network)用神经元向量代替传统神经网络的单个神经元节点,以 Dynamic Routing 的方式去训练这种全新的神经网络,从而提升模型效率及文本表达能力。

该模型首先利用标准的卷积网络,通过多个卷积滤波器提取句子的局部语义表征。然后将 CNN 的标量输出替换为向量输出胶囊,从而构建 Primary Capsule 层。接着输入到作者提出的改进的动态路由(共享机制的动态路由和非共享机制的动态路由),得到卷积胶囊层。最后将卷积胶囊层的胶囊压平,送入到全连接胶囊层,每个胶囊表示属于每个类别的概率。

图10. 用于文本分类的胶囊网络的结构。动态路由的过程显示在底部


在路由过程中,许多胶囊属于背景胶囊,即这些胶囊与最终的类别胶囊无关,比如文本里的停用词、类别无关词等等。作者提出了三种策略以减少背景或者噪音胶囊对网络的影响:

  1. Orphan 类别:在胶囊网络的最后一层引入 Orphan 类别,它可以捕捉一些背景知识,比如停用词。在文本任务中停用词比较一致,比如谓词和代词等,所以引入Orphan 类别的效果较好。
  2. Leaky-Softmax:在中间的连续卷积层引入去噪机制。对比 Orphan 类别,Leaky-Softmax 是一种轻量的去噪方法,它不需要额外的参数和计算量。
  3. 路由参数修正:传统的路由参数,通常用均与分布进行初始化,忽略了下层胶囊的概率。相反,作者把下层胶囊的概率当成路由参数的先验,改进路由过程。

为了提升文本性能,作者引入了两种网络结构,具体如下:

图11. 两种胶囊网络架构


Capsule-A 从嵌入层开始,将语料库中的每个词转化为 300 维(V = 300)的词向量,然后是一个具有 32 个滤波器(B = 32)、步长为 1 的 ReLU 非线性的 3-gram(K1 = 3)卷积层。所有其他层都是胶囊层,从具有 32 个滤波器(C=32)的 B×d 初级胶囊层开始,然后是具有 16 个滤波器(D=16)的 3×C×d×d(K2=3)卷积胶囊层和一个全连接的胶囊层,依次进行。每个胶囊都有 16 维(d=16)的实例化参数,其长度(规范)可以描述胶囊存在的概率。胶囊层由转换矩阵连接,每个连接也要乘以路由系数,该系数由路由协议机制动态计算得出。

Capsule-B 的基本结构与 Capsule-A 相似,只是在 N-gram 卷积层中采用了三个平行网络,过滤窗口(N)为 3、4、5(见图 11)。全连接的胶囊层的最终输出被送入平均池以产生最终结果。通过这种方式,Capsule-B 可以学习到更有意义和更全面的文本表述。

当前 SOTA!平台收录 RNN-Capsule 共 1 个模型实现资源,支持框架:TensorFlow。

模型 SOTA!平台模型详情页
RNN-Capsule 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/f8cd1ed1-5ebe-42bf-8672-a1d2d9c1c97f

前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。 

网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。

移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。

相关文章
|
28天前
|
机器学习/深度学习 算法 存储
Bengio等人新作:注意力可被视为RNN,新模型媲美Transformer,但超级省内存
【6月更文挑战第3天】Bengio等人提出的新模型Aaren视注意力为特殊RNN,以解决Transformer在资源受限环境中的计算成本高和内存使用问题。Aaren模型通过并行前缀和算法实现高效计算和常数级内存使用,性能接近Transformer,同时在时间序列任务中表现优秀,尤其适合移动设备和嵌入式系统。尽管可能在某些复杂任务上不如Transformer,但其高效性为实时数据处理提供了潜力。论文链接:[https://arxiv.org/pdf/2405.13956](https://arxiv.org/pdf/2405.13956)
57 2
|
18天前
|
机器学习/深度学习 自然语言处理 PyTorch
【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】
【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】
|
2月前
|
机器学习/深度学习 数据可视化 算法框架/工具
R语言深度学习KERAS循环神经网络(RNN)模型预测多输出变量时间序列
R语言深度学习KERAS循环神经网络(RNN)模型预测多输出变量时间序列
|
2月前
|
机器学习/深度学习 算法
通俗易懂说模型——RNN
要理解RNN出现的原因,我们必须要理解CNN存在的缺点
|
2月前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
2月前
|
机器学习/深度学习
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
|
2月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
120 1
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch搭建循环神经网络(RNN)进行文本分类、预测及损失分析(对不同国家的语言单词和姓氏进行分类,附源码和数据集)
PyTorch搭建循环神经网络(RNN)进行文本分类、预测及损失分析(对不同国家的语言单词和姓氏进行分类,附源码和数据集)
127 0
|
8月前
|
机器学习/深度学习 存储 自然语言处理
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
110 0
|
10月前
|
人工智能 人机交互 语音技术
INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型
INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型
143 0