深度学习
  • 前言
  • 第一章:经典网络
    • ImageNet Classification with Deep Convolutional Neural Network
    • Very Deep Convolutional Networks for Large-Scale Image Recognition
    • Going Deeper with Convolutions
    • Deep Residual Learning for Image Recognition
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
    • Squeeze-and-Excitation Networks
    • Densely Connected Convolutional Networks
    • SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE
    • MobileNet v1 and MobileNet v2
    • Xception: Deep Learning with Depthwise Separable Convolutions
    • Aggregated Residual Transformations for Deep Neural Networks
    • ShuffleNet v1 and ShuffleNet v2
    • CondenseNet: An Efficient DenseNet using Learned Group Convolution
    • Neural Architecture Search with Reinforecement Learning
    • Learning Transferable Architectures for Scalable Image Recognition
    • Progressive Neural Architecture Search
    • Regularized Evolution for Image Classifier Architecture Search
    • 实例解析:12306验证码破解
  • 第二章:自然语言处理
    • Recurrent Neural Network based Language Model
    • Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
    • Neural Machine Translation by Jointly Learning to Align and Translate
    • Hierarchical Attention Networks for Document Classification
    • Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne
    • About Long Short Term Memory
    • Attention Is All you Need
    • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 第三章:语音识别
    • Speech Recognition with Deep Recurrent Neural Network
  • 第四章:物体检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • R-FCN: Object Detection via Region-based Fully Convolutuional Networks
    • Mask R-CNN
    • You Only Look Once: Unified, Real-Time Object Detection
    • SSD: Single Shot MultiBox Detector
    • YOLO9000: Better, Faster, Stronger
    • Focal Loss for Dense Object Detection
    • YOLOv3: An Incremental Improvement
    • Learning to Segment Every Thing
    • SNIPER: Efficient Multi-Scale Training
  • 第五章:光学字符识别
    • 场景文字检测
      • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
      • Detecting Text in Natural Image with Connectionist Text Proposal Network
      • Scene Text Detection via Holistic, Multi-Channel Prediction
      • Arbitrary-Oriented Scene Text Detection via Rotation Proposals
      • PixelLink: Detecting Scene Text via Instance Segmentation
    • 文字识别
      • Spatial Transform Networks
      • Robust Scene Text Recognition with Automatic Rectification
      • Bidirectional Scene Text Recognition with a Single Decoder
      • multi-task learning for text recognition with joint CTC-attention
    • 端到端文字检测与识别
      • Reading Text in the Wild with Convolutional Neural Networks
      • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    • 实例解析:字符验证码破解
    • 二维信息识别
      • 基于Seq2Seq的公式识别引擎
      • Show and Tell: A Neural Image Caption Generator
      • Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  • 第六章:语义分割
    • U-Net: Convolutional Networks for Biomedical Image Segmentation
  • 第七章:人脸识别
    • 人脸检测
      • DenseBox: Unifying Landmark Localization with End to End Object Detection
      • UnitBox: An Advanced Object Detection Network
  • 第八章:网络优化
    • Batch Normalization
    • Layer Normalization
    • Weight Normalization
    • Instance Normalization
    • Group Normalization
    • Switchable Normalization
  • 第九章:生成对抗网络
    • Generative Adversarial Nets
  • 其它应用
    • Holistically-Nested Edge Detection
    • Image Style Transfer Using Convolutional Nerual Networks
    • Background Matting: The World is Your Green Screen
  • Tags
  • References
由 GitBook 提供支持
在本页
  • 前言
  • 1. HAN算法详解
  • 1.1 网络结构
  • 1.2 单词编码器
  • 1.3 单词Attention
  • 1.4 句子编码器
  • 1.5 句子Attention
  • 1.5 句子分类
  • 2. 总结

这有帮助吗?

  1. 第二章:自然语言处理

Hierarchical Attention Networks for Document Classification

上一页Neural Machine Translation by Jointly Learning to Align and Translate下一页Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne

最后更新于4年前

这有帮助吗?

tags: Attention

前言

本文提出了一个Hierarchical Attention Network(HAN)模型用来做文章分类的任务,该算法提出的动机是考虑到在一个句子中,不同的单词对于决定这个句子的含义起着不同的作用;然后在一篇文章中,不同的句子又对于该文档的分类起着不同的作用。所以这篇层次Attention模型分别在单词层次和句子层次添加了一个Attention机制。实验结果表明这种机制可以提升文章分类的效果,同时通过Attention的权值向量的权值我们可以看出究竟哪些句子以及哪些单词对文档分类起着更重要的作用。

1. HAN算法详解

1.1 网络结构

HAN的网络结构如图1所示,它的核心结构由两个部分组成,下面是一个单词编码器加上基于单词编码的Attention层,上面是一个句子编码器和一个基于句子编码的Attention层。

图1:HAN网络结构图

在详细介绍网络结构之前我们先给出几个重要参数的定义。假设一篇文章由LLL个句子组成,第si(i∈[1,L])s_i(i\in[1,L])si​(i∈[1,L])个句子包含TiT_iTi​个单词,witw_{it}wit​是第iii个句子中的第t(t∈[1,Ti])t(t\in[1,T_i])t(t∈[1,Ti​])个单词。

