前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >撩一发深度文本分类之 RNN via Attention

撩一发深度文本分类之 RNN via Attention

作者头像
用户1737318
发布2019-11-19 14:39:03
7520
发布2019-11-19 14:39:03
举报
文章被收录于专栏:人工智能头条人工智能头条
作者:何从庆,湖南大学计算机硕士,主要研究方向: 机器学习与法律智能。

导读: 文本分类是自然语言处理中一个很经典也很重要的问题,它的应用很广泛,在很多领域发挥着重要作用,例如情感分析、舆情分析以及新闻分类等。 本文将介绍一种深度文本分类方法—— RNN via Attention,该方法常常作为文本分类重要的 baseline。

RNN via Attention 结构

传统的文本分类方法,基本都是利用 TFIDF 提取词频以及词语间的 N-gram 信息作为特征,然后通过机器学习方法如逻辑回归、支持向量等作为分类器。

前几篇介绍的 TFIDF-LR、TFIDF-NBSVM 都是传统文本分类方法。这些方法特征表达能力差,序列捕捉能力弱,很难深层次的表征文本信息

随着深度学习的发展,常用 CNN、RNN 等模型端到端的解决文本分类问题。本文介绍的 RNN via Attention 是最经典的深度文本分类方法之一

下面我来以通俗易懂的方法一一道来该模型的优点。

RNN(s)

对于文本数据,最重要的是如何捕捉到上下文信息。RNN 主要解决序列数据的处理,比如文本、语音、视频等等。

简单的来说,RNN 主要是通过上一时刻的信息以及当前时刻的输入,确定当前时刻的信息。因此,RNN 可以捕捉到序列信息,这与捕捉文本的上下文信息相得益彰。

传统的 RNN 也会存在许多问题,无法处理随着递归,权重指数级爆炸或消失的问题,难以捕捉长期时间关联等等。

基于 RNN 的变体,如 LSTM 和 GRU 很好的缓解这个问题。但是呢,LSTM 和 GRU 这些网络,在长序列信息记忆方面效果也不是很好,Colin Raffel 等人基于 RNN 以及 RNN 的变体,提出了一种适用于 RNN(s) 的简化注意力模型,很好的解决序列长度的合成加法和乘法的长期记忆问题。

在本文中,我们使用了一种 RNN 的变体—— LSTM 捕捉文本的上下文信息。更多地,人类在阅读文本时会考虑到前后上下文信息,在本文中,我们使用了双向的 LSTM 来捕捉前后上下文信息,充分的捕捉文本的前后信息。

Attention 机制

基于 Attention 机制的论文有很多,比如transformer的self-attention、Hiearchical Attention、Feed-Forward Attention 等。

Attention 的原理是什么呢?简单地说,Attention 机制最初出现在图像领域,由于人在观察物体时会更注重重要的部分,所以机器也当和人一样,注意物体或者文本更重要的部分。

本文使用了一种Feed-Forward Attention (下文简称Attention机制)来对lstm捕捉的上下文信息使用注意力机制。

一般来说,对于序列数据模型(RNN、GRU、LSTM),使用最大池或者平均池化来对提取的上下文信息进行操作,很容易丢失掉重要的信息,最大池化提取的不是我们想要的信息,平均池化弱化了我们想要的信息,种种原因,Attention 机制成为了最优秀的池化操作之一

如上图,Attention 机制首先将 RNN(s)每个时刻的隐藏层输入到一个全连接层,然后产生一个概率向量(其实就是类似于 softmax 函数),然后用这个概率向量对每个隐藏层加权,最后相加得到最终的向量c

看起来可能很复杂,其实只要理解里面的原理,大家就会发现也就那么回事。大家如果对 Attention 机制的原理想深入研究的话,可以看一下参考里面的论文。

Attention 机制代码实现

上面我也讲解了 Attention 机制的原理,俗话说,光说不练假把式。这里我也会提供一个 keras 版本的 Attention 代码,有兴趣的大家赶紧拿去试试吧。

RNN via Attention 实战

上面我也介绍了 Attention 机制的原理和代码,是不是蓄势待发,想要练练手!这里我也为大家提供了一个案件,来实战下我们 RNN via Attention 的模型。

下面我们就可以实现我们的 RNN via Attention 模型了,我们用该模型来解决 kaggle 上面的 Toxic Comment Classification Challenge。

模型代码如下:

参考资料:

[1]https://www.kaggle.com/takuok/bidirectional-lstm-and-attention-lb-0-043

[2]https://www.kaggle.com/jhoward/improved-lstm-baseline-glove-dropout

[3]Raffel C, Ellis D P W. Feed-forward networks with attention can solve some long-term memory problems[J]. arXiv preprint arXiv:1512.08756, 2015.

作者:何从庆,湖南大学计算机硕士,主要研究方向: 机器学习与法律智能。 Github 主页: https://github.com/hecongqing 微信公众号: AI算法之心

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档