深度学习查漏补缺:2. 三个指标和注意力机制

一、bachsize, num_epochs, dataset

在训练卷积神经网络(CNN)或任何其他深度学习模型时,有几个关键参数和概念需要了解:batch size、num epochs 和 dataset。下面是对它们的详细解释:

  1. Batch Size(批量大小)

    • 定义 :批量大小是指在一次迭代中通过网络传播的训练样本的数量
    • 作用:它决定了模型在每次梯度更新时使用的数据量。小的批量可能会导致模型更新更加频繁,但每次更新的方向可能会杂乱无章;而大的批量则使更新方向更加稳定,但更新次数减少。
    • 影响
      • 计算效率:较大的批量可以更好地利用GPU加速,但需要更多的内存。
      • 模型收敛:较小的批量通常可以带来更好的泛化能力,但训练时间可能更长。
      • 稳定性:非常小的批量可能导致训练过程不稳定。
  2. Num Epochs(训练轮数)

    • 定义 :epoch指的是整个数据集通过神经网络一次的完整过程。num_epochs则是指这个过程重复的次数。
    • 作用:控制了模型的训练时间。更多的epoch意味着模型会在数据上进行更多次的学习。
    • 影响
      • 过拟合风险:过多的epoch可能会导致模型在训练数据上表现很好,但在测试数据上表现较差,即过拟合。
      • 不足训练:太少的epoch可能导致模型未充分学习数据中的模式,表现不佳。
  3. Dataset(数据集)

    • 定义:数据集是指用来训练和测试模型的所有数据的集合。通常被分为训练集、验证集和测试集。
    • 组成
      • 训练集:用于训练模型的数据。
      • 验证集:用于调整模型超参数和防止过拟合的数据。
      • 测试集:用于评估模型在未见数据上的性能。
    • 影响
      • 数据质量和数量:高质量和多样化的数据能够帮助模型更好地学习并泛化。
      • 数据平衡:数据集中不同类别的样本数量平衡影响模型的公正性和准确性。

二、注意力机制原理

假设我们有一个输入序列 X ,由 n 个元素组成,每个元素的维度为 d 。即有一组学生(输入序列 X),每个学生都有一组特定的特征(维度为 d)。我们想知道每个学生在不同场景下的表现如何(注意力机制)。

1. 计算 Query, Key, Value 矩阵:

  • Query 矩阵 Q: 通过一个线性变换从输入 X 生成,通常是通过一个线性层(全连接层)实现。
  • 就像给每个学生分配一副眼镜,通过这些眼镜,他们可以看到和理解周围的信息。这个眼镜是通过数学变换(线性变换)从学生的特征生成的。
  • Key 矩阵 K: 同样通过线性变换(全连接层)从输入 X 生成。
  • 类似于每个学生携带的信息卡,用于识别自身特征。这些信息卡也是通过数学变换从学生特征生成的。
  • Value 矩阵 V: 还是通过线性变换(全连接层)从输入 X 生成。
  • 像是学生携带的背包,里面装着有用的信息。背包的内容同样通过数学变换生成。

这些线性变换可以表示为:

Q=XWQ,K=XWK,V=XWV

其中 WQ​,WK​,WV​ 是可学习的权重矩阵。

2. 计算注意力得分:

注意力得分通过 Query 和 Key 之间的点积来计算:

Attention(Q,K,V)=softmax(dk​​QKT​)V

  • 点积 QK^T: 计算 Query 和 Key 之间的相似度。每个元素在 Query 中与所有元素在 Key 中计算相似度。想象每个学生用他们的眼镜(Query)来观察其他学生的信息卡(Key),点积就是在评估两个学生之间的匹配程度。这样可以得到每个学生关注其他学生的程度。
  • 缩放因子 根号下dk​​: 由于点积会随着维度增大而变得很大,所以引入了一个缩放因子,通常是 Key 的维度的平方根。为了避免在高维度下计算出的匹配分数过大,我们用一个缩放因子来调整这些分数,使它们更稳定。
  • Softmax 归一化: 将相似度转化为概率分布,确保所有注意力得分的总和为 1。将这些分数转换成概率,类似于给学生分配一个关注度范围,确保总关注度是 1。

3. 输出计算:

  • 加权求和: 使用计算得到的注意力得分对 Value 矩阵进行加权求和。这个步骤会聚合输入元素间的信息。通过这些概率(注意力得分),每个学生决定从其他学生的背包(Value)中取多少信息。这是一个汇总信息的过程,让每个学生可以结合他人信息得到新的视角或结论。

Output=Attention×V

自注意力输出

自注意力机制的输出是每个输入元素的一个新表示,结合了该元素与所有其他元素的关系。这个新的表示捕捉了输入序列中各元素之间的重要依赖关系。

三、注意力机制分类

单头注意力和多头注意力的主要区别如下:

  1. 注意力头的数量

    • 单头注意力:只有一个注意力头,即只计算一次查询(Query)、键(Key)和值(Value)之间的相似度。
    • 多头注意力:拥有多个独立的注意力头,每个头都会独立地计算查询、键和值之间的相似度。这允许模型同时关注输入序列的不同部分。
  2. 信息捕捉与表达能力

    • 单头注意力:只能关注一个方面,信息捕捉能力有限。
    • 多头注意力:通过多个头的并行处理,能够捕捉到更多样化的特征,提高了模型的表达能力和泛化性能。这种机制使得多头注意力能够关注到句子更多层面的信息,例如罕见词、多义词、反义词等。
  3. 计算复杂度与训练难度

    • 单头注意力:计算复杂度相对较低,训练也较为简单。
    • 多头注意力:虽然增加了计算复杂度,但通常可以通过并行计算来优化。同时,它也需要更多的训练数据和计算资源来优化模型。然而,这些额外的投入通常能够带来模型性能的显著提升。
  4. 输出结果

    • 单头注意力:直接输出一个加权表示。
    • 多头注意力:每个头都会输出一个加权表示,然后将这些表示拼接在一起,并经过一个额外的线性变换,得到最终的输出。
相关推荐
SUNX-T35 分钟前
【机器学习理论】朴素贝叶斯网络
人工智能·机器学习·概率论
佛州小李哥2 小时前
在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(上)
人工智能·科技·ai·语言模型·stable diffusion·aws·亚马逊云科技
东锋1.32 小时前
深度解析近期爆火的 DeepSeek
人工智能·深度学习
爱研究的小牛2 小时前
讯飞智作 AI 配音技术浅析(二):深度学习与神经网络
人工智能·深度学习·神经网络·机器学习·aigc
Luzem03193 小时前
使用PyTorch实现逻辑回归:从训练到模型保存与性能评估
人工智能·pytorch·逻辑回归
灵封~3 小时前
自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
人工智能·深度学习
辞落山3 小时前
使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
人工智能·pytorch·逻辑回归
新加坡内哥谈技术3 小时前
Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题
人工智能·科技·深度学习·语言模型·机器人
goomind3 小时前
深度卷积神经网络实战无人机视角目标识别
人工智能·神经网络·yolo·cnn·无人机·pyqt5·目标识别