attention

Attention is all you need pytorch实现 源码解析04 - 模型的测试以及翻译

痞子三分冷 提交于 2019-12-05 22:16:42
今天是最后一节对Attention is all you need pytorch实现的解析,这一节非常的简单,我将会一笔带过。 上一讲连接在此: Attention is all you need pytorch实现 源码解析01 - 数据预处理、词表的构建 - https://blog.csdn.net/weixin_42744102/article/details/87006081 Attention is all you need pytorch实现 源码解析02 - 模型的训练(1)- 模型的训练代码 - https://blog.csdn.net/weixin_42744102/article/details/87076089 Attention is all you need pytorch实现 源码解析03 - 模型的训练(2)- transformer模型的代码实现以及结构 - https://blog.csdn.net/weixin_42744102/article/details/87088748 先上github源码: https://github.com/Eathoublu/attention-is-all-you-need-pytorch 今天讲解的是translate.py ''' Translate input text with trained

self-attention----Attention is all you need论文解读

倖福魔咒の 提交于 2019-12-05 22:16:25
文章目录 动机 背景 思考 细节 网络结构 总结 参考 最早提出self-attention思想的就是google17年这篇著名的论文了。 动机 传统的rnn难于并行 ,而最近流行的attention往往会利用rnn。总之为了解决无法并行训练问题,google提出了self-attention,完全摒弃了rnn单元,从而做到并行训练。 在这篇论文之前,facebook AI lab就提出了一种解决这个问题的方法,就是用cnn代替rnn单元来实现并行,具体发表在论文《Convolutional Sequence to Sequence Learning》。google提出用self-attention代替rnn,也是对facebook的一种回应吧。 背景 self-attention被google利用在了机器翻译上,目前比较流行的是attention-based机器翻译模型,基本已经取代encoder-decoder模型。但大多数仍是以rnn为基本单元。google的self-attention就是对传统的机器翻译模型进行改进,摒弃了rnn单元。要想深刻理解self-attention,我们首先先了解一下传统的机器翻译模型。 传统attention-based机器翻译模型代表论文《 Neural machine translation by jointly learning to

一文详解transformer(Attention Is All You Need)原理

南笙酒味 提交于 2019-12-05 22:16:08
谈起自然语言,就不得不说到现在大火的bert以及openai gpt-2,但是在理解这些模型之前,我觉得首先应该了解transformer,因本人水平有限,在看了transformer的论文之后也一知半解,在分享今天的知识之前,我们先简单了解一下seq2seq 首先要说到seq2seq的发展历史,从单纯的RNN-RNN到LSTM-LSTM,再到BiLSTM-BiLSTM或者BiGRU-BiGRU,首先说到RNN的缺陷会导致梯度消失,LSTM-LSTM改进之后,解决了梯度消失的问题,后面发展是加了双向的BiLSTM-BiLSTM或者BiGRU-BiGRU Ray Mooney,一个非常著名的计算机语义学家抱怨的说到,you cann't cram the meaning of whole %$& sentence into a single %$&* vector! 因为每句话长度不一,你不能让我把大量的信息塞进固定的向量中,这样让学习变得太困难了。 atttention后面开始产生,Transformer是第一个完全依赖于self-attention来计算其输入和输出表示的转换模型,而不使用序列对齐的RNNs或卷积。 传统的双向RNN模型图 今天翻译一篇非常优秀的详解transformer文章,感谢作者的详细讲解,本人翻译水平有限(英文水平好的可以直接看原文),文章篇幅较长

一文读懂「Attention is All You Need」| 附代码实现

不羁岁月 提交于 2019-12-05 22:14:49
作者丨苏剑林 单位丨 广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 前言 2017 年中,有两篇类似同时也是笔者非常欣赏的论文,分别是 FaceBook 的 Convolutional Sequence to Sequence Learning 和 Google 的 Attention is All You Need ,它们都算是 Seq2Seq 上的创新,本质上来说,都是抛弃了 RNN 结构来做 Seq2Seq 任务。 在本篇文章中,笔者将对 Attention is All You Need 做一点简单的分析。 当然,这两篇论文本身就比较火,因此网上已经有很多解读了(不过很多解读都是直接翻译论文的,鲜有自己的理解),因此这里尽可能多自己的文字,尽量不重复网上各位大佬已经说过的内容。 序列编码 深度学习做 NLP 的方法,基本上都是先将句子分词,然后每个词转化为对应的词向量序列。这样一来,每个句子都对应的是一个矩阵 X=(x1,x2,…,xt),其中 xi 都代表着第 i 个词的词向量(行向量),维度为 d 维,故 。这样的话,问题就变成了编码这些序列了。 第一个基本的思路是 RNN 层 ,RNN 的方案很简单,递归式进行: 不管是已经被广泛使用的 LSTM、GRU 还是最近的 SRU,都并未脱离这个递归框架。RNN 结构本身比较简单

对Attention is all you need 的理解

南楼画角 提交于 2019-12-05 22:13:56
本文参考的原始论文地址: https://arxiv.org/abs/1706.03762 谷歌昨天在arxiv发了一篇论文名字教Attention Is All You Need,提出了一个只基于attention的结构来处理序列模型相关的问题,比如机器翻译。传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。 以下是谷歌Transformer的结构示意图。 模型分为编码器和解码器两个部分,编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是 d m o d e l = 512 //--> . 模型的解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,如图中所示同样也用了residual以及layer normalization。具体的细节后面再讲。

Transformer模型---decoder

