Seq2Seq模型

基本原理

  • 核心思想:将一个作为输入的序列映射为一个作为输出的序列

    • 编码输入
    • 解码输出
    • 解码第一步,解码器进入编码器的最终状态,生成第一个输出
    • 以后解码器读入上一步的输出,生成当前步输出
  • 组成部件:
    • Encoder
    • Decoder
    • 连接两者的固定大小的State Vector

解码方法

  • 最核心部分,大部分的改进
  • 贪心法
    • 选取一种度量标准后,在当前状态下选择最佳的一个结果,直到结束

      • 计算代价低
      • 局部最优解
  • 集束搜索(Beam Search)
    • 启发式算法
    • 保存beam size个当前较佳选择,决定了计算量,8~12最佳
    • 解码时每一步根据保存的结果选择下一步扩展和排序,选择前beam size个保存
    • 循环迭代,直到结束。选择最佳结果输出
  • 改进
    • 堆叠RNN
    • Dropout机制
    • 与编码器之间建立残差连接
    • 注意力机制
    • 记忆网络

注意力机制

Seq2Seq模型中的注意力机制

  • 在实际发现,随着输入序列增长,模型性能发生显著下降
  • 小技巧
    • 将源语言句子逆序输入,或者重复输入两遍,得到一定的性能提升
  • 解码时当前词及对应的源语言词的上下文信息和位置信息在编解码过程中丢失了
  • 引入注意力机制解决上述问题:
    • 解码时,每一个输出词都依赖于前一个隐状态以及输入序列每一个对应的隐状态
      \[s_i = f(s_{i-1}, y_{i-1},c_i)\]
      \[p(y_i|y_1,\cdots,y_{i-1})=g(y_{i-1},s_i,c_i)\]
      其中,\(y\)是输出词,\(s\)是当前隐状态,\(f,g\)是非线性变换,通常为神经网络
    • 语境向量\(c_i\)是输入序列全部隐状态\(h_1,\cdots,h_T\)的加权和
      \[c_i=\sum \limits_{j=1}^T a_{ij}h_j \]
      \[a_{ij} = \frac{\exp(e_{ij})}{\sum_k \exp(e_{ij})} \]
      \[e_{ij}=a(s_{i-1},h_j) \]
    • 神经网络\(a\)将上一个输出序列隐状态\(s_{i-1}\)和输入序列隐状态\(h_j\)作为输入,计算出一个\(x_j,y_i\)对齐的值\(e_{ij}\)
      • 考虑每个输入词与当前输出词的对齐关系,对齐越好的词,会有更大权重,对当前输出影响更大
    • 双向循环神经网络
      • 单方向:\(h_i\)只包含了\(x_0\)到\(x_i\)的信息,\(a_{ij}\)丢失了\(x_i\)后面的信息
      • 双方向:第\(i\)个输入词对应的隐状态包括了\(\overrightarrow{h}_i\)和\(\overleftarrow{h}_i\),前者编码了\(x_0\)到\(x_i\)的信息,后者编码了\(x_i\)及之后的信息,防止信息丢失

常见Attention形式

  • 本质:一个查询(query)到一系列(键key-值value)对的映射

  • 计算过程
    • 将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等
    • 使用一个softmax函数对这些权重进行归一化
    • 权重和相应的键值value进行加权求和得到最后的attention

Seq2Seq模型与注意力机制的更多相关文章

  1. 深度学习教程 | Seq2Seq序列模型和注意力机制

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  2. 深度学习之seq2seq模型以及Attention机制

    RNN,LSTM,seq2seq等模型广泛用于自然语言处理以及回归预测,本期详解seq2seq模型以及attention机制的原理以及在回归预测方向的运用. 1. seq2seq模型介绍 seq2se ...

  3. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...

  4. Pytorch系列教程-使用Seq2Seq网络和注意力机制进行机器翻译

    前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutor ...

  5. DeepLearning.ai学习笔记(五)序列模型 -- week2 序列模型和注意力机制

    一.基础模型 假设要翻译下面这句话: "简将要在9月访问中国" 正确的翻译结果应该是: "Jane is visiting China in September" ...

  6. ng-深度学习-课程笔记-17: 序列模型和注意力机制(Week3)

    1 基础模型(Basic models) 一个机器翻译的例子,比如把法语翻译成英语,如何构建一个神经网络来解决这个问题呢? 首先用RNN构建一个encoder,对法语进行编码,得到一系列特征 然后用R ...

  7. Coursera Deep Learning笔记 序列模型(三)Sequence models & Attention mechanism(序列模型和注意力机制)

    参考 1. 基础模型(Basic Model) Sequence to sequence模型(Seq2Seq) 从机器翻译到语音识别方面都有着广泛的应用. 举例: 该机器翻译问题,可以使用" ...

  8. DLNg第三周:序列模型和注意力机制

    1.基础模型 将法语翻译为英语,分为编码和解码阶段,将一个序列变为另一个序列.即序列对序列模型. 从图中识别出物体的状态,将图片转换为文字. 先使用CNN处理图片,再使用RNN将其转换为语言描述. 2 ...

  9. NLP教程(6) - 神经机器翻译、seq2seq与注意力机制

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. P2701 [USACO5.3]巨大的牛棚Big Barn

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  2. Comet OJ - Contest #7

    传送门 \(A\) 咕咕咕 int main(){ for(scanf("%d",&T);T;--T){ scanf("%d%d",&l,&am ...

  3. 阿里云服务器linux系统上 安装node环境

    今天将阿里云服务器重windows系统重置成了linux系统, 点击上面的实例名称,进入到 点击  更换系统盘   选择linux 的centos版本(操作前需要  停止实例) 弄好后,启动实例 下面 ...

  4. js的模块化之路

    在ES6之前,官方没有出来import export这种模块化的语法. 为了提高代码复用.避免污染全局,民间写了很多模块化的实现: 1. 立即执行函数 (function(globalVariable ...

  5. 前端武器库之jQuery示例

    1.全选 反选 取消 相关知识点: - 选择器 - .prop $('#tb:checkbox').prop('checked'); 获取值 $('#tb:checkbox').prop('check ...

  6. spring cloud 常见面试题 来理解微服

    为什么要谈 这些理论知识呢   理论知识 = 面试时候的谈资 !!!   你只有 进去公司 才有资格 去做一个码农 ok 话不多说   经历如此漫长的互联网发展  以本人的拙见 软件开发 粗略的 分为 ...

  7. 【2018.07.30】(广度优先搜索算法/队列)学习BFS算法小记

    一些BFS参考的博客: https://blog.csdn.net/ldx19980108/article/details/78641127 https://blog.csdn.net/u011437 ...

  8. 手写实现RPC框架(不带注册中心和带注册中心两种)

    实现自己的RPC框架如果不需要自定义协议的话那就要基于Socket+序列化. ProcessorHandler:主要是用来处理客户端的请求. package dgb.nospring.myrpc; i ...

  9. 虚拟机VMware安装及Linux系统基础配置(CentOS 7)

    PS: 我是 VMware 14 安装 CentOS 7 来配置Linux虚拟机,想要安装 Ubuntu 18.04 的可以自行其他搜或者参考博客:https://blog.csdn.net/gith ...

  10. Mininet系列实验(二):Mininet可视化应用

    1 实验目的 该实验通过Mininet学习miniedit可视化操作,可直接在界面上编辑任意想要的拓扑,生成python自定义拓扑脚本,简单方便.在实验过程中,可以了解以下方面的知识: Miniedi ...