RNN系列:

聊聊RNN&LSTM

聊聊RNN与seq2seq

attention mechanism,称为注意力机制。基于Attention机制,seq2seq可以像我们人类一样,将“注意力”集中在必要的信息上。

Attention的结构

seq2seq存在的问题

seq2seq中使用编码器对时序数据进行编码,然后将编码信息传递给解码器。此时,编码器的输出是固定长度的向量。从正常的理解来看,固定长度的编码器输出迟早会有溢出上下文信息的情况。

编码器的改进

目前的seq2seq结构,只将LSTM层的最后的隐藏状态传递给解码器,但是编码器的输出的长度应该根据输入文本的长度相应地改变。因此我们可以使用LSTM各个时刻(各个单词)输出的隐藏状态向量,可以获得和输入的单词数相同数量的向量。使用编码器各个时刻(各个单词)的LSTM层的隐藏状态(这里表示为hs):

有一点可以确定的是,各个时刻的隐藏状态中包含了大量当前时刻的输入单词的信息。因此,最终编码器的输出hs具有和单词数相同数量的向量,各个向量中蕴含了各个单词对应的信息:

解码器的改进

改进一

由于编码器的输出包含了各个时刻的隐藏状态向量,因此解码器的输入,也需要增加这一层输入。因此解码器中就包含了某个时刻下,当前单词的主要信息,而如果可以找到这些主要信息并提取出来,对其做翻译,就能实现我们的目标。

从现在开始,我们的目标是找出与“翻译目标词”有对应关系的“翻译源词”的信息,然后利用这个信息进行翻译。也就是说,我们的目标是仅关注必要的信息,并根据该信息进行时序转换。这个机制称为Attention。

以上的逻辑流程其实就是在模仿人在翻译单词时的过程,尤其是中式翻译;逐字/成对的将中文汉字转换为对应的英语讲出来,我想这种例子在我们身边是很常见的。哈哈哈哈,很有画面感!

这个过程,也被称为 "对齐"。

改进二

增加一个表示各个单词重要度的权重(记为a)。此时,a像概率分布一样,各元素是0.0~1.0的标量,总和是1。然后,计算这个表示各个单词重要度的权重和单词向量hs的加权和,可以获得目标向量。其计算流程如下:

即 hs 向量 与 a 权重向量 的内积

计算单词向量的加权和,这里将结果称为上下文向量,并用符号c表示。

改进三

有了表示各个单词重要度的权重a,就可以通过加权和获得上下文向量,从而获取到主要信息。那么,怎么求这个a呢?

首先,从编码器的处理开始,到解码器第一个LSTM层输出隐藏状态向量的处理为止,流程如下



用h表示解码器的LSTM层的隐藏状态向量。此时,我们的目标是用数值表示这个h在多大程度上和hs的各个单词向量“相似”。

因此,可以直接将隐藏状态向量h 与编码器全时刻向量hs做点积



这里通过向量内积算出h和hs的各个单词向量之间的相似度,并将其结果表示为s。不过,这个s是正规化之前的值,也称为得分。再经过softmax函数对点积结果归一化



计算各个单词权重的计算图

hr向量只是扩大了h向量的部分,使其与hs向量行列一致。

汇总

如上,现在将单词权重的计算与权重加权两层逻辑合并起来,如下展示了获取上下文向量c的计算图的全貌



图中分为Weight Sum层和Attention Weight层进行了实现。

这里进行的计算是:Attention Weight层关注编码器输出的各个单词向量hs,并计算各个单词的权重a;

Weight Sum层计算a和hs的加权和,并输出上下文向量c。我们将进行这一系列计算的层称为Attention层。



以上就是Attention技术的核心内容。关注编码器传递的信息hs中的重要元素,基于它算出上下文向量,再继续流转传递。

编码器的输出hs被输入到各个时刻的Attention层,并输出当前时刻的上下文向量信息。最终,具有Attention层的解码器的层结构,如下所示,

总结

编码器层输出各个时刻的向量信息数据,不仅可以伸缩编码层的长度限制,更是存储了更重要的时序时刻数据信息。

而解码器层,根据Attention架构(注意力机制),增加权重矩阵a,计算出当前时刻的上下文向量信息,提取出对齐单词,进行翻译。

