Datawhale X 李宏毅苹果书AI夏令营 学习笔记

news2024/12/29 10:54:32

学习日志

日期: 2024年9月3日

今日学习内容:

今天,我深入学习了深度学习中的几种重要概念,包括优化算法特征归一化、以及批量归一化的原理和应用。这次学习的内容涵盖了从基础的梯度下降法到更高级的优化技术,同时还探讨了如何通过特征归一化和批量归一化来加速模型训练并提高训练稳定性。以下是今天学习的详细总结:


1. 深度学习中的优化算法

我在学习中首先回顾了梯度下降法(Gradient Descent),这是深度学习中最基础的优化算法。通过迭代调整参数,使得损失函数逐步减小,梯度下降法可以帮助模型找到最优的参数组合。然而,传统的梯度下降法在面对复杂的误差表面时,可能会陷入局部最小值或收敛速度较慢。

为了克服这些不足,动量法(Momentum)、RMSProp 和 Adam 这些更高级的优化算法被引入:

  • 动量法

  • 通过在参数更新时加入之前更新方向的“动量”,使得模型能够更快地朝着全局最优解的方向前进。动量法能够帮助模型在梯度较小的区域加速,并在梯度变化较大时减速,从而避免震荡。

  • RMSProp

  • 该算法通过计算每个参数的均方根(RMS)来动态调整学习率,使得在误差表面陡峭的地方步伐变小,平坦的地方步伐变大,从而加快收敛并减少震荡。RMSProp 的出现解决了 Adagrad 在训练后期学习率衰减过快的问题,使得模型能够在训练后期仍然保持较好的学习能力。

  • Adam

  • 这是目前最常用的优化器之一,它结合了动量法和 RMSProp 的优点。Adam 能够根据每个参数的历史梯度信息自适应调整学习率,同时保留了动量的优点,使得模型在训练时具有更强鲁棒性更快收敛速度


2. 特征归一化与深度学习的关系

在深度学习中,特征归一化是一种常见的预处理步骤,可以帮助模型更快地收敛,并提高训练的稳定性。特征归一化的基本思路是将输入数据的分布调整为均值0方差1 的标准正态分布。这样处理后的数据在进行梯度下降时,模型能够更稳定、更快速地收敛到最优解。

通过对特征进行归一化处理,模型的每一层计算出来的激活值 z 也需要进行归一化处理,以确保后续的计算过程更加平滑。具体来说:

  • 在使用 sigmoid 激活函数时,z 的归一化能够将输入调整到 0 附近,从而使得 sigmoid 的斜率最大,进而提高梯度的计算效果。
  • 而在使用 ReLU 激活函数时,对 a 的归一化也能起到类似的作用,确保网络在训练过程中更加稳定

3. 批量归一化(Batch Normalization)

批量归一化是今天学习中的一个重要主题。批量归一化在深度学习中被广泛应用,它通过在每一层神经网络的激活函数之前或之后对数据进行归一化处理,来解决训练过程中出现的内部协变量偏移问题。

批量归一化的实现原理:

  • 在训练过程中,对于每一个批量的数据,计算它们的均值 µ标准差 σ,然后用这些统计量对该批量的数据进行归一化处理。这样一来,网络的每一层在进行训练时,其输入的分布会保持相对稳定,从而加快模型的收敛速度。
  • 在归一化之后,加入可学习的参数 γ 和 β,以确保网络的灵活性,使得在训练过程中能够恢复出不同的分布。尽管批量归一化能够有效地提高模型的训练速度,但在实际应用中需要谨慎选择批量大小,以确保 µ 和 σ 的计算准确性。

批量归一化在测试阶段的应用:

  • 在测试时,由于无法获得完整的批量数据,因此批量归一化采用移动平均的方式,将训练时多个批量的 µ 和 σ 计算出来的平均值作为测试时的 µ 和 σ。这种方式确保了测试时数据的稳定性,并且不需要再进行实时的 µ 和 σ 计算。

批量归一化的优势:

  • 批量归一化的主要优势在于它能够加快训练速度,使得模型能够在更短的时间内达到相同的精度。此外,批量归一化还能使得模型在使用较大学习率时保持稳定性,从而避免梯度爆炸的问题。

关于批量归一化的实验与反思:

  • 虽然批量归一化能够有效地提高训练效果,但其提出的“内部协变量偏移”概念却在后续的研究中受到了质疑。最新的研究表明,批量归一化可能并非如原始论文所述,通过解决内部协变量偏移来提高训练效果,而是通过其他机制如平滑误差表面来实现这一点。这表明,尽管批量归一化是深度学习中的一个重要突破,但我们仍然需要继续探索其背后的深层次原理。

