【Transformer学习笔记】

目录

前言

  最近这两天一直在看有关Transformer的一些概念,首先Transformer的提出是基于NLP应用嘛,早期NLP常用的模型包括RNN,LSTM,RUG。但是上述方法所共有的一个缺陷就是不支持并行化,且对于长序列的效果较差。
  而Transformer很好的解决的这两点:
              1、在物理设备允许的情况下,transformer理论上可以支持无限长度的序列。
              2、transformer实现了输入数据的并行化处理
最先看的是csdn中浏览量很广的"史上最小白系列"。 总体来说学习路线为:RNN->LSTM->Attention机制->Transformer->vision Transformer(vit)->SwinTransformer
  在po主的文章中,关于Attention机制的介绍可以说很全面了,用一句话总结:Attention机制就是实现了<source,target>对的自动对齐功能。 但是在Attenyion机制章节中,关于Self-Attention的介绍相对来说是一笔带过了,可能对于大佬来说,认为自己已经解释的很全面了。但是处于小白阶段的我还是看的一头雾水,然后今天看到了b站上一位up主的视频详解,可以说茅塞顿开。
   可以说支撑Transformer的底层原理就是Attention机制,Transformer中最精华的两个部分即为Self-Attention以及Muti-head Attention Module,下文是关于这两天学习的一些笔记和思考吧。

RNN

背景与提出

RNN即循环神经网络(Recurrent Neural Network),RNN的提出主要是为了处理序列信息问题,如NLP。
在这里插入图片描述
上图是一个全连接神经网络图,图中可见 ,对于每一层,他们都是相互独立的,每次的输入生成一个节点,每层节点又相互独立时,那么我们每次的输入与前面的输入其实是没关系的,所以在某些任务中不能很好处理序列信息。故为解决此问题,提出了循环神经网络RNN。

RNN的结构

在这里插入图片描述
左图为RNN的结构,右图为他的展开式。
1、单看左图,可以看出它与正常的全连接网络结构差不多,只是在隐藏层多了一个循环层W的操作。
2、接下来看到右图
W、U、V是对应的权重矩阵
Xt为t时刻的输入变量,St为t时刻隐藏层的值,Ot为t时刻输出层的值。
从右图可以看出,隐藏层St的值不止与Xt有关,还与St-1有关。
故,所谓的隐藏层的循环操作其实就是:计算每一时刻隐藏层的值St,然后将其传递到下一时刻,达到信息传递的目的。
在这里插入图片描述
在这里插入图片描述

BPTT算法

  这里默认大家已经掌握了BP算法。BP算法本质就是梯度下降法,通过计算损失函数然后求导,反向更新参数的过程。
  实际上BP算法与BPTT算法的差别就是,BPTT算法不仅要对直线链进行求导,还要对前一时刻隐藏层的值St-1进行求导,具体操作看下图:
在这里插入图片描述
此处,ht等价于刚才的st。
RNN中需要调整的参数为:W、U、V
在这里插入图片描述
在这里插入图片描述

1、对V求偏导
 首先计算t时刻关于V的偏导
在这里插入图片描述
由于 损失函数是根据时间累加的,故总损失为:
在这里插入图片描述
则对应的V偏导为
在这里插入图片描述
2、对U、W求偏导
从上图ht的公式可以看出,ht不光与U、W有关,还与前一时刻隐藏层的值ht-1有关。
故,我们设t=3,对U求导有:
在这里插入图片描述
由此我们可以写出对U、W求导的通式:
在这里插入图片描述
而对于整个损失函数就是将每个时刻的值加起来,与上面一样,此处就不展示了。

