- 当前是第
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$按道理应该不加根号,因为是计算余弦相似度,但其实每个单词维度都相同,除不除单词向量的模就没有什么意义了,随便除个数方式数据太大就行。