IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【Transformer专题】一、Attention is All You Need(Transformer) -> 正文阅读

[人工智能]【Transformer专题】一、Attention is All You Need(Transformer)

前言

一直都想好好整理下Transformer系列论文,刚好最近找工作,自己整理了一下。

Transformer最开始的论文来自这篇链接: Attention Is All You Need。这篇论文首次将Transformer用在NLP任务中的,而在下一篇的Vision Transformer会首次将Transformer用在视觉任务当中。我主要是想看如何将Transformer用在视觉任务中的,但是在这之前还是需要学习下什么是Transformer?Transformer怎么引入自注意力机制?

本文我不会按照论文里那样,将一堆的NLP知识,我会结合一些其他的博客和视频(结尾全部引用),尽量只讲原理,把模型讲清楚。

一、整体架构

在这里插入图片描述
可以看到整体架构:左边Encoder + 右边Decoder,且都包含N个(自己定义)模块,Encoder负责编码,Decoder负责解码。

论文中更细节的结构:

在这里插入图片描述

整体的工作流程:

  1. 将输入单词转为Embedding向量(每个单词转为512维度的Embedding向量)再和单词的位置信息的Embedding进行相加,得到Encoder的输入。
  2. 将输入的向量信息 X 传入Encoder中,通过6个encoder block得到句子中所以单词的编码信息矩阵 C 。
  3. 将Encoder输出的编码信息矩阵 C 传入Decoder模块,Decoder会根据当前翻译的位置1-i的单词,并掩盖(Mask)掉i+1后面的单词,来翻译位置i+1的单词。

二、Transfomer输入

把每个单词Embedding(512维)和位置Embedding(512维)相加起来,得到最终的Transformer的输入(512维)。

2.1、单词Embedding

单词Embedding:Word2Vec等方法将每个单词转为512维的向量;

2.2、位置Embedding

位置Embedding:因为Transformer不采用RNN的结构,而是采样全局的信息,需要并行进行计算,不是像RNN那样一个个单词依次计算,所以我们不光要知道每个单词的信息,还要知道每个单词的位置。所以Transformer还需要输入每个单词的位置信息。这里是使用Embedding来保存每个单词在序列中的相对或绝对位置。
Transformer中是使用正余弦公式来得到每个单词的位置信息(512维)的:
在这里插入图片描述

三、Self-Attention结构

3.1、Self-Attention QKV

在这里插入图片描述

Self-Attention的输入是Transformer的输入或者是上一个Encoder的输入 X ,X经过不同的线性变换得到矩阵Q(查询)、K(键值)、V(值)。得到Q、K、V之后就可以计算Self-Attention的输出值了。

  1. 计算QKV:将输入X分别乘以线性矩阵 W q W^q Wq W k W^k Wk W v W^v Wv得到Q、K、V,这里X、Q、K、V每一行都表示一个单词的信息。
    在这里插入图片描述

  2. 计算Self-Attention输出:先计算Q和K的内积(Q乘以K的转置),得到Q K T K^T KT这个向量表示单词之间的attention强度,再除以 d k d_k dk?的平方根,再softmax处理得到每个单词对于其他单词的attention系数。最后再和V相乘得到最终的输出Z。
    在这里插入图片描述
    补充几个问题:
    A)点乘表示一个向量在另一个向量的投影长度,可以反应两个向量的相似度,两个向量越相似,他的点乘结果越大,而且点乘计算速度非常快。
    B)除以 d k d_k dk?的平方根,一个是为了防止内积过大,输入softmax导致梯度消失;另一个是为了让输入softmax的数是方差为1的;

3.2、Multi-Head Attention

多头注意力机制:
在这里插入图片描述
得到QKV之后再经过多个注意力机制,得到多套注意力结果Z1-Z8,再对其进行Concat,然后传入一个线性层,得到最终的多头注意力机制的输出结果Z。
在这里插入图片描述
原因:将输入映射到多个空间上,可以捕获单词之间多个维度上的相关系数 attention score

四、Encoder

在这里插入图片描述
一个Encode:多头注意力机制 + Add & Norm + Feed Forward + Add & Norm

上面已经介绍完了多头注意力部分,下面介绍下Add & Norm 和 Feed Forward部分

4.1、Add & Norm

Add:指 X+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练退化问题;
Norm:指 Layer Normalization,通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛;
在这里插入图片描述

4.2、Feed Forward

Feed Forward 层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数,对应的公式如下:
在这里插入图片描述

五、Decoder

Decoder是机器翻译的内容,我们视觉的Transformer主要是取了Transformer的Encoder部分,所以下面的内容我没看的多仔细,随便看了下。

Decoder也是由6个decoder block组成,如下图:

在这里插入图片描述
和Encoder相比有两个不同点:

  1. Multi-Head Attention 变成了 Masked Multi-Head Attention:在翻译第i个单词的时候,要遮盖Masked第i个单词之后的所有单词,防止第i个单词知道后面的代词的信息。防止训练和测试存在gap。
  2. 中间多了一个交互层:Multi-Head Attention + Add & Norm
    在这里插入图片描述

最后的部分是接一个Softmax 预测单词。

Reference

Transformer模型详解(图解最完整版)

Transformer从零详细解读(可能是你见过最通俗易懂的讲解)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:44:55  更:2022-08-06 10:49:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:56:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码