4. 总结与展望

今天的学习内容帮助我更全面地理解了深度学习中的优化技术与特征处理方法。通过对动量法、RMSProp、Adam 以及批量归一化等技术的学习,我深刻体会到这些方法在加速模型训练、提高训练稳定性方面的重要性。

在未来的学习中,我计划继续研究深度学习中的其他优化技术和归一化方法,如层归一化(Layer Normalization)实例归一化(Instance Normalization)等,以进一步提升对深度学习模型的理解与应用能力。我还计划在实际项目中应用这些技术,验证它们在不同任务中的效果和优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux系统编程】TCP实现--socket

使用套接字socket实现服务器和客户端之间的TCP通信。 流程如下&#xff1a; 实现代码&#xff1a; /* server.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h> #include <s…

分类预测|基于麻雀优化正则化极限学习机的数据分类预测Matlab程序SSA-RELM 多特征输入多类别输出

分类预测|基于麻雀优化正则化极限学习机的数据分类预测Matlab程序SSA-RELM 多特征输入多类别输出 文章目录 一、基本原理1. 数据准备2. RELM模型建立3. SSA优化RELM参数4. 模型训练5. 模型评估6. 结果分析与应用原理总结 二、实验结果三、核心代码四、代码获取五、总结 分类预测…

在Ubuntu上运行QtCreator相关程序

背景&#xff1a;希望尝试在Linux系统上跑一下使用QtCreator相关的程序&#xff0c;因为有一些工作岗位要求有Linux上使用Qt的经验。 (1)我是把Windows上的程序移过来的&#xff0c;Windows上文件名称是不区分大小写的。 而Ubuntu上是区分的 所以一部分头文件需要进行修改&am…

大数据Flink(一百一十二):Flink SQL作业快速入门

文章目录 Flink SQL作业快速入门 一、进入Flink开发平台 二、​​​​​​​创建作业 三、​​​​​​​​​​​​​​编写作业代码 四、​​​​​​​​​​​​​​进行更多配置 五、​​​​​​​​​​​​​​进行深度检查 六、​​​​​​​​​​​​​​进…

AWS SES服务 Golang接入教程(排坑版)

因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码 一 基础设置 这里需要完成两个最基础的设置任务 1 是验证至少一个收件电子邮箱 2 【很关键】是验证发送域。即身份里的域类型的身份。&#xff08;可以理解为配置你的域名邮箱服务器&#xff08;SMPT&#xff09;为亚马…

PMP–一、二、三模、冲刺、必刷–分类–14.敏捷–技巧--累积流图

文章目录 技巧一模二模三模14.敏捷–敏捷团队的衡量结果–累积流图&#xff1a;1、 敏捷项目的项目经理担心团队在最近的迭代中失去了动力。项目经理应该使用哪两种工具来分析团队绩效&#xff1f;&#xff08;选择两个&#xff09; 冲刺必刷7.成本管理--挣值分析燃尽图仅能了解…

Trm理论 3(ELMo)

LSTM模型 如图&#xff0c;LSTM模型是rnn模型的改良版&#xff0c;通过ft来选择性的保留上一次得到的信息 ELMo模型&#xff08;双向LSTM&#xff09; ELMo模型是对word2vec的改良&#xff0c;改良了word2vec的二义性 对比上下两图&#xff0c;可以发现&#xff0c;WE对预测…

基于约束大于规范的想法,封装缓存组件

架构&#xff1f;何谓架构&#xff1f;好像并没有一个准确的概念。以前我觉得架构就是搭出一套完美的框架&#xff0c;可以让其他开发人员减少不必要的代码开发量&#xff1b;可以完美地实现高内聚低耦合的准则;可以尽可能地实现用最少的硬件资源&#xff0c;实现最高的程序效率…

Linux文件【系统调用接口及进程中对打开文件的管理操作】详细讲解

目录 一、open函数 1.介绍 2.open函数返回值 二、重定向 1.文件描述符的分配规则 2.重定向的本质 3.dup2系统调用 三、C语言库函数中的缓冲区及不同刷新模式 前言&#xff1a; 我们先来简单回顾一下C语言中的文件相关知识 ● 打开文件的方式 r …

数图亮相第三届中国区域零售创新峰会:共绘零售新蓝图,携手迈向新征程

