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 -> 正文阅读

[人工智能]Transformer

关键词

Dot Product(向量点乘)

向量的点乘是对这两个向量对应位一一相乘之后再求和的操作,点乘的结果是一个标量。
点乘的几何意义是可以用来表征或计算两个向量之间的夹角:

a*b = |a||b|\cos(\theta)
从而有:

\theta= acc\cos(\frac{a*b}{|a||b|})
根据以上公式可以根据向量点乘结果推知两个向量之间的相互关系,具体的:

\theta?> 0 :两向量方向基本相同,夹角范围[0°,90°],正相关;

\theta?< 0: 两向量方向基本相反,夹角范围[90°,180°],负相关;

\theta?= 0 :两向量正交,夹角90°,完全不相关;

Attention

注意力机制,通过一定方法,给输入的表征序列中的每个元素分配一个权重系数,当前输出(可能是依次输出,每次输出一个结果元素)依据注意力系数,对输入序列中不同元素分配不一样的关注度。
所谓的Attention机制就是要从序列中学习到每个元素对结果的重要程度,然后按重要程度将输入的元素合并。
例如对于下图,输入的X1~X4的每个编码元素,对于输出的Y1、Y2、Y3对应不同的attention系数,按权重系数加权分别生成特征编码C1、C2、C3。

?Self-attention

又称为内部注意力(intra-attention),是一种将单个序列中不同位置的元素互相关联起来,再以这种关联关系建立起序列表示(序列表征)的注意力机制。Self-attention是Attention的一种特例。
在Self-attention之前的Attention,重点强调的是输入序列中的各个元素对于输出的重要程度,而Self-attention强调的是当前输入(输出)序列中每一个元素对于本序列中其他元素的重要程度。
Attention Is All You Need论文中采用点乘(Dot Prodect)计算Self-attention注意力系数,所以论文中的Attention又叫Dot-Product Attention。
Self-attention并非本论文首创,论文中的表述是

“the Transformer is the first transduction model relying entirely on sele-attention to compute representations of its input and output without using sequence-aligned RNNs or onvolution”。

Query、Keys、Values vector(查询、键、值向量)

查询向量、键向量和值向量是输入(经编码)与三个矩阵分别相乘创建出的表征矩阵,三个矩阵是需要网络学习的参数。

?图源Transformer-Hung-yi Lee

查询向量q是用来匹配序列内所有元素的键向量k的,本元素自己的q与所有元素的k分别点乘获得attention权重,之后该attention权重分别叉乘上对应位置的值向量,再求和就得到当前元素的Self-attention结果。该过程见下图:

??图源Transformer-Hung-yi Lee

个人理解:q、k和v是输入向量在不同维度或不同空间上的表征特征,q主要是给当前元素自己算attention用的,k主要是给其他元素算attention用的,q和v两者计算出attention系数,而v是当前Self-attention模块“直接相关的”输出。

Transformer

下图是Transformer的结构图,左侧是Encoder部分,右侧是Decoder部分。

图源Attention Is All You Need

Input Embedding、Output Embedding

Embedding是词嵌入的意思,词嵌入是把输入的词汇序列映射到一个特定空间的多维向量表示上,方便执行其后的计算,这个映射是手动定义的,在一个任务中是固定的。
论文中是把每个单词映射到一个512维的向量上。

Positional Encoding

Attention的优点是可以获取局部与全局的关联信息,但是无法像CNN那样感知空间位置上的信息,即无法记录序列中元素的顺序或位置关系,为了弥补这个缺点,对Attention加入了位置编码(Positional Encoding)。
论文中的位置编码跟经Input Embedding后的向量具有相同的维度,具体操作是位置编码跟词嵌入直接相加。
论文中使用了正弦和余弦函数来做位置编码:?

PE_(pos, 2i) = sin(\frac{pos}{10000^\frac{2i}{d}})

PE_(pos, 2i+1) = cos(\frac{pos}{10000^\frac{2i}{d}})

