attention

【深度学习】 基于Keras的Attention机制代码最简实现——Dense+Attention

徘徊边缘 提交于 2019-12-09 20:34:13
说明 大部分代码来源于网上,但网上的代码一下子可能难以入门或因版本原因报错,此处整理后进行详细分析。   参考的 代码来源1 : Attention mechanism Implementation for Keras. 网上大部分代码都源于此,直接使用时注意Keras版本,若版本不对应,在merge处会报错,解决办法为:导入Multiply层并将attention_dense.py第17行的: attention_mul = merge([inputs, attention_probs], output_shape=32, name=‘attention_mul’, mode=‘mul’),改为:attention_mul = Multiply()([inputs, attention_probs])即可。   参考的 代码来源2 : [深度应用]·Keras极简实现Attention结构 。这相当于来源1的简化版本,其将注意力层还做了封装,可直接使用。但此方法运用了两个注意力层,使我有些不太理解,这个问题在后面会进行讨论。    本文主体将在来源1的基础上进行分析探讨。 Attention机制大致过程就是分配权重,所有用到权重的地方都可以考虑使用它,另外它是一种思路,不局限于深度学习的实现方法,此处仅代码上分析,且为深度学习的实现版本。更多理论请看解读大牛文章

《Adversarial Transfer Learning for Chinese Named Entity Recognition with Self-Attention Mechanism》阅读

≡放荡痞女 提交于 2019-12-08 05:47:05
《Adversarial Transfer Learning for Chinese Named Entity Recognition with Self-Attention Mechanism》 paper publisher: ACL 2018 方向:NER source code: https://github.com/CPF-NLPR/AT4ChineseNER 摘要 中文NER缺少大量的标注数据。。中文NER和中文分词中间含有大量的相似实体边界,两个任务之间也各有自己的特点。而现有的中文NER模型既没有从CWS中获取到有用的边界信息, 也没有过滤出分词任务的特殊信息。 本文创新点: 提出一种新的对抗迁移学习框架,充分利用共享任务之间的 边界信息同时过滤掉分词任务的特有信息以免干扰NER任务。此外,因为每个字符在进行实体预测时都可以提供非常重要的信息,所以本文还引入了self-attention机制,在预测实体类别时,利用自注意力机制捕捉两个实体之间的长期依赖关系。 引言 task-shared information: CWS和NER之间含有很多共同的信息, 比如希尔顿和离开都是一样的边界信息。 task-specific information:特有的信息。比如休斯顿机场,二者的边界并不一样,NER的边界更为粗粒度。 挑战 : (1

Transformer

ぐ巨炮叔叔 提交于 2019-12-07 12:51:36
Introduction 在transformer model出现之前,主流的sequence transduction model是基于循环或者卷积神经网络,表现最好的模型也是用attention mechanism连接基于循环神经网络的encoder和decoder. Transformer model是一种摒弃了循环及卷积结构,仅仅依赖于注意力机制的简洁的神经网络模型。我们知道recurrent network是一种sequential model,不能很好地解决长距离依赖的问题(序列过长时,信息在序列模型中传递时容易一点点丢失),并且阻碍了parallelism within train example.而 transform最引人瞩目的一点正是很好地解决了长距离依赖的问题,通过引入自注意力机制(self-attention)使得对依赖的建模与输入输出序列的距离无关,并且支持train exmaple内部的并行化。 注意力机制可以参考之前写的 notes of cs224n lecture8 . Model Architecture 下图1是transformer的模型架构图 图1. The Transformer - model architecture 左边是encoder,右边是decoder,各有6层,下面我将讲解个人觉得比较重要的几个点。 Attention 图2

深度学习之Attention Model(注意力模型)

