Attention机制和Transformer基础学习
引入注意力机制为了解决传统的RNN难以获取长文本获取不同位置的上下文信息
引入self-attention机制
单头注意力机制,简单来说就是拿目标词与句子中的每一个词做一个相关性计算,每一个字经过一个矩阵映射,得到就是与每一个字的在某个角度上的相关性信息.
而多头注意力机制,也就是从不同角度的attention来融合不同字的相关性信息.然后就是多头注意力的计算是通过词的 embedding经过三次线性变化 QKV. Q表示Query,K表示Key,V表示Value。之所以引入了这三个矩阵,是借鉴了搜索查询的思想,比如我们有一些信息是键值对(key->value)的形式存到了数据库,(5G->华为,4G->诺基亚)
假设我们正在计算此示例中第一个单词“Thinking”的自注意力。我们需要根据这个词对输入句子的每个词进行评分。当我们在某个位置对单词进行编码时,分数决定了将多少注意力放在输入句子的其他部分上。
得分是通过将查询向量与我们正在评分的各个单词的关键向量进行点积来计算的。因此,如果我们正在处理位置#1 中单词的自注意力,第一个分数将是q1和k1的点积。第二个分数是q1和k2的点积。
计算得出的attention-score,一般来说会除以使用的K向量的维数的平方根来划分的分数,为了让梯度下降更加稳定,然后用softmax进行归一化,得到某个字与其他字的注意力分布.然后我们用V矩阵乘以这个得到的attention矩阵就得到新的attentio矩阵.
然后我们再与之前的embedding_pos向量相加,进行残差连接,梯度不容易消失.
还没写完