【DL】attention|加权求和|self-attention
一、为什么 RNN / LSTM 已经有记忆了还需要 Attention因为 RNN/LSTM 即使能够保存历史信息也需要按照序列顺序一步一步处理数据。对于很长的序列当前位置想获取很久以前的信息需要经过很多个时间步信息传递困难。Attention的解决方案让当前位置可以直接查看整个序列并且自动决定哪些位置最重要不再只依赖“记忆”而是主动寻找“相关信息”。RNN x₁ → x₂ → x₃ → x₄ → ... → x₁₀₀ ↑ 当前 Attention x₁ ─┐ x₂ ─┤ x₃ ─┤ x₄ ─┤→ 当前 ... ─┤ x₁₀₀─┘ 直接查看所有位置二、Attention 到底是什么Attention 是一种让模型根据当前任务为输入序列中的不同位置计算“重要程度”的机制然后按照重要程度对信息进行加权汇总。输入一堆信息 ↓ 计算每个信息的重要程度 ↓ 重要的信息权重大 ↓ 不重要的信息权重小 ↓ 加权得到最终信息三、Attention 最核心的思想假设苹果0.8 香蕉0.1 汽车0.05 电脑0.05 加权求和 苹果 × 0.8 香蕉 × 0.1 汽车 × 0.05 电脑 × 0.05这些数字可以理解成当前情况下每个词的重要程度。四、这个“重要程度”从哪里来模型会根据当前查询和其他信息之间的相关程度计算注意力分数然后通过 Softmax 把这些分数转换成权重。attention最重要的三个东西Q Query 我现在想要找什么K Key 我是什么V Value 我能提供什么信息举个例子吧我现在找一本关于深度学习的书。Q:想找的东西深度学习的书K每个书都有自己的标签它们是KeyV 书里面的内容AttentionQuery↓和所有 Key 比较↓找到最相关的 Key↓拿对应的 Value五、Attention 的完整流程Query ↓ 和所有 Key 比较 ↓ 得到相关性分数 ↓ Softmax ↓ 得到注意力权重 ↓ 加权 Value ↓ 得到最终结果这就是Scaled Dot-Product Attention计算Query和Key的相关程度结果越大越相关。它们之间使用向量点积因为向量点积可以衡量两个向量之间的相似程度。为什么还要除以因为当向量维度变大时点积的数值可能变得很大导致 Softmax 输出过于尖锐梯度变得不稳定。因此需要进行缩放。softmax将结果转化为类似于概率的东西。Attention 输出 所有 Value 的加权平均。六、为什么 Attention 比 RNN 更适合长距离依赖因为 RNN 需要让信息逐步经过多个时间步传递而 Attention 可以让当前位置直接与序列中的任意位置建立联系。类似于树和链表的关系。RNN 过去 → 现在 需要一步一步传递 Attention 过去 ←→ 现在 可以直接建立联系Attention还可以同时计算所有的位置Self-Attention可以它非常适合GPU并行计算这也是后面Transformer能够大规模训练的重要原因。Self-Attention 就是 Query、Key、Value 都来自同一个序列本身让序列中的每个位置去关注序列中的其他位置它让每个词都可以和其他词建立关系。七.self-attention的Q,K,V从哪里来假设输出X那么通过三个不同的权重矩阵可以得到WqWkWv最后得到八.为什么transformer不需要RNN因为 Transformer 使用 Self-Attention 直接建模序列中不同位置之间的关系不需要像 RNN 那样通过时间步递归地传递 Hidden State因此可以更好地处理长距离依赖并且能够高度并行计算。九、RNN → LSTM → GRU → Attention → Transformer序列数据 ↓ RNN ↓ 有 Hidden State ↓ 长期依赖困难 ↓ LSTM ↓ Cell State 三个门 ↓ 结构比较复杂 ↓ GRU ↓ 两个主要门 ↓ 仍然存在串行计算 ↓ Attention ↓ 直接建立位置之间关系 ↓ Self-Attention ↓ Transformer这就是现代 NLP / LLM 非常重要的一条发展路线。

相关新闻