旧城冷巷雨未停 提交于 2019-12-06 10:02:35
引自:https://www.cnblogs.com/jiangxinyang/p/9367497.html 深度学习之Attention Model(注意力模型) 1、Attention Model 概述   深度学习里的Attention model其实模拟的是人脑的注意力模型,举个例子来说,当我们观赏一幅画时,虽然我们可以看到整幅画的全貌,但是在我们深入仔细地观察时,其实眼睛聚焦的就只有很小的一块,这个时候人的大脑主要关注在这一小块图案上,也就是说这个时候人脑对整幅图的关注并不是均衡的,是有一定的权重区分的。这就是深度学习里的Attention Model的核心思想。   人脑的注意力模型,说到底是一种资源分配模型,在某个特定时刻,你的注意力总是集中在画面中的某个焦点部分,而对其它部分视而不见。 2、Encoder-Decoder框架   所谓encoder-decoder模型,又叫做编码-解码模型。这是一种应用于seq2seq问题的模型。seq2seq问题简单的说,就是根据一个输入序列x,来生成另一个输出序列y。常见的应用有机器翻译,文档提取,问答系统等。Encoder-Decoder模型中的编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。   Encoder-Decoder(编码-解码)是深度学习中非常常见的一个模型框架

论文笔记《Attention Is All You Need》

余生颓废 提交于 2019-12-05 22:23:50
原文链接 本文发表于人工智能顶级会议 NIPS 2017 代码实现 摘要 现在主流的sequence2sequence的模型都是基于复杂的CNN或RNN结构,目前效果最好的几个模型都采用了attention机制,本文提出了一种新的简单的网络结构,能够完全抛弃CNN和RNN,只需要使用attention就能够让效果变得非常好。 模型 本文模型如下图所示: 图中左侧灰色区域为encoder子结构,encoder总共包含 N = 6 N = 6 //--> 个这样的相同的结构。该结构包含两个子层,分别为一个称为“multi-head attention”的子层,和一个全连接的神经网络。这两个子层都采用了残差连接的方式,在加上了残差之后还做了一个归一化,公式表示为: N o r m ( x + S u b l a y e r ( x ) ) N o r m ( x + S u b l a y e r ( x ) ) //--> 其中 S u b l a y e r ( x ) S u b l a y e r ( x ) //--> 代表每个特定的子层,为了保证残差的计算能够正常进行,每个子层的输出维度都规定为 d m o d e l = 512 d m o d e l = 512 //--> 维。 图中右侧灰色区域为decoder子结构,decoder总共包含 N = 6 N = 6 //

[NIPS2017]Attention is all you need

自古美人都是妖i 提交于 2019-12-05 22:23:24
原理源码讲解:https://www.jiqizhixin.com/articles/2018-11-06-10 https://nlp.seas.harvard.edu/2018/04/03/attention.html 这篇文章是火遍全宇宙,关于网上的解读也非常多,将自己看完后的一点小想法也总结一下。 看完一遍之后,有很多疑问,我是针对每个疑问都了解清楚后才算明白了这篇文章,可能写的不到位,只是总结下,下次忘记了便于翻查。 一:Q,K, V 到底是什么? 在传统的seq2seq框架下: query: seq2seq模型中decode时隐层向量S t − 1 _{t-1} t − 1 ​ , 记作q t − 1 _{t-1} t − 1 ​ , Q就是多个query组成的矩阵Q value: seq2seq模型中encode时的隐层向量h i _i i ​ ,记作v i _i i ​ , V是输入序列中n个词的embedding矩阵 key: 对h i _i i ​ 做了一次先行映射得到的向量, 记作k i _i i ​ ,K同上 在本文的transformer下,结合文字和图: (1) encoder self-attention Q 就是input sequence( w 1 w_1 w 1 ​ , w 2 w_2 w 2 ​ , …, w i w_i w i ​ , …,

文献阅读笔记—Attention is ALL You Need

