深度学习-transformer学习
学习LSTM(Long Short Term)
学习参考博客 如何从RNN起步,一步一步通俗理解LSTM_lstm网络_v_JULY_v的博客-CSDN博客
RNN的理解:
可以连接先前的信息到当前的任务上
RNN存在的问题——长期依赖问题
当间隔不断增大时,RNN没有学习不到连接如此远的信息的能力。当一条序列足够长的时候,RNN很难将信息从较早的时间传送到后面的时间。(存在梯度消失问题,在反向传播中,梯度不断减少,会使前面层不会更新参数,导致RNN会忘记它在较长序列中以前看到的内容,因此RNN只具有短时记忆)
LSTM(记住重要的,忘记无关紧要的)
tanh层:帮助调经网路的值,使得数值被限制在-1到1之间
Sigmoid层:数值被限制在0到1之间。目的:为了更新或者忘记信息,0乘任何数都是0,这部分信息将会遗忘,1乘任何数都是其本身,这部分信息将会保留。
LSTM的核心思想
信息在水平线上传递,通过‘门’结构来对信息进行增加或者删除
忘记门
输入门
输出门
transformer 直观认识
transformer 和LSTM的最大区别在于LSTM是迭代的,串行的,必须要等当前字处理完,才能处理下一个字,而transformer训练时是并行的,所有的字是同时训练的。
transformer 两大模块——Encoder 和Decoder
Encoder 负责把输入隐射为隐藏层
Decoder 负责把隐藏层映射为自然语言序列



编码器在结构上都是相同的,但不共享参数,每个编码器可以分解为两个子层


transformer 核心特性

各个单词是同时流入编码器中的,通过自己单独的路径
自注意力机制(self-attention)
通过向量方式计算自注意力
从每个编码器的输入向量生成三个向量:查询向量query-vec,键向量key-vec,值向量value-vec。输入向量乘上三个不同的权重矩阵Wq,Wk,Wv,从而得到Q,K,V(权重矩阵先初始化,然后不断学习得到)。
查询向量Query 是当前单词的表示形式,键向量Key可以看做是序列中所有单词的标签,q和k相乘得到对应的相关度打分,值向量value是单词的实际表示

注意力
人脑中的注意力机制
注意力是一个用来分配有限的信息处理能力的选择机制。
以人眼为例,眼睛首先扫描整个场景元素,然后寻找感兴趣的影像区域,聚焦感兴趣的区域,仔细观察获得信息。人脑对于整个场景的关注不是均衡的,有一定的权重区分,感兴趣的区域会被人脑分配更多的权重。
自注意力机制的实现
自注意机制就是通过权重矩阵自发地找到元素与元素之间的关系
注意力公式以及其中所包含的意义:
Q:查询向量(query),用来查询其它元素
K:关键字(key),用来被其它元素查询
V:内容(value)
每一个元素都有自己的Q、K、V,元素使用自己的Q与其它元素的K相乘得到该元素与其它元素的相似度,这个相似度可以理解为关注度得分,关注度得分越高,这两个元素之间的联系越密切。
公式中的Q、K、V表示的是矩阵,是所有元素Q、K、V的集合。Q和K的转置点乘,得到的是元素之间的相互关系,经过softmax后得到的就是映射到(0,1)的各个元素的相互关联程度,与V相乘后得到的是内部元素有关联的集合。为什么还要再除上一个缩放因子呢,dK所表示的是k的维度,如果维度dk太大,那么点积的值也会变大,由softmax函数的特性会知道这会导致经过softmax函数后被推到一个梯度极小的区域,加入缩放因子可以抵消这种影响,保证可以顺利进行反向传播。
经过这个公式后,得到的结果就可以突出V中需要注意的地方(即关联程度更高的地方)
Q、K、V怎么得来的
Q、K、V是由上一层的输出乘上它们各自的权重矩阵,权重矩阵都是先随机初始化,然后通过网络学习来不断更新。
自注意力机制和注意力机制的区别
自注意力机制中Q、K、V来源于同一集合
注意力机制则会有Q和K的来源不同。在翻译中,K来自被翻译语言,Q来自目的语言,Q与K的转置点乘得到的是每个源单词翻译到目标单词对应的权重,再与目标单词的V矩阵加权求和,经过一个分类器就能得到每一个源单词对应的目标单词。
多头注意力机制
可以类比CNN中同时使用多个卷积核的作用,设置多个Q、K、V权重矩阵,形成多个子空间,可以让模型去关注到不同方面的信息,最后再将各个方面信息综合起来,这样做有利于网络捕捉到更丰富的特征。