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

attention机制_Attention机制与Transformer算法

一、Attention机制attention概括下就是:对全部依赖对象根据重要程度进行区别对待,或叫加权求和。可借下图进行说明:参见上图&

一、Attention机制

attention概括下就是:对全部依赖对象根据重要程度进行区别对待,或叫加权求和。可借下图进行说明:

cf59a767e31cf7f6ed42154748367e39.png

参见上图,以常见的机器翻译任务来说,Query代表上一时刻的输出信息,而Key和Value一般是相同的,如代表隐藏层的输出。attention的计算过程分为如下三步:

1)根据Query和

计算两者之间的相关性,即

2)用softmax对

进行归一化处理计算注意力权重值

3)通过注意力权重

对value进行加权求和,得到当前数学表达

1.1 attention分类

attention有多种形式,可以从多种角度进行划分。如:计算区域、所用信息、结构层次和模型等角度。

1、计算区域

  • soft attention:对所有key求权重概率,参考所有key进行加权求和。
  • hard attention:精准定位到某个key,此key权重概率为1,其余key为0。
  • local attention:上述两者折中。先基于hard定位到某key,然后在key的一个窗口内应用soft。

2、所用信息:假设要对一段原文进行attention处理,可能会用到内部信息和外部信息。

  • general attention:用到了外部信息,常见于用来构建两段文本关系的任务。query一般包含了外部信息,根据外部query对原文进行对齐。
  • local attention:只使用内部信息,即query、key、value都只和输入原文有关系,如:self attention。

3、结构层次

  • 单层attention:用一个query对一段原文进行一次attention。
  • 多层attention:比如把一个文档划分成多个句子。第一层对每个句子使用attention计算一个句向量,第二层对所有句向量执行attention生成文档向量进行后续使用。
  • 多头attention:可参考《attention is all you need》中的multihead attention。

4、模型结构

  • CNN+attention:可对卷积层输出做attention或者可用attention替换max pooling。
  • LSTM+attention:如对所有step的hidden state进行加权,把注意力集中到整段文本中比较重要的hidden state信息。
  • 纯attention:最经典的方案,如《attention is all you need》就属于这种。

二、Transformer算法

【参考资料】

1、Attention用于NLP的一些小结:https://zhuanlan.zhihu.com/p/35739040。

2、Mechanics of Seq2seq Models With Attention:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/。

3、The Illustrated Transformer:http://jalammar.github.io/illustrated-transformer/。



推荐阅读
  • python 英文关键词提取_如何提取文章的关键词(Python版)
    项目需求:我们采集来的文章没有关键词,在发布的时候无法设定标签,我们通过代码自动提取出文章的关键词,达到对数据加工的目的。 ... [详细]
  • 【乱七八糟】国内天气预报查询测试
    为什么80%的码农都做不了架构师?一,天气综合查询1.直接使用中国天气网官方APP接口,不过需要申请key:http: ... [详细]
  • nvmw安装,用于控制node版本;
    之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ... [详细]
  • NLP | 一文完全搞懂序列标注算法
    序列标注模型用到了长短期记忆网络(LSTM),条件随机场(CRF),Highway网络,本文循序渐进的介绍了序列标注算法,Bepatience!跟 ... [详细]
  • 在windows上运行darknet目标检测框架可以借助VS强大、方便的debug功能来逐行跟踪代码,藉此来熟悉其内部运行原理。很简单,先进入http ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 之后创建一个标志,你怎么取消设置现有的密码,并使用令牌呢?我尝试运行osxkeychain命令,gitconfig--globalcredential ... [详细]
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • 题目大意题目原文:http:uva.onlinejudge.orgexternal10410474.pdf背景还是基本的排序问题,题目意思很简单就是首先 ... [详细]
  • Echarts 3D地图图表
    需求:实现如图所示的3D地图图表(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案ÿ ... [详细]
  • 怎么使用提高开发效率的VSCode插件
    这篇文章将为大家详细讲解有关怎么使用提高开发效率的VSCode插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 微软Visual Studio 2013 Update3 RTM下载
    开发者注意,今天,微软终于为自家VisualStudio2013开发套件发布了VisualStudio2013Update3RTM累积性功能更新。同时,微软也发布了AzureSDK2. ... [详细]
  • jenkins中 Slave使用Docker
    原因就不说了,网上的自动化测试Docker教程太不靠谱,还是学学官网吧。目的:在现在各种虚拟化的大条件下,还在建立N个节点机 ... [详细]
  • IntelliJ IDEA 卡成球了?
    在和同事的一次讨论中发现,对IntelliJIDEA内存采用不同的设置方案,会对IDE的速度和响应能力产生不同的影响。Don’tbeaScroogeandgiveyourIDEso ... [详细]
  • 基于Python PaddleSpeech实现语音文字处理
    基于Python PaddleSpeech实现语音文字处理-目录前言环境安装项目验证tts语音合成asr语音识别标点恢复总结前言这段时间一直在研究飞浆平台,最近试了试PaddleS ... [详细]
author-avatar
大笨猫的男人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有