1.2 单词编码器

图1中最底下的部分是个单词编码器,它的输入是一个句子。给定一个由单词witw_{it}wit​组成的句子TiT_iTi​,它首先会经过一个嵌入矩阵编码成一个特征向量,例如word2vec等方法:

xit=Wewit,t∈[1,T]x_{it} = W_e w_{it}, t\in[1,T]xit​=We​wit​,t∈[1,T]

之后使用一个单层的双向对xitx_{it}xit​进行编码:

h⃗it=GRU(xit),t∈[1,T]\vec{h}_{it} = \text{GRU}(x_{it}),t\in[1,T]hit​=GRU(xit​),t∈[1,T]
h⃗it′=GRU(xit),t∈[T,1]\vec{h}'_{it} = \text{GRU}(x_{it}),t\in[T,1]hit′​=GRU(xit​),t∈[T,1]

双向GRU的输出是通过拼接前向GRU和反向GRU的方式得到的。

hit=[h⃗it;h⃗it′]h_{it} = [\vec{h}_{it}; \vec{h}'_{it}]hit​=[hit​;hit′​]

1.3 单词Attention

单词编码器之上是一个单词Attention模块,它首先会将上一层得到的hith_{it}hit​输入一个MLP中得到它的非线性表示:

uit=tanh(Wwhit+bw)u_{it} = \text{tanh}(W_w h_{it} + b_w)uit​=tanh(Ww​hit​+bw​)

接着便是Attention部分,首先需要使用softmax计算每个特征的权值。在论文中使用了Memory Network,Memory Network是于2014年有FAIR提出的一种类似于神经图灵机的结构,它的核心部件是一个叫做记忆单元的部分,用来长期保存特征向量,也就是论文中的上下文向量uwu_wuw​,它的值也会随着训练的进行而更新。Memory Network经过几年的发展也有了很多性能更优的版本,但是由于坑比较深且业内没有广泛使用,暂时没有学习它的计划,感兴趣的同学请自行学习相关论文和代码。结合了Memory Network的权值的计算方式为:

αit=exp(uit⊤uw)∑texp(uit⊤uw)\alpha_{it} = \frac{\text{exp}(u_{it}^\top u_w)}{\sum_t \text{exp} (u_{it}^\top u_w)}αit​=∑t​exp(uit⊤​uw​)exp(uit⊤​uw​)​

最后得到的这个句子的编码sis_isi​便是以hith_{it}hit​作为向量值,αit\alpha_{it}αit​作为权值的加权和:

si=∑tαithits_i = \sum_t \alpha_{it} h_{it}si​=t∑​αit​hit​

1.4 句子编码器

句子编码器的也是使用了一个双向GRU,它的结构和单词编码器非常相似,数学表达式为:

h⃗i=GRU(si),t∈[1,T]\vec{h}_{i} = \text{GRU}(s_{i}),t\in[1,T]hi​=GRU(si​),t∈[1,T]
h⃗i′=GRU(si),t∈[T,1]\vec{h}'_{i} = \text{GRU}(s_{i}),t\in[T,1]hi′​=GRU(si​),t∈[T,1]
hi=[h⃗i;h⃗i′]h_{i} = [\vec{h}_{i}; \vec{h}'_{i}]hi​=[hi​;hi′​]

1.5 句子Attention

HAN的句子Attention部分也是使用了Memory Network带上下文向量的Attention结构,它的输入是句子编码器得到的特征向量,输出的是整个文本的特征向量vvv。

ui=tanh(Wshi+bs)u_{i} = \text{tanh}(W_s h_{i} + b_s)ui​=tanh(Ws​hi​+bs​)
αi=exp(ui⊤us)∑iexp(ui⊤us)\alpha_{i} = \frac{\text{exp}(u_{i}^\top u_s)}{\sum_i \text{exp} (u_{i}^\top u_s)}αi​=∑i​exp(ui⊤​us​)exp(ui⊤​us​)​
v=∑iαihiv = \sum_i \alpha_{i} h_{i}v=i∑​αi​hi​

1.5 句子分类

使用softmax激活函数我们可以根据文本向量vvv得到其每个类别的预测概率ppp:

p=softmax(Wcv+bc)p = \text{softmax}(W_c v + b_c)p=softmax(Wc​v+bc​)

由于使用了softmax激活函数,那么它的损失函数则应该是负log似然:

L=−∑dlogpdjL = -\sum_d \text{log} p_{dj}L=−d∑​logpdj​

其中ddd是批量中样本的下标,jjj是分类任务中类别的下标。

2. 总结

结合要解决的问题的具体内容设计与之对应的算法流程和网络结构是一个合格算法工程师必须要掌握的技能之一。本文做了很好的示范,它在文档分类任务中将一个文档按照句子和单词进行了分层,并且在每层中使用了效果非常好的注意力机制。通过层次的注意力机制我们可以分析每个单词,每个句子在文档分类中扮演的作用,这对我们理解模型是非常有帮助的。

GRU
图1:HAN网络结构图