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

ops/2025/2/3 6:32:31/

一、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. 输出结果

    • 单头注意力:直接输出一个加权表示。
    • 多头注意力:每个头都会输出一个加权表示,然后将这些表示拼接在一起,并经过一个额外的线性变换,得到最终的输出。


http://www.ppmy.cn/ops/155236.html

相关文章

webview_flutter_android 4.3.0使用

webview_flutter_android 4.3.0 使用简介 版本:适合未使用前的阅读 文档应包含以下10个核心章节: 一、核心类说明二、参数类型详解三、高级配置API四、性能优化配置五、调试工具六、必要配置七、扩展功能与辅助类八、生命周期管理九、高级交互示例十、…

MongoDB 查询文档

MongoDB 查询文档 引言 MongoDB 是一个功能强大的文档型数据库,它使用 JSON 格式存储数据,并提供了灵活的查询机制。本文将深入探讨 MongoDB 的查询文档,包括查询基础、查询语法、查询优化以及一些高级查询技巧。 查询基础 MongoDB 的查询语句以 find() 方法开始,它允许…

Web - CSS3基础语法与盒模型

概述 这篇文章是关于 Web 前端 CSS3 的基础语法与盒模型的讲解。包括 CSS3 层叠性及处理冲突规则、伪元素和新增伪类元素、属性选择器等。还介绍了文本与字体属性,如段落和行相关属性、字体文本属性。最后阐述了盒子模型,如元素隐藏、行内与块元素转换、…

万物皆有联系:驼鸟和布什

布什?一块布十块钱吗?不是,大家都知道,美国有两个总统,叫老布什和小布什,因为两个布什总统(父子俩),大家就这么叫来着,目的是为了好区分。 布什总统的布什&a…

【tiktok 国际版抖抖♬♬ __ac_signature算法】逆向分析

一开始的参数是没有X-Bogus和 __ac_signature的 先是加密请求参数得到乱码。最终得到X-Bogus 然后请求参数添加了X-Bogus之后再去生成__ac_signature __ac_signature的生成需要用到X-Bogus

二叉树-堆(补充)

二叉树-堆 1.二叉树的基本特性2.堆2.1.堆的基本概念2.2.堆的实现2.2.1.基本结构2.2.2.堆的初始化2.2.3.堆的销毁2.2.4.堆的插入2.2.5.取出堆顶的数据2.2.6.堆的删除2.2.7.堆的判空2.2.8.堆的数据个数2.2.9.交换2.2.10.打印堆数据2.2.11.堆的创建2.2.12.堆排序2.2.13.完整代码 3…

利用metaGPT多智能体框架实现智能体-1

1.metaGPT简介 MetaGPT 是一个基于大语言模型(如 GPT-4)的多智能体协作框架,旨在通过模拟人类团队的工作模式,让多个 AI 智能体分工合作,共同完成复杂的任务。它通过赋予不同智能体特定的角色(如产品经理、…

R 字符串:深入理解与高效应用

R 字符串:深入理解与高效应用 引言 在R语言中,字符串是数据处理和编程中不可或缺的一部分。无论是数据清洗、数据转换还是数据分析,字符串的处理都是基础技能。本文将深入探讨R语言中的字符串概念,包括其基本操作、常见函数以及高效应用方法。 字符串基本概念 字符串定…