现在看到蓝框部分
在这里插入图片描述
可以看到是一个连乘的形式。ht的计算公式引入激活函数后就是:
在这里插入图片描述
在这里插入图片描述
那么我们上方为什么说一般激活函数采用tanh而不用sigmoid函数呢?
首先我们看一下这两个函数的图像和它们对应的导数图:
在这里插入图片描述
在这里插入图片描述
可以看到sigmoid与tanh函数的导数都是小于一的,对于一系列的导数连乘,就会出现梯度消失现象。
而tanh的导数范围为【0,1】,sigmoid的范围为【0,0.25】
虽然二者都会出现梯度消失现象,但是,tanh的表现还是要比sigmoid要好的,可以在一定程度上缓解梯度消失现象。
问:在CNN中解决梯度消失使用了ReLU函数,为什么在RNN中不可以呢?
答:引入ReLu确实可以解决梯度消失现象,但是会引入新的梯度爆炸问题。
在这里插入图片描述
可以看到ReLU函数的导数恒为1,那么由上面的公式我们可以看到
在这里插入图片描述
当权重W大于1时,经过多次连乘很容易就会发生梯度爆炸。
事实上目前大家解决梯度消失 都是使用的LSTM- -即RNN的变种。故在这里也没有必要纠结到底是使用哪个激活函数了。于是就折中选择了tanh函数。

接下来我们看LSTM

LSTM&

Transformer

Transformer出自论文 Attention Is All You Need
推荐博文:详解Transformer中Self-Attention以及Multi-Head Attention
如果我们在网上搜索Transformer的话,第一时间看到的大概率就是下图:
图一:Transformer图
接下来让我们一步步解析这三张图,首先是Self-Attention

Self-Attention机制

在这里插入图片描述

在这里插入图片描述
第一步:对于原始输入x1,x2,进行embedding操作,将其映射到一个更高的维度,得到a1,a2,设组成矩阵为A
[Embedding 嵌入层]:将稀疏矩阵转化为稠密矩阵的过程。即将两个独立的向量联系起来。
将得到的a1、a2分别乘以上方的三个权重矩阵(体现权重共享,且是可训练的三个参数矩阵),得到q、k、v
【V代表了从矩阵中提取到的信息】
在这里插入图片描述此处体现了Transformer的并行化,我们将得到的a1,a2进行拼接,假设这个大矩阵为A,分别乘以权重矩阵,得到公式中的Q、K、V
在这里插入图片描述
第二步,当我们得到对应的三个矩阵Q、K、V后,令q与k做匹配,d代表k的dimension,k在图中为一维向量,则d就是k的元素个数。
在这里插入图片描述
第二步即公式中的在这里插入图片描述操作

Muti-head Attention注意力机制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
李宏毅是一位著名的机器学习深度学习专家,他在教学视频中也提到了Transformer模型。下面是一些关于李宏毅关于Transformer笔记总结: 1. Transformer 是一种基于注意力机制(attention mechanism)的序列到序列(sequence-to-sequence)模型。它在自然语言处理任务中取得了很大的成功。 2. Transformer 模型的核心思想是完全摒弃了传统的循环神经网络(RNN)结构,而是采用了自注意力机制(self-attention mechanism)来建模输入序列之间的依赖关系。 3. 自注意力机制能够将输入序列中的每个位置与其他位置建立联系,从而捕捉到全局上下文的信息。它能够解决传统的RNN模型在处理长序列时的梯度消失和梯度爆炸问题。 4. Transformer 模型由编码器(Encoder)和解码器(Decoder)两部分组成。编码器负责将输入序列表示为高维向量,解码器则根据编码器的输出生成目标序列。 5. 编码器和解码器由多个层堆叠而成,每一层都包含了多头自注意力机制和前馈神经网络。多头自注意力机制可以并行地学习输入序列中不同位置之间的关系。 6. Transformer 模型还引入了残差连接(residual connection)和层归一化(layer normalization)来帮助模型更好地进行训练和优化。 这些是李宏毅关于Transformer的一些主要笔记总结,希望对你有所帮助。注意,这些总结仅代表了我对李宏毅在其教学视频中所讲述内容的理解,如有误差请以李宏毅本人的观点为准。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值