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

 Datawhale X 李宏毅苹果书 向李宏毅学深度学习(进阶) 是 Datawhale 2024 年 AI 夏令营第五期的学习活动(“深度学习 进阶”方向

Datawhale官方的task1链接:深度学习进阶-Task1

       《深度学习详解》主要内容源于《机器学习》(2021年春),选取了《机器学习》(2017年春) 的部分内容,在这些基础上进行了一定的原创,补充了不少除这门公开课之外的深度学习相关知识。

       为了尽可能地降低阅读门槛,笔者对这门公开课的精华内容进行选取并优化,对所涉及的公式都给出详细的推导过程,对较难理解的知识点进行了重点讲解和强化,以方便读者较为轻松地入门。

       在理论严谨的基础上,本书保留了公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括——

  • 卷积神经网络、Transformer、生成模型、自监督学习(包括 BERT 和 GPT)等深度学习常见算法,

  • 对抗攻击、领域自适应、强化学习、元学习、终身学习、网络压缩等深度学习相关进阶算法。


目录

1. 局部极小值与鞍点

       那我们如何判断临界点类型?

       那我们如果进入了鞍点,有什么逃离的方法吗?

2. 批量梯度下降与随机梯度下降:前进的步伐

拓展: 小批量梯度下降法(MBGD)

       批量大小的影响

3. 动量法:加速前进的助力

       动量法的好处

4. 公式理解

泰勒级数近似

海森矩阵

总结


       在第五期的进阶方向的学习内容中,Task1主要学习局部极小值与鞍点、批量和动量的知识点,对应《深度学习详解》一书中的3.1及3.2的内容。

       在深度学习模型训练中,优化算法起着至关重要的作用。它决定了模型参数更新的方向和速度,进而影响模型的性能和泛化能力。本笔记将结合图文,深入浅出地解释深度学习中的优化概念和算法,包括局部极小值、鞍点、批量梯度下降、随机梯度下降、动量法以及自适应学习率。

1. 局部极小值与鞍点

       优化算法的目标是找到损失函数的最小值。然而,损失函数的表面可能非常复杂,存在多个局部极小值和鞍点。

  • 局部极小值: 损失函数在局部范围内最低的点,周围都是损失更高的区域,如图a所示。如果模型收敛到局部极小值,那么就无法进一步降低损失,模型性能将受到限制。
  • 鞍点: 梯度为零,但周围既有损失更高的区域,也有损失更低的区域,形状像马鞍,如图b所示。鞍点比局部极小值更难以逃离,因为周围没有明确的下降方向。
       那我们如何判断临界点类型

       判断一个临界点是局部极小值还是鞍点,需要了解损失函数的形状。虽然无法完整知道整个损失函数的样子,但我们可以利用泰勒级数近似,将损失函数在某点附近展开成多项式:

       其中,g 是梯度,H 是海森矩阵。海森矩阵包含了函数的二阶导数信息,可以帮助我们判断临界点的类型:算出一个海森矩阵后,不需要把它跟所有的 v 都乘乘看,只要看 H 的特征值。

  • 正定矩阵: 所有特征值都为正,对应局部极小值。
  • 负定矩阵: 所有特征值都为负,对应局部极大值。
  • 既有正特征值又有负特征值: 对应鞍点。

       若 H 的所有特征值都是正的,H 为正定矩阵,临界点是局部极小值。若 H 的所有特征值都是负的,H 为负定矩阵,临界点是局部极大值。 若 H 的特征值有正有负,临界点是鞍点。

       那我们如果进入了鞍点,有什么逃离的方法吗

       误差表面其实会根据维度会有不同的形态,果我们移动某两个参数,误差表面的变化非常的复杂, 有非常多局部极小值。低维度空间中的局部极小值点,在更高维的空间中,实际是鞍点。如图 a 所示的一维空间中的误差表面,有一个局部极小值。但是在二维空间(如 图 b 所示),这个点就可能只是一个鞍点。常常会有人画类似图 c 这样的图来告诉 我们深度学习的训练是非常复杂的。

       那我们可以如何有效的识别鞍点,并且逃出鞍点呢?目前有没有比较有效的方法呢?

       其实目前我们可以目前可以参考一下使用Adam及其变体、动量SGD和组合优化器,可以试着了解一下这些优化策略,都是常用的避免异常逼停的策略。

2. 批量梯度下降与随机梯度下降:前进的步伐

       为了找到损失函数的最小值,我们需要不断更新模型参数。常见的参数更新方法包括批量梯度下降 (BGD) 和随机梯度下降 (SGD)。

  • 批量梯度下降 (BGD): 使用全部训练数据计算梯度,更新参数,如图 a 所示。BGD 的优点是更新方向稳定,但缺点是计算量大,容易陷入局部最小值或鞍点。
  • 随机梯度下降 (SGD): 使用少量训练数据(一个或几个)计算梯度,更新参数,如图3.8(b)所示。SGD 的优点是计算量小,容易逃离局部最小值,但缺点是更新方向随机,训练不稳定。

     

拓展: 小批量梯度下降法(MBGD)

      SGD和BGD是两个极端, 而MBGD是两种方法的折衷,每次选择一批数据来求梯度。
该方法也容易陷入局部最优,现在说SGD一般都指MBGD

       定义:小批量梯度下降(Mini-Batch Gradient Descent, MBGD)是对批量梯度下降以及随
机梯度下降的一个折中办法。其思想是:每次迭代 使用指定个(batch_size)样本来对
参数进行更新。
       优点:通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
       缺点:batch_size的不当选择可能会带来一些问题。

       

       批量大小的影响

       实际上在计算梯度的时候,并不是对所有数据的损失 L 计算梯度,而是把所有的数据分 成一个一个的批量(batch),每个批量的大小是 B ,即带有 B 笔数据。每次在 更新参数的时候,会去取出 B 笔数据用来计算出损失和梯度更新参数。遍历所有批量的过程 称为一个回合(epoch)。

       批量大小是每次迭代使用的训练数据数量。批量大小会影响计算速度、更新稳定性、优化效果和泛化能力。

  • 计算速度: 批量大小越大,每次迭代计算量越大,但可以利用并行计算提高效率。
  • 更新稳定性: 批量大小越大,更新方向越稳定,但容易陷入局部最小值。
  • 优化效果: 批量大小越小,更容易逃离局部最小值,但训练时间更长。
  • 泛化能力: 小批量训练模型泛化能力更好,因为它更容易跳出局部最小值,找到更好的局部最小值或鞍点。

        在实际运用中,为什么批量大小继续增加,在没有爆显存前,迭代时间会增加? 文章中虽然提到batchsize小,效果会好。但batchsize越小似乎也不是越好?因为可能会不收敛?

       当批量大小增加时,GPU的利用率确实会提高,但并不一定是GPU总是满负荷运行的带来的影响,往往在批量上调超过了硬件性能的阈值后,内存带宽也可能成为主要因素。迭代时间的变动主要与数据传输时间、GPU的计算效率和操作调度有关系。

       小批量会带来泛化能力和梯度的噪声,有助于减少过拟合的风险等情况,但也不可以太小,可能会导致模型梯度不稳定,每次迭代更新的信息有限,可能需要更多的迭代次数才能收敛。

3. 动量法:加速前进的助力

       动量法是一种改进的梯度下降方法,它结合当前梯度和过去梯度信息,更新参数。用物理学上的动量思想,在梯度下降的问题中做了修改,公式为:

       其中 vi 是当前速度,γ 是动量参数,是一个小于1的正数,η 是学习率   

       相当于每次在进行参数更新的时候,都会将之前的速度考虑进来,每个参数在各方向上的移动幅度不仅取决于当前的梯度,还取决于过去各个梯度在各个方向上是否一致,如果一个梯度一直沿着当前方向进行更新,那么每次更新的幅度就越来越大,如果一个梯度在一个方向上不断变化,那么其更新幅度就会被衰减,这样我们就可以使用一个较大的学习率,使得收敛更快,同时梯度比较大的方向就会因为动量的关系每次更新的幅度减少,如下图

       动量法的好处
  • 加速收敛: 避免梯度下降过程中的锯齿状路径,加速收敛速度。
  • 逃离局部最小值: 利用惯性跳过局部最小值,找到更好的局部最小值或鞍点。

4. 公式理解

对于文章中提到的泰勒级数近似和海森矩阵我找了一些文字说明和视频,来帮助我们理解

泰勒级数近似

       泰勒级数近似是一种将函数在某点附近展开成多项式的方法。它可以帮助我们了解函数在该点附近的行为,并方便进行计算。

       公式:f(x) ≈ f(a) + f’(a)(x - a) + f’‘(a)(x - a)^2/2! + f’‘’(a)(x - a)^3/3! + …

       其中,f(x) 是函数,a 是展开点,f’(a), f’‘(a), f’‘’(a) 分别是函数在 a 点的一阶导数、二阶导数、三阶导数,2!, 3! 分别是 2 和 3 的阶乘。

        应用:

       在深度学习中,我们通常使用泰勒级数近似将损失函数在某点附近展开成二次多项式,以便分析损失函数的性质,例如判断临界点的类型。 

        如何用级数来求函数近似值?看泰勒公式是如何展开的_哔哩哔哩_bilibili

海森矩阵

       海森矩阵是一个方阵,它包含了函数的二阶导数信息。海森矩阵可以帮助我们判断临界点的类型,并找到逃离鞍点的方向。

        公式:  H = [[∂^2f/∂θ_i∂θ_j] for i in range(n) for j in range(n)]

        其中,H 是海森矩阵,f 是函数,θ 是参数向量,n 是参数的数量。

        应用:  在深度学习中,我们通常使用海森矩阵来判断临界点的类型。如果海森矩阵是正定矩阵,那么临界点是局部极小值;如果海森矩阵是负定矩阵,那么临界点是局部极大值;如果海森矩阵既有正特征值又有负特征值,那么临界点是鞍点。

      【懒人必看】快速学懂Hessian矩阵 海森矩阵_哔哩哔哩_bilibili

        13.鞍点和海森矩阵_哔哩哔哩_bilibili

总结

       深度学习中的优化是一个复杂的过程,需要综合考虑多种因素,例如局部极小值、鞍点、批量大小、动量法、自适应学习率等。选择合适的优化策略,了解这些可以帮助我们更好地训练模型,提高模型的性能和泛化能力。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重邮计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法:字符计数法,比特填充法,违规编码 3. 差错检测 (1…

第136天:内网安全-横向移动资源约束委派

利用条件 首先是dc域控主机必须是win2012以上的主机 其次是域内有一个账户,可以同时登录两台主机 利用 jie 可以登录 win2008 也可以登录 win7 资源委派不需要设置委派,默认即可 实验复现 复现环境 通过网盘分享的文件:136-xiaodi.local…

XSKY 亮相中国移动智算存储论坛,共话 AI 存储创新之路

8 月 15 日,由中国移动云能力中心主办的“智算存储论坛”在南京大学顺利举办,本期技术论坛的主题是《智存未来-构建 AI 时代新型存储基础设施》。作为中国移动云能力中心的合作伙伴,XSKY星辰天合受邀参加了此次技术大会。 XSKY 产品总监朱荣…

产品经理如何提升系统思考能力

很多工作年限比较短的产品经理,分析问题的时候最初看到的都是单点,只有积累了足够的经验和阅历后,才能看到单点之外的“全局”,才会慢慢形成自己的系统思考能力,才会提高自己的认知能力。 产品经理如果想往更高层面发…

解决添加MPJ插件启动报错

在项目中需要用到多数据源的级联查询,所以引入了MPJ插件,MPJ的版本是1.2.4,MP的版本是3.5.3,但却在启动的时候报错,报错如下: 解决办法: 将MP的版本降到3.5.1

重磅!尤文图斯携手Fortinet打造足球界的网络安全堡垒

近日,尤文图斯足球俱乐部与推动网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT)正式宣布建立合作伙伴关系,并签署了一项为期至2026年的赞助协议。在此框架下,Fortinet荣膺尤文图斯未来两个赛季的…

Prompt-to-prompt image editing with cross attention control

Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术_prompt-to-prompt image editing with cross-attentio-CSDN博客文章浏览阅读2.7k次,点赞18次,收藏29次。Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术Prompt-to-prompt image editing with cross …

大白话讲微服务的灾难性雪崩效应

讲在前面,为什么微服务需要有熔断等策略呢?今天我们用大白话来讲讲微服务的灾难性雪崩效应,熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应? 假设我们有两个访问量比较大的服务A和B,这两个服务分别依…

19032 树上上升序列

### 思路 1. **输入处理**:读取节点个数、点权和边。 2. **构建图**:将树转换为有向无环图(DAG),边的方向从点权小的指向点权大的。 3. **拓扑排序**:对DAG进行拓扑排序。 4. **动态规划**:使用…

创建一个Vue2项目

我们都知道,可以使用 pnpm create vuelatest 来创建一个最新版本的vue项目,该版本为Vue3,但是这个过程没有给我们选择创建的vue版本 经典创建Vue2项目流程 1.下载Vue脚手架 pnpm i vue/cli 2.执行vue指令创建Vue项目 这里因为我们不想选择全局位置安装全局依赖&…

小程序打开空白的问题处理

小程序打开是空白的,如下: 这个问题都是请求域名的问题: 一、检查服务器域名配置了 https没有,如果没有,解决办法是申请个ssl证书, 具体看这里 https://doc.crmeb.com/mer/mer2/4257 二、完成第一步后&a…

R 2火灾温度预测

火灾温度预测 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用LSTM进行时间序列预测 这周学习如何使用长短期记忆网络(LSTM)进行时间序列预测。使用PyTorch框架来构建和训练模型&…

捷途山海T2:混动技术,省钱驾驶新体验

在今日的汽车市场中,消费者的选择已经远远超出了传统的燃油车的范畴。随着节能、环保及用车成本等问题的逐渐凸显,人们开始寻找更加高效且环保的出行方式。在这一背景下,捷途山海T2作为一款搭载了高效混动系统的汽车,以其出色的节…

《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

目录 一、贝叶斯算法 1、简介 2、贝叶斯算法具有以下特点: 二、贝叶斯原理 1、正向概率(先验概率) 例如: 2、逆向概率(后验概率) 3、公式 1)实例1 2)实例2 • 目标&#x…

