Transformer workflow

本文深入探讨Transformer模型,从其基本结构出发,对比RNN的优缺点,介绍Transformer如何解决RNN的问题。通过讲解Self-Attention、Feed Forward Networks、Masked Attention、Multi-Head Attention等核心组件,阐述Transformer的工作流程。同时,文章列举了Transformer在GPT、BERT、MT-DNN和GPT-2等知名应用中的具体实践,展示了Transformer在自然语言处理领域的广泛应用。
摘要由CSDN通过智能技术生成

本文首先详细介绍Transformer的基本结构,然后再通过GPT、BERT、MT-DNN以及GPT-2等基于Transformer的知名应用工作的介绍并附上GitHub链接,看看Transformer是如何在各个著名的模型中大显神威的。

一、取代RNN——Transformer
在介绍Transformer前我们来回顾一下RNN的结构
在这里插入图片描述

对RNN有一定了解的话,一定会知道,RNN有两个很明显的问题

效率问题:需要逐个词进行处理,后一个词要等到前一个词的隐状态输出以后才能开始处理
如果传递距离过长还会有梯度消失、梯度爆炸和遗忘问题
为了缓解传递间的梯度和遗忘问题,设计了各种各样的RNN cell,最著名的两个就是LSTM和GRU了
在这里插入图片描述

LSTM (Long Short Term Memory)
在这里插入图片描述

GRU (Gated Recurrent Unit)

但是,引用网上一个博主的比喻,这么做就像是在给马车换车轮,为什么不直接换成汽车呢?

于是就有了我们本文要介绍的核心结构——Transformer。Transformer 是Google Brain 2017的提出的一篇工作,它针对RNN的弱点进行重新设计,解决了RNN效率问题和传递中的缺陷等,在很多问题上都超过了RNN的表现。Transfromer的基本结构如下图所示,它是一个N进N出的结构,也就是说每个Transformer单元相当于一层的RNN层,接收一整个句子所有词作为输入,然后为句子中的每个词都做出一个输出。但是与RNN不同的是,Transformer能够同时处理句子中的所有词,并且任意两个词之间的操作距离都是1,这么一来就很好地解决了上面提到的RNN的效率问题和距离问题。
在这里插入图片描述

每个Transformer单元都有两个最重要的子层,分别是Self-Attention层与Feed Forward层,后面会对这两个层的详细结构做介绍。文章使用Transformer搭建了一个类似Seq2Seq的语言翻译模型,并为Encoder与Decoder设计了两种不同的Transformer结构。

在这里插入图片描述

Decoder Transformer相对于Encoder Transformer多了一个Encoder-Decoder Attention层,用来接收来自于Encoder的输出作为参数。最终只要按照下图的方式堆叠,就可以完成Transformer Seq2Seq的结构搭建。
在这里插入图片描述

举个例子介绍下如何使用这个Transformer Seq2Seq做翻译
在这里插入图片描述

首先,Transformer对原语言的句子进行编码,得到memory。
第一次解码时输入只有一个标志,表示句子的开始。
解码器通过这个唯一的输入得到的唯一的输出,用于预测句子的第一个词。

第二次解码,将第一次的输出Append到输入中,输入就变成了和句子的第一个词(ground truth或上一步的预测),解码生成的第二个输出用于预测句子的第二个词。以此类推(过程与Seq2Seq非常类似)
了解了Transformer的大致结构以及如何用它来完成翻译任务后,接下来就看看Transformer的详细结构:

核心组件就是上面所提到的Self-Attention和Feed Forward Networks,但还有很多其他细节,接下来我们就开始逐个结构的来解读Transformer。

Self Attention

Self Attention就是句子中的某个词对于本身的所有词做一次Attention。算出每个词对于这个词的权重,然后将这个词表示为所有词的加权和。每一次的Self Attention操作,就像是为每个词做了一次Convolution操作或Aggregation操作。具体操作如下:

首先,每个词都要通过三个矩阵Wq, Wk, Wv进行一次线性变化,一分为三,生成每个词自己的query, key, vector三个向量。以一个词为中心进行Self Attention时,都是用这个词的key向量与每个词的query向量做点积,再通过Softmax归一化出权重。然后通过这些权重算出所有词的vector的加权和,作为这个词的输出。具体过程如下图所示
在这里插入图片描述

归一化之前需要通过除以向量的维度dk来进行标准化,所以最终Self Attention用矩阵变换的方式可以表示为

在这里插入图片描述

最终每个Self Attention接受n个词向量的输入,输出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值