Attention, 神经网络中的注意力机制

简介

mechanism , ['mek(ə)nɪz(ə)m].
最近两年,注意力机制(Attention Mechanism )被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是一个值得关注与深入了解的核心技术。

  • 人的注意力机制:
    拿到一篇文章时, 会重点关注标题和段落首句, 期望快速得到关键信息.
    人群中看到心动女生时, 虽然周围熙熙攘攘的人群都映在了在你的眼帘里, 但你关注的只有那位在意的人, 其他的人仿佛视而不见.
    重点关注感兴趣的局部信息, 这就是人的注意力机制.

  • 算法模型的借鉴:
    人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息

  • 机器翻译中的应用:
    机器翻译属于Encoder-Decoder框架. 这种框架不仅仅在文本领域广泛使用,在语音识别、图像处理等领域也经常使用。文本处理和语音识别的Encoder部分通常采用RNN模型,图像处理的Encoder一般采用CNN模型。

机制

without attention

该框架将原文encode为语义编码C, 然后再decode为译文中的单词序列.
Attention, 神经网络中的注意力机制_第1张图片
figure 未引入注意力模型的 ENcoder-Decoder 框架
此时 decoder的 s i = f ( s i − 1 , y i − 1 , c ) s_i = f(s_{i−1,} y_{i−1}, c) si=f(si1,yi1,c)

using attention

人是怎么翻译的呢?
很大程度上的逐词翻译.之所以不是严格的逐词, 是因为要考虑语法和句式结构.
对比上图的 Encoder-Decoder框架 , 就会发现, 所有语义完全通过一个中间语义C来表示,单词自身的信息已经消失,可想而知会丢失很多细节信息, 导致翻译质量不佳.

这一缺陷在输入句子比较短的时候问题不大,但是如果输入句子比较长,就会暴露得更明显.
Attention, 神经网络中的注意力机制_第2张图片
figure 引入注意力模型的 ENcoder-Decoder 框架

With an attention mechanism we no longer try encode the full source sentence into a fixed-length vector. Rather, we allow the decoder to “attend” to different parts of the source sentence at each step of the output generation.

Attention, 神经网络中的注意力机制_第3张图片
figure 论文[1] 中的图示.
此时 decoder的 s i = f ( s i − 1 , y i − 1 , c i ) s_i = f(s_{i−1,} y_{i−1}, c_i) si=f(si1,yi1,ci)

visualization

Attention, 神经网络中的注意力机制_第4张图片
figure 论文[4] 中的可视化配图
It visualizes the hierarchical attention layers in Figures 5 and 6 . Red denotes the sentence weight and blue denotes the word weight. 颜色越深表示权重越大. 图中一共有四个doc. 每一行是相应doc的一个句子.

参考

  1. NLP领域首次提出attention的paper, Neural Machine Translation by Jointly Learning to Align and Translate
  2. blog,attention-and-memory-in-deep-learning-and-nlp
  3. tensorflow, seq2seq
  4. 代表论文, Hierarchical Attention Networks for Document Classification
  5. Transformer, Attention Is All You Need
  6. The Annotated Transformer
  7. The Illustrated Transformer

你可能感兴趣的:(NLP)