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

640?wx_fmt=gif

作者:何从庆,湖南大学计算机硕士,主要研究方向: 机器学习与法律智能。

导读:

文本分类是自然语言处理中一个很经典也很重要的问题,它的应用很广泛,在很多领域发挥着重要作用,例如情感分析、舆情分析以及新闻分类等。

本文将介绍一种深度文本分类方法—— RNN via Attention,该方法常常作为文本分类重要的 baseline。

RNN via Attention 结构

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

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

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

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

640?wx_fmt=png

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 机制成为了最优秀的池化操作之一

640?wx_fmt=png

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

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

Attention 机制代码实现

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

640?wx_fmt=jpeg

RNN via Attention 实战

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

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

640?wx_fmt=png

模型代码如下:

640?wx_fmt=jpeg

参考资料:

[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算法之心


640?wx_fmt=png


人工智能头条

欢迎 AI 作者投稿

640?wx_fmt=gif

猜你喜欢

转载自blog.csdn.net/guleileo/article/details/86653412