式中pos表示单词在整个句子中的位置,如果句子含有10个单词,则pos\in[0,9]
i表示 词嵌入后的维度,论文中每个单词词嵌入后生成512维的向量,所以i\in[0, 511]
d是维度,论文中是512;
所以论文中是在偶数和奇数位交替使用正弦和余弦编码,丰富了位置表征所包含的绝对和相对位置信息,这里的位置编码是一种相对位置编码,即在同一个词向量的不同维度上可以有相同的编码,但是如果考虑到所有同一位置上相同维度的编码,则可以唯一确定一个位置点。

简单线性位置编码vs论文中正余弦编码

?图源 https://www.ylkz.life/deeplearning/p10770524/
上图以长度是4,维度是70的序列举例,横坐标是单个词向量的维度坐标,纵坐标是词向量在句子中的位置。正弦余弦位置编码表征的信息更丰富。
Position Encoding不需过渡研读,包括固定的位置编码和带学习参数的位置编码,以及不同的位置编码方式,实际效果上差异并不大。

Multi-Head Attention

?多头注意力通过把Q,K,V线性投影到不同的表示子空间(representation subspaces),提升了Self-attention的表征能力。
多头注意力的四个组件:

  1. 线性层并拆分成多头
  2. Self-attention
  3. 多头注意力concat
  4. 线性层

多头注意力机制允许模型在不同表征空间有不同的注意力。
input的维度是512,每个Multi-Head attention的维度是64,使用了8个多头,concat之后跟input的维度一致。

Add & Norm

Add是残差模块,直接把输入叠加到输出上。
Norm是Layer Norm,不是Batch Norm。Batch Norm做Norm是在同一个Batch内不同元素(样本)之间相同的维度上执行的,使得不同元素之间同一维度上的数值服从均值为0方差为1的分布,是协调元素与元素之间的分布;Layer Norm是在Batch内不同元素内各个维度上执行的,使得Batch内不同元素内所有维度上的数值服从均值0方差1的分布,是协调本元素内不同维度上的分布。

?

图源【机器学习】LayerNorm & BatchNorm的作用以及区别_敲代码的quant的博客-CSDN博客_layernorm
BN多适用于CV领域,LN多适用于NLP领域。

Feed Forward

每个Multi-Head Attention的输出后都接了一个Feed Forward层(FFN),公式是:

FFN(x) = max(0, xW_1 + b_1) W_2 +b_2

FFN是两个全连接层,是两个线性变换,中间有一个Relu激活。FFN参数不共享。

Masked Multi-Head Attention

Masked的意思是序列中部分元素的attention,因为只能在之前已经产生的output上做attention。

Scaled Dot-product Attention

Dot-product是说attention因子是通过计算两个向量的点积获得的。
论文提到两个最常见获取注意力的函数是additive attention 和 dot-product。
Additive attention使用含有一个隐藏层的前馈神经网络获得,输入是两个向量的Concat,所有相关向量输出之后再做Sigmoid,得到当前向量跟其他所有向量之间的相关度。
Dot-product Attention通过向量点积获得相关度。论文里Self-attention的公式是:
Attention(Q, K, V) = softmax( \frac{QK^T}{\sqrt{d_k}} ) V
论文中Scaled就是上式中的\frac1{\sqrt{d_k}}。论文中陈述的是Dot-product Attention与Additive attention理论复杂度相似,但实践中Dot-product attention执行速度更快以及更省内存。之所以加Scaled是因为论文怀疑对于较大的维度,点积的数值会更大,这就导致softmax之后数据集中在一小部分梯度区间,导致训练不稳定,加上Scaled尝试抵消这种影响,使得attention的分布与维度无关。

参考

Attention Is All You Need
Transformer 李宏毅
BERT大火却不懂Transformer?读这一篇就够了

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:28:32  更:2022-03-08 22:29:11 
 
开发: 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 16:24:10-

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