- 当前是第
t
步 s_t
:decoder
阶段隐状态h_t
:encoder
阶段隐状态N
:encoder
步数
BahdanauAttention
以encoder-decoder
模型为例,假设当前是第t
步:
LuongAttention
公式和上面基本一样,只有两点不同:
- BahdanauAttention在计算scores的时候用上一个隐藏状态$s_{t-1}$,而LuongAttention使用当前隐藏状态$s_t$
- 在计算scores的时候BahdanauAttention使用的是
encoder
阶段各层的状态contact
后计算,而LuongAttention仅计算最上层。
scores
其实各种Attention不同点都在计算scores的时候作文章下面是几种计算scores的方式:
总结
其实所有的attention都归结为三个点:Q
,K
,V
,所有的attention通用公式其实就是:
而且一般K=V
在encoder-decoder
翻译模型中,Q
指的是译文,K
和V
指的是原文.
当Q=K=V
的时候,其实也就是self-attention
了,也就是transform
模型中的关键点:
其中$\sqrt d_k$按道理应该不加根号,因为是计算余弦相似度,但其实每个单词维度都相同,除不除单词向量的模就没有什么意义了,随便除个数方式数据太大就行。