《深度学习进阶 自然语言处理》学习笔记(3)Attention

前篇链接 link

目录

  • 第八章 Attention
    • Attention结构
      • seq2seq的改进—— h 到 hs
      • seq2seq的改进—— 解码器层结构调整
      • Attention层的引入
        • Attention的结构
          • Weight Sum层
          • Attention Weight层
      • 解码器总的网络架构
      • 将 Attention 计算出的权重可视化,观察对应关系
    • 总结

第八章 Attention

  1. 上一章我们使用 RNN 生成了文本,又通过连接两个 RNN,将一个时序数据转换为了另一个时序数据。我们将这个网络称为 seq2seq,并用它成功求解了简单的加法问题。之后,我们对这个 seq2seq 进行了几处改进,几乎完美地解决了这个简单的加法问题。
  2. 本章我们将进一步探索 seq2seq 的可能性(以及 RNN 的可能性)。这里,Attention 这一强大而优美的技术将登场。Attention 毫无疑问是近年来深度学习领域最重要的技术之一。
  3. 本章的目标是在代码层面理解 Attention 的结构,然后将其应用于实际问题,体验它的奇妙效果。

Attention结构

seq2seq的改进—— h 到 hs

  • 问题:对于变长的输入序列,编码器只能输出定长的编码h
  • 解决:将编码器每一个LSTM单元输出的隐藏状态拼接为 hs,作为译码器输入 ,如下图
    《深度学习进阶 自然语言处理》学习笔记(3)Attention_第1张图片

seq2seq的改进—— 解码器层结构调整

形如“猫 = cat“是机器翻译中常见的对应关系,这种单词或词组对应关系的信息称为alignment(对齐)。Attention机制的关键就在于自动化学习对齐

  • 对于解码器的每一个LSTM单元,如何让它们自动化的选择输入的hs当中具有对应关系的h并学习,需要改进层结构,添加下图中的”某种运算“,即Attention
    《深度学习进阶 自然语言处理》学习笔记(3)Attention_第2张图片

Attention层的引入

  • 将不可微分的选择操作转换为hs各个隐藏状态的权重贡献度

Attention的结构

  • 构成上图中的 某种计算 模块
  • weight sum层(自动化学习各隐藏状态的贡献度,得到权重分布)Attention Weight层(将得到的权重分布与 hs 各个隐藏向量做加权求和,实现选择操作) 依次组成
Weight Sum层
  • 计算图如下
    《深度学习进阶 自然语言处理》学习笔记(3)Attention_第3张图片
  • N 是batch-size,T 是 hs 中包含的隐藏状态数,H是隐藏状态的维度
  1. 其中 a(N, T) 是解码器中一个LSTM单元输出的隐藏状态
  2. a(N, T) 与 hs 的各个隐藏状态做向量内积,得到了当前的LSTM单元对 hs 各个隐藏状态的关注度 S(N, T)
  3. 将 S(N, T) 做 softmax ,得到权重分布

本书中,作者使用向量内积去计算隐藏状态间的相似度,还可以使用余弦相似度甚至使用一个小型的MLP直接学习相似度等等。

Attention Weight层
  • 计算图如下(红框部分):
    《深度学习进阶 自然语言处理》学习笔记(3)Attention_第4张图片
  • 对 weight sum得到的权重分布,与 hs 做加权求和,实现选择的操作,输出 C(N, H)作为 Attention 层的下一层 Affine 层的输入

解码器总的网络架构

《深度学习进阶 自然语言处理》学习笔记(3)Attention_第5张图片

将 Attention 计算出的权重可视化,观察对应关系

  • 示例:一个简单的seq2seq模型(将输入的日期格式转化为输出的日期格式),横轴是输入语句,纵轴是输出语句,越亮的区域表示的对应关系越明显
    《深度学习进阶 自然语言处理》学习笔记(3)Attention_第6张图片

总结

  1. 在翻译、语音识别等将一个时序数据转换为另一个时序数据的任务中,时序数据之间常常存在对应关系(alignment);

  2. Attention 从数据中学习两个时序数据之间的对应关系;

  3. Attention 使用向量内积(方法之一)计算向量之间的相似度,并输出这个相似度的加权和向量;

  4. 因为 Attention 中使用的运算是可微分的,所以可以基于误差反向传播法进行学习;

  5. 通过将 Attention 计算出的权重(概率)可视化,可以观察输入与输出之间的对应关系;

  6. 在基于外部存储装置扩展神经网络的研究示例中(如 NTM),Attention 被用来读写内存;

你可能感兴趣的:(自然语言处理,机器学习)