自闭症网瘾萝莉.ら 提交于 2019-12-05 22:20:25
本文主要是参考 https://yq.aliyun.com/articles/342508?utm_content=m_39938 https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/#positional-encoding-pe 将互相缺少的融合到一起,略微加了点其他东西。 一、简介 对于Seq2Seq任务,均采用encoder-decoder+attention的模型,以往的encoder-decoder采用rnn或cnn,捕捉输入输出的全局信息,attention捕捉输入和输出之间的侧重关系;而这篇google大作,采用的是attention做encoder-decoder;也就是说,模型中只有attention, 没有rnn或者cnn。 二、模型整体架构 encoder由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制(Multi-head attention),第二个支层是一个简单的全连接前馈网络(position-wise FFN)。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是dmodel=512. Stage1

Attention is all you need pytorch实现 源码解析02 - 模型的训练(1)- 模型的训练代码

送分小仙女□ 提交于 2019-12-05 22:18:23
我们今天继续分析著名的attention is all you need 论文的pytorch实现的源码解析。 由于项目很大,所以我们会分开几讲来进行讲解。 上一讲连接在此: Attention is all you need pytorch实现 源码解析01 - 数据预处理、词表的构建 - https://blog.csdn.net/weixin_42744102/article/details/87006081 先上github源码: https://github.com/Eathoublu/attention-is-all-you-need-pytorch 项目结构: -transfomer —__init__.py —Beam.py —Constants.py —Layers.py —Models.py —Module.py —Optim.py —SubLayers.py —Translator.py datasets.py preprocess.py train.py translate.py 今天是第二讲,我们讲一讲模型的训练。模型的训练我将会用两节来讲解,第一节讲的是模型总体的训练的代码(也就是这一节) train.py ,下一节我们讲一讲模型的构建以及结构, 也就是transformer目录下的Models.py 。 下面我们来看一下train.py的源码以及解析:

论文阅读笔记之Attention Is All You Need

会有一股神秘感。 提交于 2019-12-05 22:17:16
前言 阅读笔记 前言   这是戊戌年的第一篇博客,先给各位读者拜个晚年。这篇博客是2017 NLP 十大paper阅读笔记系列的第一篇,当初我立下一个flag—要在2018读完这十篇paper,所以我会依次阅读这些paper,写出我的一些观点。出于各种原因,有些part我就不detail地去写,网上也有一些类似的阅读笔记可以学习。 阅读笔记   这一篇paper是google发在NIPS上的 Attention Is All You Need ,这个名字还是很吸引人的。实际上就是在Encoder-Decoder的model上不去使用RNN或者CNN(Facebook关于ConvS2S的工作将在后续的阅读笔记中介绍),而是使用Transformer model,如下图所示。   Encoder和Decoder各含有六层,图中的Nx只是其中的一层。Encoder部分有一个Multi-Head Attention和前馈网络组成,每部分的输出都经过一个LayerNorm,并且采用 残差连接(我会在解读经典卷积神经网络结构时提到ResNet的残差链接,敬请期待第一篇LeNet的介绍和实现) 。在Decoder部分,有三个sublayer(比Encoder多一层sublayer),前馈网络不变,一个Multi-Head Attention的输入来自Encoder的输出,另一个Multi

Attention Is All You Need 论文笔记

烂漫一生 提交于 2019-12-05 22:16:59
Attention Is All You Need 论文笔记 文章目录 Attention Is All You Need 论文笔记 背景 Tansformer模型简介 Attention & Self-Attetion 论文细节 Attention Multi-head attention Position embedding Transformer其他部分 参考文献 本文主要讲述Self-Attention机制+Transformer模型。自己看过论文与其他人文章的总结,不是对论文的完整翻译。 论文原文翻译可看 这篇 ,翻译质量还可以。 关于Attention的讲解可以看这里: Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention) 关于Transformer,这篇文章讲解很棒: The Illustrated Transformer 本文的markdown源码 背景 Attention机制允许对依赖关系进行建模,而不考虑其在输入输出中的距离。在多数情况下,Attention与循环神经网络一起使用。 Transformer模型提出的原因:循环神经网络模型无法并行计算 Tansformer模型简介 transformer模型 Transformer模型是