基于Attention机制的深度学习模型在文本分类中的应用

Attention机制在2016年被大量应用在nlp中,这里简单介绍Attention在AS任务上的应用。在对AS任务建模时,采用问题和答案对的形式建模,因此可以根据问题和答案的关系设计Attention机制。而文本分类任务中则稍有不同,文本分类建模方式为问题和标签。因此Attention机制的设计一般被应用于时序模型中,通过时序状态设计Attention。

本文参考《Hierarchical Attention Networks for Document Classification》,该论文介绍了Attention机制在英文文本分类中的应用。本文采用document级分类,即document由sentence组成,而sentence由word组成,因此天然的具有层级关系。以word为粒度输入网络抽取word级特征得到表示sentence的特征向量;然后将sentence级向量输入网络抽取sentence级特征得到最终的document级特征,然后将document特征通过一个线性表示和softmax。为了给与不同的word和不同的sentence分配不同的权重,论文设计一个层级架构的attention机制用于提升模型的性能。

Hierarchical Attention Network

本文借鉴论文中设计Attention的方式,设计了基于单字的Attention模型。

本文Attention网络结构

实验步骤

1:本次实验采用单句问题和对应的标签作为输入。实验之前首先对问题按字切词,然后采用word2vec对问题进行预训练(这里采用按字切词的方式避免的切词的麻烦,并且同样能获得较高的准确率)。

2:由于本次实验采用固定长度的GRU/LSTM,因此需要对问题和答案进行截断(过长)或补充(过短)。

3:实验建模Input。本次实验单句问题和标签进行建模(q,l),q代表问题,l代表标签。

4:将问题进行Embedding(batch_size, seq_len, embedding_size)表示。

5:对问题采用GRU/LSTM模型计算特征(seq_len, batch_size, rnn_size)。

6:GRU/LSTM模型输出向量为(batch_size, seq_len,rnn_size),因此需要对输出特征向量进行特征抽取。常用的特征抽取方式为取模型最后一步的输出为下一层的特征,但是该特征抽取方式只取了最后一步的特征,丢弃了其他的特征信息,所以本次实验采用Attention机制计算每一步特征的权值,然后进行加权平均。

7:对模型输出的特征进行线性变换。

8:针对多类文本分类,需要将线性变换的输出通过softmax

参数设置

1:、这里优化函数采用论文中使用的Adam(尝试过SGD,学习速率0.1,效果不佳)。

2、学习速率为1e-4。

3:、训练100轮。

4、embedding_size为150维。

5、attention为100维。

6、batch_size这里采用128。

7、问题长度限制为80字。

8、rnn_size为201。

9、模型采用单层网络,多层网络速度相对更慢,性能没有明显的提升。

10、dropout为0.5(在输入和输出时均执行dropout,单次dropout实验时效果不佳)

实验效果对比

BIGRU :93%

BILSTM :91.43%

BIGRU_ATTENTION :95.4%

BILSTM_ATTENTION :96.2%

实验总结:本次实验语料为5W,根据结果分析GRU稍胜LSTM,这也证明了前面博客的观点(在语料数量相对较少时,GRU可能会获得更优的性能)。将Attention机制应用在GRU和LSTM上,都取得了较好的性能提升,基于Attention的LSTM模型性能稍胜GRU模型。

附录

words.txt

train.txt

cateAndQuest.txt

vectors.txt

由于部分朋友评论不知道文件格式,因此这里举例列出各个文件的格式。words.txt和train.txt都是空格分开,cateAndQuest.txt是tab键分开,vectors.txt一行是一个词向量,和words.txt一一对应。

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

学界丨反向传播算法最全解读,机器学习进阶必看!

AI 科技评论按:如果对人工智能稍有了解的小伙伴们,或多或少都听过反向传播算法这个名词,但实际上BP到底是什么?它有着怎样的魅力与优势?本文发布于 offcon...

4155
来自专栏AI研习社

训练深度神经网络的必知技巧,你知道哪些?

本文将主要介绍 8 种深度神经网络实现细节的技巧或 tricks,包括:数据增广、图像预处理、网络初始化、训练过程中的技巧、激活函数的选择、不同正则化方法、来自...

3005
来自专栏人工智能LeadAI

R-CNN 物体检测第二弹(Fast R-CNN)

今天,重看了 R-CNN 的后续改进 Fast R-CNN(Arxiv版)-本文中提到的paper,若未特别指明,说的就是此版本。 这里提一把辛酸泪。15年8月...

4266
来自专栏机器学习算法全栈工程师

Batchnorm原理详解

作者:刘威威 小编:赵一帆 前言:Batchnorm是深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法,可以说是目前深度网络必不可少的一部分。...

4925
来自专栏IT派

最全的DNN概述论文:详解前馈、卷积和循环神经网络技术

本论文技术性地介绍了三种最常见的神经网络:前馈神经网络、卷积神经网络和循环神经网络。且该文详细介绍了每一种网络的基本构建块,其包括了基本架构、传播方式、连接方式...

3434
来自专栏计算机视觉战队

尺度不变人脸检测器(S3FD-Single Shot Scale-invariant Face Detector)

今天讲尺度不变人脸检测前之前,我想讲解下一位热心研究者的问题,可以简单讲解下,希望也可以帮助其他读者,谢谢! ? ? 这样的人脸尺度怎么去实现的,其实很简单,如...

4044
来自专栏数据科学与人工智能

【算法】逻辑回归(Logistic Regression) 模型

小编邀请您,先思考: 1 逻辑回归算法的原理是什么? 2 逻辑回归算法的有哪些应用? 逻辑回归(Logistic Regression)是机器学习中的一种分类模...

5835
来自专栏用户画像

决策树

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxq0816/article/details...

823
来自专栏null的专栏

简单易学的机器学习算法——K-近邻算法

一、近邻算法(Nearest Neighbors) 1、近邻算法的概念 近邻算法(Nearest Neighbors)是一种典型的非参模型,与生成方法(gen...

3286
来自专栏人工智能头条

神经网络训练中的Tricks之高效BP(反向传播算法)

1173

扫码关注云+社区