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

谈起自然语言,就不得不说到现在大火的bert以及openai gpt-2,但是在理解这些模型之前,我觉得首先应该了解transformer,因本人水平有限,在看了transformer的论文之后也一知半解,在分享今天的知识之前,我们先简单了解一下seq2seq首先要说到seq2seq的发展历史,从单纯的RNN-RNN到LSTM-LSTM,再到BiLSTM-BiLSTM或者BiGRU-BiGRU...
摘要由CSDN通过智能技术生成

谈起自然语言,就不得不说到现在大火的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文章,感谢作者的详细讲解,本人翻译水平有限(英文水平好的可以直接看原文),文章篇幅较长,请耐心观看

https://jalammar.github.io/illustrated-transformer/

阐述transformer

在前一篇文章中,我们研究了Attention——现代深度学习模型中普遍存在的一种方法。Attention是一个有助于提高神经机器翻译应用程序性能的概念。在这篇文章中,我们将看看Transformer——一个使用Attention来提高这些模型训练速度的模型。在特定的任务中,Transformer的性能优于谷歌神经机翻译模型。然而,最大的好处来自于Transformer如何使自己适合并行化。事实上,谷歌云推荐使用Transformer作为参考模型来使用他们的Cloud-TPU产品。让我们试着把这个模型拆开看看它是如何运作的。

Attention is all you need论文中提出的Transformer。它的一个TensorFlow实现可以作为Tensor2Tensor包的一部分。哈佛大学的NLP小组创建了一个使用PyTorch实现注释该论文的指南。在这篇文章中,我们将尝试把事情简单化一点,并逐一介绍概念,希望能够使那些对主题没有深入了解的人更容易理解。

从全局来看

让我们首先将模型看作一个单独的黑盒子。在机器翻译应用程序中,它将使用一种语言的一个句子,然后输出另一种语言的翻译。

打开the transformer,我们看到一个编码组件,一个解码组件,以及它们之间的连接。

编码组件是一堆编码器(论文将其中的6个堆叠在一起——数字6没有什么神奇之处,人们肯定可以尝试其他排列方式)。解码组件是一组相同数量的解码器。

编码器在结构上都是相同的(但它们不共享权重)。每一个都被分成两个子层:

编码器的输入首先通过一个self-attention层——这一层帮助编码器在编码特定单词时查看输入句子中的其他单词。我们将在稍后的文章中进一步研究self-attention。

将self-attention的输出反馈给前馈神经网络。完全相同的前馈网络独立地应用于每个位置。

解码器具有这两个层,但它们之间是一个 attention层,帮助解码器将注意力集中到输入语句的相关部分(类似于seq2seq模型中的注意)。

引入Tensors(张量)到图片中

现在我们已经看到了模型的主要组件,让我们开始看看各种向量/张量,以及它们如何在这些组件之间通过,从而将经过训练的模型的输入转换为输出。

与一般的NLP应用程序一样,我们首先使用embedding algorithm将每个输入字转换为向量。

                             每个单词都嵌入到大小为512的向量中。我们用这些简单的盒子表示这些向量。

word embedding只发生在最下面的编码器。所有编码器共有的是,它们接收一个大小为512的向量列表——在底部的编码器中是word embedding的输入,但在其他编码器中&

  • 14
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值