热门标签 | 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表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 机器学习(ML)三之多层感知机
    深度学习主要关注多层模型,现在以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层多层感知机在单层神经网络的基础上引入了一到多个隐藏 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • Canopy环境安装与使用指南
    《利用Python进行数据分析》一书推荐使用EPDFree版本的环境,然而随着技术的发展,目前更多人倾向于使用Canopy。本文将详细介绍Canopy的安装及使用方法。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 微软等企业捐赠首批AI有声读物,助力视障人士
    12月2日,微软联合鹿音苑文化传播公司及150多名志愿者,共同捐赠了首批由人工智能生成的有声内容,旨在为视障人士提供更多文化资源。 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • Vision Transformer (ViT) 和 DETR 深度解析
    本文详细介绍了 Vision Transformer (ViT) 和 DETR 的工作原理,并提供了相关的代码实现和参考资料。通过观看教学视频和阅读博客,对 ViT 的全流程进行了详细的笔记整理,包括代码详解和关键概念的解释。 ... [详细]
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社区 版权所有