聊聊RNN与Attention的更多相关文章

  1. Attention and Augmented Recurrent Neural Networks

    Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...

  2. 论文笔记之:Attention For Fine-Grained Categorization

    Attention For Fine-Grained Categorization Google ICLR 2015 本文说是将Ba et al. 的基于RNN 的attention model 拓展 ...

  3. Tensorflow Seq2seq attention decode解析

    tensorflow基于 Grammar as a Foreign Language实现,这篇论文给出的公式也比较清楚. 这里关注seq2seq.attention_decode函数, 主要输入 de ...

  4. Attention is all you need 论文详解(转)

    一.背景 自从Attention机制在提出之后,加入Attention的Seq2Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型.传统的基于R ...

  5. seq2seq模型详解及对比(CNN,RNN,Transformer)

    一,概述 在自然语言生成的任务中,大部分是基于seq2seq模型实现的(除此之外,还有语言模型,GAN等也能做文本生成),例如生成式对话,机器翻译,文本摘要等等,seq2seq模型是由encoder, ...

  6. Transform详解(超详细) Attention is all you need论文

    一.背景 自从Attention机制在提出 之后,加入Attention的Seq2 Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型.传统的基 ...

  7. Attention is all you need 详细解读

    自从Attention机制在提出之后,加入Attention的Seq2Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型.传统的基于RNN的Se ...

  8. 论文笔记之:RATM: RECURRENT ATTENTIVE TRACKING MODEL

    RATM: RECURRENT ATTENTIVE TRACKING MODEL ICLR 2016 本文主要内容是 结合 RNN 和 attention model 用来做目标跟踪. 其中模型的组成 ...

  9. 第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)

    本章共两部分,这是第二部分: 第十四章--循环神经网络(Recurrent Neural Networks)(第一部分) 第十四章--循环神经网络(Recurrent Neural Networks) ...

  10. [深度应用]·首届中国心电智能大赛初赛开源Baseline(基于Keras val_acc: 0.88)

    [深度应用]·首届中国心电智能大赛初赛开源Baseline(基于Keras val_acc: 0.88) 个人主页--> https://xiaosongshine.github.io/ 项目g ...

随机推荐

  1. 在行情一般的情况下,就说说23级应届生如何找java工作

    Java应届生找工作,不能单靠背面试题,更不能在简历中堆砌和找工作关系不大的校园实践经历,而是更要在面试中能证明自己的java相关商业项目经验.其实不少应届生Java求职者不是说没真实Java项目经验 ...

  2. Nginx之数据流代理stream模块简介和使用 ---九五小庞

    一.stream模块简介   stream模块一般用于TCP/UDP数据流的代理和负载均衡,通过stream模块我们可以代理转发tcp报文.ngx_stream_core_module模块从1.9.0 ...

  3. 10/28-29_String类_SrtingBuffer类_Interger类_笔记

    API:应用程序编程接口 String功能 public String replace (char oldchar ,char newchar); //符串中某一字符被一新字符替换 public St ...

  4. 使用LaTex添加公式到Hexo博客里

    代码编辑器,强烈推荐使用微软的 VS code,相比Atom开启迅速,使用方便,扩展丰富 第一步: 安装Kramed hexo 默认的渲染引擎是 marked,但是 marked 不支持 mathja ...

  5. pycharm: 注释自动生成

    解决方案如下

  6. VMware 备份操作系统

    在VMware 中备份方式有两种:快照和克隆. 快照:又称还原点,就是保存在拍快照时系统的状态,包含所有内容.在之后的使用中,随时都可以恢复.[短期备份,需要频繁备份时,使用该方法.操作的虚拟系统一般 ...

  7. PowerShell:因为在此系统上禁止运行脚本,解决方法

    解决方案 get-executionpolicy set-executionpolicy remotesigned 输入Y 至此问题解决

  8. CoaXPress 2.0 FPGA HOST IP Core Linux Demo

    目录 Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Linux Demo 4 1 说明 4 2 设备连接 7 3 VIVADO FPGA工程 7 4 调试说明 ...

  9. 线上问题排查--进程重启失败,最后发现是忘了cd

    背景 我前面写了几篇文章,讲c3p0数据库连接池发生了连接泄露,但是随机出现,难以确定根因,最终呢,为了快速解决问题,我是先写了个shell脚本,脚本主要是检测服务的接口访问日志,看看过去的30s内是 ...

  10. 五 Android Capabilities讲解(转)

    1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...