1. 注意力机制的本质与演进
在深度学习领域,注意力机制已经成为了处理序列数据的标配工具。我第一次接触这个概念是在2014年读Bahdanau的论文时,当时就被这种"动态权重分配"的思路震撼了。经过这些年的发展,注意力机制已经衍生出多种变体,其中最基础也最重要的就是加性注意力和点积注意力。
理解这些机制的核心在于把握一个关键视角:它们本质上都是核回归(Kernel Regression)的特例。核回归是一种非参数统计方法,通过给不同训练样本赋予不同权重来预测新样本的输出。这与注意力机制"根据查询动态分配权重"的理念如出一辙。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核回归:注意力机制的统计基础
2.1 核回归的数学表达
核回归的经典形式可以表示为:
python复制f(x) = Σ_i [α(x,x_i) * y_i]
其中α(x,x_i)是核函数,衡量x与x_i的相似度。常见的核函数包括高斯核、Epanechnikov核等。
在机器翻译场景中,假设我们要生成目标语言的第t个词。这时:
- x是当前的解码器状态(查询query)
- {x_i}是编码器所有时间步的隐藏状态(键keys)
- {y_i}是对应的源语言词嵌入(值values)
2.2 从核回归到注意力
传统核回归的局限性在于:
- 核函数通常是固定的(如高斯核)
- 计算复杂度随样本量线性增长
注意力机制的创新在于:
- 核函数变为可学习的相似度计算(如加性、点积)
- 通过键值对结构实现高效检索
实践心得:在实现时,我习惯先用numpy手写一个核回归demo,再逐步改写成注意力形式。这种"从统计到神经网络"的过渡能加深理解。
3. 加性注意力详解
3.1 算法原理
加性注意力(Additive Attention)由Bahdanau在2015年提出,其能量函数为:
python复制e(q,k) = v^T tanh(W_q q + W_k k)
其中W_q, W_k是可学习的权重矩阵,v是权重向量。
在机器翻译任务中,我观察到加性注意力的优势在于:
- 对q和k的维度不敏感(适合encoder/decoder隐藏层维度不同的情况)
- tanh激活能产生非线性交互
3.2 实现技巧
PyTorch实现的关键步骤:
``
