循环神经⽹络的隐藏状态——理解注意⼒机制Attention中的Q、K、V(查询
Query、。。。
前⾔:
依然借⽤机器翻译任务作为例⼦来理解这些概念
注意⼒机制Attention 是基于Encoder-Decoder框架的
encoder-decoder本质是两个循环神经⽹络(‘隐藏状态’ 或 ‘记忆细胞’记录当前时间步的信息,并传递到下⼀时间步),做的事情就是将输⼊序列映射到输出序列。也即是机器翻译任务中的seq2seq模型。
decoderencoder-decoder本质是两个循环神经⽹络(隐藏状态/记忆细胞记录当前时间步的信息)
下⾯是学习attention机制过程中保存的笔记:
⼀个注意⼒模型和经典的序列到序列(seq2seq)模型相⽐,主要有 2 点不同:
1.编码器会把更多的数据传递给解码器。编码器把所有时间步的 hidden state(隐藏层状态)传递给解码器,⽽不是只传递最后⼀个
hidden state
2.注意⼒模型的解码器在产⽣输出之前,会做⼀些额外的处理。为了把注意⼒集中在与该时间步相关的那些输⼊部分。解码器做了如
下的处理:查看所有接收到的编码器的 hidden state(隐藏层状态)。其中,编码器中每个 hidden state(隐藏层状态)都对应到输⼊句⼦中⼀个单词。(⼀个hidden state对应⼀个时间步,时间步对应⼀个单词);将每个 hidden state(隐藏层状态)乘以经过softmax 归⼀化的对应分数,从⽽使得,得分⾼对应的 hidden state(隐藏层状态)会被放⼤,⽽得分低对应的 hidden state(隐藏层状态)会被缩⼩弱化。
加权平均的步骤,会发⽣在解码器的每个时间步
在t’时间步 , 作为解码器的输⼊的 背景信息ct’ 是动态变化的
今天看了⼀本《Dive into deep learning》中介绍注意⼒机制的部分,先理解循环神经⽹络⾥的背景变量(隐藏状态),再⾃然⽽然地将这些概念对应到抽象的Query,Key,Value矩阵,可以更好理解Q、K、V、W这些矩阵的含义,以及解码器中的‘加权平均(加权求和然后softmax归⼀化)’步骤在做什么。Q、K、V、W本质上是⼀种‘⽮量化计算’
在⼀般的encoder-decoder框架中
编码器输出的背景变量c(最后⼀个时间步的hidden_state)编码了整个输⼊序列的信息。解码器中每⼀时间步t’的输⼊是解码器中前⼀时间步t‘-1的输出和背景信息c
编码器的所有时间步的隐藏状态是从前⼀时间步hidden_state传到下⼀时间步hidden_state,最终输出的背景信息c是固定的,即在解码器的每⼀时间步t‘,均使⽤⼀个相同的c。
⽽注意⼒机制中,背景信息c是动态变化的。注意⼒机制通过对编码器所有时间步的隐藏状态做加权求和来得到背景信息。
即编码器中的 ∑ hidden_state[t]*w[t‘][t] == c[t’] 设总时间步长为T , t = 1,2,3…T
其中,t‘为解码器当前时间步,t为编码器的对应时间步,hidden_state[t]是编码器在时间步t的隐藏状态,w是⼀个权值矩阵,w[t‘][t]是在当前时间步t’ 对 时间步t 的权重参数 , 权重w[t’][t]的值是⼀个概率分布,å = softmax(w[t’][t])
注意⼒机制的⽮量化计算
查询项Query为解码器在时间步t‘的隐藏状态 Qt’
键值Key和值项Value 均为编码器的隐藏状态 hidden_state[t]
值项value是需要加权平均的⼀组项,加权求和中,值项value的权重来⾃于查询项query与该值项value对应的键项key的计算
可以理解为,key-value是⼀⼀对应的,value要乘⼀个权重,这个权重由query和key的计算(向量点积)得到。
因为向量点积的结果可以反映向量之间的相似度,所以key和查询项query的相似度越⾼,这个元素就越‘重要’ ,权重更⼤,值*权重更⼤
——原输⼊序列的第t个词,在解码器处理输出序列第t’个词时得到的注意⼒更多。
w = softmax(Q*K.T)
具体到t‘时间步,总时间步长为T,wt‘,Q,K均是⼤⼩为1✖ T的向量
⽽权值矩阵w是⼀个⼤⼩为T✖ T的矩阵 w[t’][t]对应的是解码器在t‘时间步对编码器在t时间步的权重参数,“注意⼒机制通过对编码器所有时间步的隐藏状态做加权求和来得到背景信息”
’结合attention机制的图解理解这⼀过程更客观‘
Q、K矩阵的点积W矩阵 ,在t‘时间步,只取W的第t’⾏,和V矩阵的第t列⼀⼀对应想乘,得到的是Z的第t’⾏,就代表解码器在时间步t‘的注意⼒(⼤⼩为1*T的向量)。
第t个元素表⽰解码器在输出序列第t’个词时,对输⼊句⼦的第t个词的关注程度。
解码器在t‘时间步的背景信息Ct’ = ∑ w*v[i] , i=1,2,3…T 也就是图中的‘Z’中的⼀⾏
‘编码器’、‘解码器’都是循环神经⽹络,‘背景信息’ ‘记忆细胞’ ‘隐藏状态’ ‘注意⼒分数’在这⾥都是同⼀个概念
⼀些扩展
1.本⽂是⼀个Encoder-Decode,所以有⼀个Q、K、V、W矩阵
transformer是由⼋个encoder-decoder模型的‘多头multi-head‘
理解了⼀个encoder-decoder时的’单头‘,是能理解Transformer⾥的’多头怪‘的前提
2.hidden_state 循环神经⽹络在每⼀时间步的隐藏状态
门控循环神经⽹络对于循环神经⽹络的扩展在于对这个hidden_state的处理,引⼊‘门’使得可以更好捕捉时间序列中间步较⼤的依赖关系,解决‘长期依赖问题’其中门控循环单元GRU引⼊‘重置门’和’更新门‘,长短期记忆LSTM引⼊‘输⼊门‘、’遗忘门‘和’输出门‘
3.seq2seq模型,机器翻译任务中是输⼊序列到输出序列的映射,(是两个不同的句⼦),self-attention就是seq2seq模型中输⼊序列与输出序列相同的特殊情况
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论