【深度之眼】情感分析——循环神经网络用于多任务学习的文本分类TextRNN

论文背景

RNN

在这里插入图片描述
将一句话的每个字拆开,用x1——xT来表示,传统的RNN模型,输入的数据是一个x1数据,输入到一个ceil中进行计算,得到一个输出,将第一个ceil得到的结果输入到第二个ceil中进行计算。通过一个个节点的计算,最终输出结果是包含x1到xT整个输出结果的数据ht,最后通过一个softmax进行分类。

这样的结构不需要考虑句子的长度,句子的长度不影响整体的向量的维度。RNN可以处理变长的句子

LSTM

在这里插入图片描述
LSTM是在RNN的基础上,添加了输入门,遗忘门,输出门。
在这里插入图片描述
LSTM计算一个损失函数,是通过一个最小化交叉熵的函数实现。通过一个累加完成公式的前半部分的计算,N为一个样本的数量,C代表一个类别的数量。如果是4分类别,那么这个C就是4。y为真实标签,y帽代表一个预测的标签。

TextRNN模型细节

共享权重模型,一个1对多的任务模型

不同的任务的输入和输出可能不同,输入层和输出层还达不到共享,但是隐藏层是可以完成模型共享。
在这里插入图片描述
论文作者针对中间层的共享权重的方法,提出三种共享权重的方法。

Uniform—Layer

在这里插入图片描述
中间层是一个共享权重的一个层,上面和下面分别是初入的两个任务。同时进行两个任务的输入计算,两个任务都输出,分别做两个任务相应的softmax,然后映射到对应的类别。

x1m表示m任务的数据集,x1n表示n任务的数据集。输入一个xm还需要加上一个xts的数据,xts一开始是一个随机的得到的,不断去训练,不断的去调整这个结构,最后追加到数据当中去。

比如,x1m作为输入数据是一个1x300的向量,x1s也是一个1x300的向量。那么最终数据的数据 x帽=x1m 拼接 x1s 就是1x600的向量。

中间的LSTM部分是一个共享的模型,输入是不同的,走的softmax也是不同的,因为不同任务可能是不同的类别任务。 词向量的embeding也是共享的。不同任务用到的是同一个词向量模型。

Coupled-Layer

在这里插入图片描述
用到的是两个LSTM的结构,上下两个。每个任务都拥有自己的LSTM层,两个任务之间不会有一个太多的影响。

两个输入并没有像第一个模型一样,添加了一个随机的xts,但是在下一个节点计算的时候,不仅用到了自己的任务上一步得到输出,还用到了另一个任务得到的输出结果,参与了下一步的计算。两个输出会被混合的利用到,这样就可以应用到其他数据集上学习到的一些特征。这样后作者任认为可以捕获到其他任务里面的信息,模型效果有提升。

最终的结果是c帽,是混合了两个任务的结果,然后加上一个wx的计算结果,需要经过tanh的激活函数。

需要经过累加得到两个任务的结果,mn分别是不同的任务,U是矩阵,h是上一个结果的输出,g另一个节点的累加结果。

每个任务都有一个LSTM,两个部分混合进行运算,改造LSTM进行运算。是一对任务同时进行,每个任务两两组合。

Shared-Layer

在这里插入图片描述
和其他模型一样,也是两个任务一起来,共享权重也是中间,是一个单独的共享权重。中间是有两个箭头,分别是前后双向的LSTM。

一共三个LSTM,每个任务自己的LSTM,还要一个中间的BiLSTM。

在输入的x1首先是进入自己任务的LSTM,还会copy一份输入到共享层去。共享层就有两个输入数据,一个是task1的x1,还要另一个任务的task2的输入x,运算出一个结果。经过双向的LSTM,前向得到一个结果ht和后向得到的ht,最终的输出是前向和后向得到的一个结果,就是将两个向量进行一个拼接操作。
在这里插入图片描述
输出的C帽,是由3个部分的组成,一个wx是自己任务下的LSTM中cell得到的结果,加上gm,和gs—m的结果

gm是上一层的结果计算公式得到的结果

gs_m是共享层计算运算到的结果。

通过共享层的一个信息,混入到一个输出结果中去,并且还加上了另外一个task的内容,最终得到一个分类结果。
在这里插入图片描述

模型对比

在这里插入图片描述
第一个模型,共享的一方面是输入的可训练向量,另一方面是共享的是LSTM的共享层,两个任务共用了一个LSTM的层。所以在最后一个softmax的结果是包含了两个任务的一个信息。一个是他的层,一个是学习到的特征向量。

模型二,没有直接共享LSTM层,每一个任务都有自己的LSTM层,她们之间不用,每个时刻任务进行的时候,会混搭另一个另一个任务的隐藏层的输出,做一个运算,作为输入。

第三个模型,共享了中间共享层的输输出。

训练细节

在这里插入图片描述
将最后一层得到的结果进行映射,最后使用的是一个全连接层完成映射工作,其中w代表的是一个第m任务上的权重。h代表第m个任务最后的输出 ,b是初始化的权重,再经过softmax将结果映射到0-1之间。最后得到的就是每个分类结果的概率值。每个分类结果的值加起来的和是1。取当中概率值最大的为当前类别

通过w,b矩阵,将前面学到的特征映射到概率上去。

在这里插入图片描述

损失是通过交叉熵计算出来,作者指出 通过一个线性的变换将所有的所有任务的loss,全部累加到一起。M代表有多少个任务,m代表当前的数据集,y帽是预测标签,和真实的 类别进行计算得到当前任务的loss。

λm是权重,作者认为不同任务之间的权重值应该是不一样的,取决于样本的数量和样本的类别数量来权衡。

在这里插入图片描述
怎么选数据和选任务

先随机选择任务,挑出一个任务,基于选好的任务,随机选择训练样本,去更新权重,计算权重,求梯度,更新参数,不断的选择任务,随机选择样本再去更新。

在这里插入图片描述
模型1和模型3,中间的共享层进行一个优化的过程。通过调参,来调整共享层的权重。
在这里插入图片描述

共享层可以用所有的数据进行预训练,通过无监督的方法,预训练全部的数据,训练一个词向量和共享层的权重,第三个模型就可以获取到所有数据的一个信息。基于预训练的一个信息,再去构建我们的第三个模型,作为与训练权重加载进去,效果更好。

数据集

在这里插入图片描述

实验结果

在这里插入图片描述
最后的两个数据集没有划分训练集和测试集,所以需要我们自己手动划分一下。

在这里插入图片描述
词向量模型上,选择的是训练好的词向量模型,对于没有验证集的数据集做了10折的交叉验证,词向量的大小设置为64维度,LSTM的隐藏层大小为50个,学习率为0.1,正则为10的负的5次方。

实验结果分析

第一个模型的提升效果

在这里插入图片描述
分别比较了单任务与多任务的效果对比,验证集的微调后FineTuning结果提升明显

第二个模型

在这里插入图片描述
每个任务两两组合,4个任务,就有6种的组合结果,对比了单个模型的效果,对比多个模型的效果提升。
单个任务的结果就是一个基线,作为对比。

组合效果,和数据的来源有一定的关系,同类型的数据组合下,精确度会更好。

第三个模型

在这里插入图片描述
加入LM的改进,效果有一定的提升,最终再做一个微调整后,大概能提升2.8的提升,多任务是提升1.4%。

SOTA

在这里插入图片描述

最后作者做了,相较于对比当时主流的模型。

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驭风少年君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值