8月31日&#xff0c;备受瞩目的第三届中国区域零售创新峰会在历史悠久的湖北襄阳圆满落下帷幕。在这场零售行业的盛会上&#xff0c;数图信息科技作为重要参会企业&#xff0c;积极参与其中&#xff0c;与众多行业精英共聚一堂&#xff0c;共同擘画零售业的宏伟蓝图。以下是本次…

C程序设计——指针杂谈0

变量和常量讲的差不多了&#xff0c;这里先把指针再深入理解一下&#xff0c;如果你是C语言初学者&#xff0c;本节可能看不太懂&#xff0c;没关系可以以后再看。 变量 当定义变量的时候&#xff0c;本质是在内存中分配了一段空间&#xff0c;这段空间的大小与变量的类型相关…

GD - EmbeddedBuilder - 给已有工程换MCU

文章目录 GD - EmbeddedBuilder - 给已有工程换MCU概述不行的重现 笔记工程的.gdc文件内容中有MCU型号可以改 给已有工程换MCU的使用场景END GD - EmbeddedBuilder - 给已有工程换MCU 概述 一个现存的EmbeddedBuilder的工程&#xff0c;想换个MCU配置做实验&#xff0c;又不想…

极盾故事|某金融租赁机构应用数据保护新策略:“动态脱敏”“二次授权”

数据的流通使用是创新的动力&#xff0c;但安全和合规是不可逾越的底线。企业如何在这三者之间找到平衡点&#xff1f; 极盾科技&#xff0c;助力某金融租赁机构&#xff0c;基于极盾觅踪构建应用数据动态脱敏系统&#xff0c;实现10&#xff0b;核心应用系统的统一管理&#x…

库(Library)

库的定义 在Linux操作系统中&#xff0c;库&#xff08;Library&#xff09;是一段编译好的、可重用的代码&#xff0c;它能够被其他程序或应用程序在运行时调用。库可以提高代码的模块化&#xff0c;使得开发者可以共享和重用代码&#xff0c;从而提高开发效率&#xff0c;减少…

如何在 Ubuntu 24.04 上安装 MariaDB ?

MariaDB 是一个流行的开源关系数据库管理系统&#xff0c;它是 MySQL 的一个分支&#xff0c;它被广泛用于存储和管理数据。本指南将引导您完成在 Ubuntu 24.04 上安装 MariaDB 的步骤。 Step 1: Update Your System 首先更新系统&#xff0c;确保所有的软件都是最新的。 su…

PMP–一、二、三模、冲刺、必刷–分类–14.敏捷–技巧–刺探

文章目录 技巧一模反例不选“刺探”14.敏捷--流程&#xff1a;&#xff08;2&#xff09;每日站会&#xff08;15分钟、轮流开、提出问题、不解决问题&#xff09;&#xff1a;输入任务板/看板 → 输出任务板更新、燃尽图更新、障碍日志、产品增量&#xff1b;14.敏捷--方法--每…

树莓派扩展RGB点阵屏的使用

本篇来介绍一个树莓派的RGB 8x8点阵屏扩展板的使用。 1 RGB点阵屏 这里使用SunFounder的一个RGB 8x8树莓派扩展板&#xff0c;将其插接到树莓派中即可使用。 2 树莓派IIC配置 树莓派系统的安装&#xff0c;可参考之前的文章&#xff1a; 这个RGB点阵屏与树莓派直接使用IIC通…

Opencv中的直方图(2)计算图像的直方图函数calcHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算一组数组的直方图。 函数 cv::calcHist 计算一个或多个数组的直方图。用于递增直方图bin的元组的元素是从相同位置的相应输入数组中获取的。…

C++设计模式——Template Method模板方法模式

一&#xff0c;模板方法模式的定义 模板方法模式是一种行为型设计模式&#xff0c;它先定义了一个算法的大致框架&#xff0c;然后将算法的具体实现步骤分解到多个子类中。 模板方法模式为算法设计了一个抽象的模板&#xff0c;算法的具体代码细节由子类来实现&#xff0c;从…

Spring Boot中如何禁用Actuator端点安全性?

Spring Boot中如何禁用Actuator端点安全性&#xff1f; 1、为什么考虑禁用&#xff1f;2、如何禁用&#xff1f;方法一&#xff1a;自定义Security配置&#xff08;推荐&#xff09;方法二&#xff1a;绕过安全性&#xff08;不推荐&#xff09; 3、注意事项4、总结 &#x1f4…