南笙酒味 提交于 2019-12-05 20:23:27
一、结构 1.编码器 Transformer模型---encoder - nxf_rabbit75 - 博客园 2.解码器 (1)第一个子层也是一个多头自注意力multi-head self-attention层,但是,在计算位置i的self-attention时屏蔽掉了位置i之后的序列值,这意味着:位置i的attention只能依赖于它之前的结果,不能依赖它之后的结果。因此,这种self-attention也被称作masked self-attention。 (2)第二个子层是一个多头注意力multi-head attention层,用于捕获decoder output和encoder output之间的attention。第三个子层是一个简单的全连接层。 (3)和encoder一样:每个子层都使用残差直连,并且残差直连之后跟随一个layer normalization:LN;decoder所有层的输入、输出的向量维度也是$d_{model}=512$维。 二、Tips 1.使用multi-head attention的三个适用场景:   encoder-decoder attention: 使用multi-head attention,输入为encoder的输出和decoder的self-attention输出,其中encoder的self-attention作为 key

视频研究入门经典

て烟熏妆下的殇ゞ 提交于 2019-12-05 14:46:35
视频研究入门经典 Labor-Free Video Concept Learningby Jointly Exploiting Web Videos and Images ​ intro: CVPR 2016 ​ intro: Lead–Exceed Neural Network (LENN), LSTM ​ paper: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/06/CVPR16_webly_final.pdf Video Fill in the Blank with Merging LSTMs ​ intro: for Large Scale Movie Description and Understanding Challenge (LSMDC) 2016, "Movie fill-in-the-blank" Challenge, UCF_CRCV ​ intro: Video-Fill-in-the-Blank (ViFitB) ​ arxiv: https://arxiv.org/abs/1610.04062 Video Pixel Networks ​ intro: Google DeepMind ​ arxiv: https://arxiv.org/abs/1610.00527

Self-Attention与Transformer

匆匆过客 提交于 2019-12-05 11:48:01
参考1 , 参考2 直观理解 先来看一个翻译的例子“I arrived at the bank after crossing the river” 这里面的bank指的是银行还是河岸呢,这就需要我们联系上下文,当我们看到river之后就应该知道这里bank很大概率指的是河岸。在RNN中我们就需要一步步的顺序处理从bank到river的所有词语,而当它们相距较远时RNN的效果常常较差,且由于其顺序性处理效率也较低。Self-Attention则利用了Attention机制,计算每个单词与其他所有单词之间的关联,在这句话里,当翻译bank一词时,river一词就有较高的Attention score。利用这些Attention score就可以得到一个加权的表示,然后再放到一个前馈神经网络中得到新的表示,这一表示很好的考虑到上下文的信息。encoder读入输入数据,利用层层叠加的Self-Attention机制对每一个词得到新的考虑了上下文信息的表征。Decoder也利用类似的Self-Attention机制,但它不仅仅看之前产生的输出的文字,而且还要attend encoder的输出。 循环神经网络具有如下问题: 顺序计算,限制了并行能力 对于特别长期的依赖,LSTM依旧无能为力 基本原理 基本结构 放缩点积attention(scaled dot-Product attention

Convolutional Sequence to Sequence Learning 论文笔记

三世轮回 提交于 2019-12-04 20:23:42
Convolutional Sequence to Sequence Learning 论文笔记 目录 简介 Position Embeddings GLU or GRU Convolutional Block Structure Multi-step Attention Normalization Strategy Initialization 简介 # 写这篇博客主要是为了进一步了解如何将CNN当作Encoder结构来使用,同时这篇论文也是必看的论文之一。该论文证明了使用CNN作为特征抽取结构实现Seq2Seq,可以达到与 RNN 相接近甚至更好的效果,并且CNN的高并行能力能够大大减少我们的模型训练时间(本文对原文中不清晰的部分做了梳理,建议与原文搭配服用) 原文链接: Convolutional Sequence to Sequence Learning 模型结构如下图所示: 下面对模型的每个部分进行分块介绍: Position Embeddings # 卷积网络和Transformer一样,不是类似于RNN的时序模型,因此需要加入位置编码来体现词与词之间的位置关系 样本输入的词向量: w = ( w 1 , w 2 , . . . , w n ) w=(w1,w2,...,wn) 样本位置编码: p = ( p 1 , p 2 , . . . , p n ) p=(p1

transformer模型简介

試著忘記壹切 提交于 2019-12-04 14:05:06
Transformer模型由《Attention is All You Need》提出,有一个完整的Encoder-Decoder框架,其主要由attention(注意力)机制构成。论文地址: https://arxiv.org/abs/1706.03762 。 其整体结构如图所示: 模型分为编码器(Encoder)和解码器(Decoder)两部分,包含内部结构的总体结构如下图所示: 图二 在论文中编码器部分由6个相同编码器叠在一起,解码器部分也是由6个相同解码器叠在一起,编码器之间不共享参数。(这里不一定要是6个) 在将词向量表示送入编码器、解码器之前,先做 positional encoding,下面依次对 positional encoding、encoding、decoding进行介绍: 1、positional encoding 如图所示,由于attention机制不包含位置信息,因此句子首先进行embedding得到词向量表示,同时为了增加位置信息,根据句子中词的位置信息给词嵌入添加位置编码向量,论文中添加位置编码的方法是:构造一个跟输入embedding维度一样的矩阵,然后跟输入embedding相加得到multi-head attention 的输入。 作者使用的positional encoding如下: 其中,PE为二维矩阵