热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

seq2seq和attention:编码译码器与注意力机制

seq2seq简介Seq2seq将输入序列转换为输出序列。它通过利用循环神经网络(递归神经网络)或更常用的LSTM、GRU网络来避免梯度消失问题。当前项

seq2seq简介

Seq2seq将输入序列转换为输出序列。它通过利用循环神经网络(递归神经网络)或更常用的LSTM、GRU 网络来避免梯度消失问题。当前项的内容总来源于前一步的输出。Seq2seq主要由一个编码器和一个解码器。 编码器将输入转换为一个隐藏状态向量,其中包含输入项的内容。 解码器进行相反的过程,将向量转换成输出序列,并使用前一步的输出作为下一步的输入。

维基百科:https://zh.wikipedia.org/zh-hans/Seq2seq

通过最简单的seq2seq图看以看出,seq2seq的基本原理在于将模型分为encode和decode两部分,encode用来输入生成语义编码,传入语义编码到decoder中,输出预测值,encoder和Dcoder通常用lstm或者gru来构建。往往在进行神将网络翻译(NMT)和对答系统中常常用到,而这只是最简单的seq2seq模型。

seq2seq基本模型

基本流程:


如图所示为seq2seq的训练过程,首先将输入的句子放入encoder中,通过一些列lstm和线性变化可以得出一个内容context。然后将context放入decoder进行训练,decoder的训练过程是逐步进行的,前一个词的输出作为后一个词的输入,最后得出一个完整的句子。

缺点即改进:

  • 由于后一个预测值受前一个的影响,所以很容易发生蝴蝶效应,从而导致一长串的预测值全部失效,所以很难训练下去。(这就好比学生在学完部分单词后直接去蒙其他生词,这样学习的效率极低)

改进方法:scheduled sampling(计划采样)

计划采样的主要过程就是在decoder训练过程中并不是完全的将输入等于前一个输出,而是适当的将真实值放入输入当中。即随机使用模型真实label来作为下一个时刻的输入,而不像原先那样只会使用预测输出。(这就好比学生在蒙其他单词的过程中老师会时不时的给他几个提示,让他不至于往一个方向一直错下去)

  • 输入与输出长度不等,在翻译过程中这样情况经常发生,无法预测翻译的长度到底是多少。

改进方法:存入桶:通过填补0,这可以控制的输入和输出的长度。 而且如果的序列长度为100和输入只有3的长度时、昂贵的空间被浪费。 桶可以不同规模和指定的输入和输出的长度。

  • 在原seq2seq中decoder之根据encoder中最后得出的一个context进行译码,这样肯定是不好的,比如在机器翻译的过程中汉语的某个词和英语的某个单词是对应的,而普通的seq2seq模型并没有考虑这一点。

改进方法:Attention机制

Attention机制

基本简介:


在Attention机制中decoder不在只被encoder最后输出的一个context影响,而是encoder中每个单词共同赋予权重来生成一个context,而在decoder的过程中,每次输入的计算都会与encoder所有单词进行权重计算,导致每一个decoder的输入所获得的context都是不同的。

Attention计算方法(Soft Attention):


通过当前decoder输入与encoder个输入进行相识度计算得出权重,将权重进行softmax(概率化,所有概率加起来等于1);然后进行与encode输入进行乘法运算得出一个attention。

Attention分类:

  • Spatial Attention:空间注意力(图像处理)
  • Temporal Attention:时间注意力 (自然语言)
  • Hard Attention:会在生成注意力权重后筛选掉一部分不符合条件的注意力
  • Soft Attention:所有的数据都会注意,都会计算出相应的注意力权值,不会设置筛选条件。

总结:

上面所说的Attention的计算方法只是一个常规的方法,其实还有很多不同的方法,如transfrom中的self-attention等等,之后后慢慢详解。


推荐阅读
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 基于JQuery实现的评分插件
    本文介绍了一个使用JQuery创建的交互式评分控件。当用户将鼠标悬停在星星上时,左侧的星星会变为实心,右侧保持空心,并显示对应的评分等级;移开鼠标后,所有星星恢复为空心状态。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 给定行数 numRows,生成帕斯卡三角形的前 numRows 行。例如,当 numRows 为 5 时,返回的结果应为:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]。 ... [详细]
  • 配置多VLAN环境下的透明SQUID代理
    本文介绍如何在包含多个VLAN的网络环境中配置SQUID作为透明网关。网络拓扑包括Cisco 3750交换机、PANABIT防火墙和SQUID服务器,所有设备均部署在ESXi虚拟化平台上。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
  • 基于2-channelnetwork的图片相似度判别一、相关理论本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《LearningtoCompar ... [详细]
  • 回顾与学习是进步的阶梯。再次审视卷积神经网络(CNNs),我对之前不甚明了的概念有了更深的理解。本文旨在分享这些新的见解,并探讨CNNs在图像识别和自然语言处理等领域中的实际应用。 ... [详细]
  • 李宏毅机器学习笔记:无监督学习之线性方法
    无监督学习主要涵盖两大类别:一是聚类与降维,旨在简化数据结构;二是生成模型,用于从编码生成新的数据样本。本文深入探讨了这些技术的具体应用和理论基础。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • 大数据时代的机器学习:人工特征工程与线性模型的局限
    本文探讨了在大数据背景下,人工特征工程与线性模型的应用及其局限性。随着数据量的激增和技术的进步,传统的特征工程方法面临挑战,文章提出了未来发展的可能方向。 ... [详细]
author-avatar
贤慧201077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有