深度学习-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是单词的实际表示