毕设随记:从注意力机制到 BERT 的学习

毕设随记:从注意力机制到 BERT 的学习之路
一、毕设进展与学习契机
最近跑完了毕设的 baseline,对代码层面的理解有了一定提升。下一步计划进行模型改进,目前仅尝试增加了 PGD 模块,尚未完成跑测。由于对其他改进方向暂无头绪,决定先深入研究相关理论 —— 毕竟要优化模型,需先理解其内部运行逻辑。
模型的 BiLSTM 部分此前已有所了解,但 BERT 部分一直未充分掌握。一方面,BERT 本身封装性良好,日常使用中缺乏深入探究其结构的需求;另一方面,毕设任务主要是在 BERT 基础上进行微调,因此此前未着重研究。近期因改进遇阻,终于下定决心从零开始梳理 BERT 相关知识。而理解 BERT 需先掌握 Transformer,后者又依赖 Encoder-Decoder 框架与注意力机制 —— 这些都是之前 “欠下的债”,索性趁今日一并补上。本次学习主要参考《动手深度学习》(理论梳理为主,暂未实操代码),计划按 “注意力机制→Encoder-Decoder→Transformer→BERT” 的逻辑线展开。
二、注意力机制核心概念解析
(一)QKV 概念的理解困境与类比切入
注意力机制中 Q(Query)、K(Key)、V(Value)概念的引入曾让我困惑不已,尤其是《动手深度学习》中用 “感官输入与意志选择” 类比的表述(虽在理解后能建立关联,但初始阶段较难消化)。相较之下,通过具体任务场景类比更易入门,即便类比存在不严谨之处,也可作为理解的 “垫脚石”。
场景类比:预测任务中的注意力视角假设需基于已有样本集合 {(x₁,y₁),(x₂,y₂),…,(xₙ,yₙ)} 建立模型,给定新特征 x',预测对应的 y'。从传统方法看,可采用最小二乘法等回归模型;而从注意力机制视角,可将待预测的 x' 视为Query(查询向量),已有样本的特征 xᵢ视为Key(键向量),标签 yᵢ视为Value(值向量)。此时,预测问题转化为:通过 Query 与 Key 的交互,计算每个 Value 的权重,最终通过加权求和得到预测结果。
(二)从核回归到注意力的逻辑延伸

  1. 直观思路:基于相似度的加权平均
    忽略 QKV 的形式化定义,仅从预测任务的直觉出发,核心思路可概括为:
    寻找与 x' 最相似的样本点 (xᵢ,yᵢ),以其 yᵢ作为预测结果(最近邻思想)。
    优化方向:纳入所有样本,根据相似度赋予不同权重 —— 越相似的样本权重越高,反之则越低。这一思路对应加权平均模型,即:
    $ y' = \sum_{i=1}^n \text{weight}(x', x_i) \cdot y_i $
    其中,权重函数用于衡量 x' 与 xᵢ的相似度,这正是注意力机制的核心设计点。
  2. Nadaraya-Watson 核回归:基于核函数的非参数回归
    定义:Nadaraya-Watson 核回归是一种非参数模型,无需假设数据的分布形式,直接通过核函数(Kernel Function)衡量样本点与查询点的相似度,进而对目标值进行加权平均预测。其核心思想是:近邻样本对预测结果的贡献更大,权重由核函数决定。
    数学公式:给定样本集合 \(\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}\),对于查询点 \(x'\),预测值 \(y'\)表示为:
    \(y' = \frac{\sum_{i=1}^n K(x' - x_i) \cdot y_i}{\sum_{i=1}^n K(x' - x_i)}\)
    以高斯核为例,代入上述加权平均公式可得:
    $ y' = \sum_{i=1}^n \text{softmax}\left(-\frac{1}{2}(x' - x_i)^2\right) \cdot y_i$
    式中,softmax 内的部分可视为打分函数,用于量化 x' 与 xᵢ的相似度。不同的打分函数对应不同的注意力计算方式,例如:
    加性注意力:适用于 Q 与 K 长度不同的场景,通过含 tanh 激活函数的 MLP 实现。
    点积注意力:适用于 Q 与 K 长度相同的场景,直接通过向量点积衡量相似度,具有良好的数学性质。
    缩放点积注意力:在点积基础上除 \(\sqrt{d_k},其中d_k\)为 Key 的维度),用于稳定批量计算时的梯度方差。
    (三)参数化与多头注意力机制
  3. 参数化注意力
    原始核回归模型(如 NW 核回归)通常不含可学习参数,而参数化注意力则通过引入可学习权重 \(\omega\) 或超参数,增强模型的拟合能力。例如,在高斯核的距离项中加入参数:
    \(y' = \sum_{i=1}^n \text{softmax}\left(-\frac{1}{2}((x' - x_i)\cdot \omega)^2\right) \cdot y_i\)
    其中\(\omega\)为可学习参数,通过训练优化以适配数据分布。
  4. 多头注意力(MHA, Multi-Head Attention)
    多头注意力机制通过多个独立的 “头”(Head)并行计算注意力,每个头学习输入特征的不同子空间表示(?),最终将各头的输出拼接后线性变换得到结果。该机制可增强模型对复杂语义关系的捕捉能力,但实现细节较为复杂(需手动推导矩阵运算流程),后续需结合代码深入理解(还不能手撕)。
  5. 自注意力(Self-Attention)
    自注意力是注意力机制的特殊形式,其 Q、K、V 均来自同一组输入,常用于处理单一序列的内部依赖关系(如文本中词与词的关联)。例如,在句子编码中,每个词的嵌入向量同时作为 Q、K、V,通过自注意力计算得到融合上下文信息的表示。
    (四)位置编码:解决序列顺序信息缺失问题
    Transformer 模型不依赖循环神经网络(RNN),需通过位置编码显式引入序列的顺序信息。常见的位置编码方式采用正弦余弦函数,公式为:

\begin{aligned}
PE_{(pos, 2i)} &= \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \
PE_{(pos, 2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)
\end{aligned}

其中,(pos)为位置索引,(i)为维度索引,(d_{\text{model}})为模型维度。该编码方式具有以下特点:
频率特性:随维度增加,编码频率呈指数级降低,使不同位置在高维空间中保留差异化信息。(随维度增加三角函数频率变低)
相位特性:同一维度下,不同位置的编码通过正弦余弦函数的相位差区分顺序,确保位置间的相对关系可被模型捕捉。
三、后续学习计划
本次梳理初步厘清了注意力机制的核心概念与逻辑脉络,但对 Transformer 的 Encoder-Decoder 架构、BERT 的预训练机制等内容尚未深入展开。接下来计划:
拆解 Transformer 的 Encoder 与 Decoder 结构,理解多头注意力与前馈神经网络的堆叠逻辑。
分析 BERT 的双向预训练机制(如 Masked LM 与 Next Sentence Prediction 任务),对比其与传统语言模型的差异。
结合毕设模型,尝试将注意力机制的理论知识应用于改进方案设计(例如调整 BERT 与 BiLSTM 的交互方式)。
学习过程中难免遇到概念混淆或推导卡壳的情况,后续需通过 “理论推导 + 代码调试 + 可视化分析” 相结合的方式深化理解。欢迎各位在评论区交流探讨,共同进步!

posted @ 2025-04-19 14:13  fwq27  阅读(32)  评论(0)    收藏  举报