轻松获得ADSL代理服务

ADSL 代理服务接入常见问答 在当今激烈的网络爬虫与反爬虫斗争中,各大网站和应用程序采取的风险管理手段愈加严格,其中最常见的一种措施是 IP 封禁。 为了有效应对 IP 封禁带来的挑战,设置代理服务成为一种非常有效的解决方案。配置完代理后…

【计算机网络】电路交换、报文交换、分组交换

电路交换(Circuit Switching):通过物理线路的连接,动态地分配传输线路资源 ​​​​

【2024】10个好用的AI搜索引擎大盘点

在2024年,随着人工智能技术的飞速发展,AI搜索引擎已经成为我们日常生活中不可或缺的一部分。这些基于人工智能技术的搜索引擎不仅提供了更快速、更准确的搜索体验,还通过自然语言处理(NLP)和机器学习(ML&am…

快速学习“堆“排序(C语言数据结构)

前言: 堆的实现其实并不难,难的是要用堆实现排序,也就是堆的运用。 下面需要探究一下堆的排序是怎样的。 如何利用堆进行升序或者降序的排序。 "堆排序": 原理: 例如:此时要将数组里的数组int a…

Leetcode面试经典150题-5.最长回文子串

解法都在代码里,不懂就留言或者私信 class Solution {public static String longestPalindrome(String s) {if(s null || s.length() 0) {return null;}//加工字符串,例如abcdcba加工成#a#b#c#d#a#b#c#d#String str getManacherString(s);char[] str…

【生日视频制作】滑行飞机机身改字,轻松修改文字AE模板修改文字软件生成器教程特效素材【AE模板】

飞机机身生日视频制作教程AE模板改文字特效广告生成器素材玩法 怎么如何做的【生日视频制作】滑行飞机机身改字,轻松修改文字AE模板修改文字软件生成器教程特效素材玩法【AE模板】 生日视频制作步骤: 安装AE软件下载AE模板把AE模板导入AE软件修改图片或…