Datawhale X 李宏毅苹果书 AI夏令营 task1

2024-08-27 14:04

本文主要是介绍Datawhale X 李宏毅苹果书 AI夏令营 task1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 3.1 局部极小值与鞍点

在深度学习的优化过程中,模型的损失函数可能会在某些点处停止下降,即使我们希望进一步降低损失。这一章节探讨了导致这一现象的原因,包括局部极小值、鞍点,以及其他临界点。理解这些概念能够帮助优化神经网络,避免陷入不理想的解。

  1. 局部极小值

    • 定义:局部极小值是指在某个点附近的所有点的损失函数值都大于或等于该点的损失函数值。换句话说,虽然这个点不是整个损失函数的全局最小值,但在其邻近区域内,它的损失值是最低的。
    • 问题:如果梯度下降算法在训练过程中达到一个局部极小值,梯度为零,模型的参数将不再更新,导致优化过程停滞。虽然损失可能已经很低,但它不是全局最优解,仍然有可能进一步降低损失。

    图 3.1 展示了梯度下降在损失函数的不同点(局部极小值、鞍点)停止更新的情况,帮助理解为什么梯度为零时,模型可能会陷入不同类型的临界点。                                                                                  

  2. 鞍点

    • 定义:鞍点是指在某些方向上是极小值,而在其他方向上是极大值的点。在这些点上,梯度同样为零,但它们不是局部极小值。
    • 问题:梯度下降算法在鞍点处也会停止更新,因为梯度为零。然而,鞍点并不意味着损失函数无法进一步下降;通过离开鞍点,仍然有可能找到更低的损失值。

    图 3.2 展示了局部极小值和鞍点的图形示意,说明它们了在损失函数表面上的不同形态。

  3. 临界点

    • 定义:临界点是指梯度为零的点,包含了局部极小值、局部极大值和鞍点。
    • 挑战:在优化过程中,难以区分模型是否收敛在局部极小值还是鞍点。如果误认为模型已经收敛而实际上只是停在了鞍点,这将限制模型的性能。

判断临界点类型的方法

  • 泰勒级数展开
    • 为了判断一个临界点是局部极小值、局部极大值还是鞍点,使用泰勒级数展开可以对损失函数在临界点附近的形状进行近似。这个近似包括梯度向量和海森矩阵的计算。
    • 梯度向量(g):它表示损失函数的一阶导数,描述了损失函数的斜率方向。在临界点,梯度为零,因此无法单靠梯度来判断临界点的性质。
    • 海森矩阵(Hessian Matrix, H):这是损失函数的二阶导数矩阵,描述了损失函数的曲率。通过计算海森矩阵的特征值,可以判断临界点的性质:
      • 如果所有特征值为正,则该点为局部极小值。
      • 如果所有特征值为负,则该点为局部极大值。
      • 如果特征值有正有负,则该点为鞍点。

在图 3.2 中,红色的点在某一方向上表现为极小值,而在另一方向上表现为极大值,这种情况就是鞍点。如果模型的参数更新在此类点上停滞,虽然梯度为零,但它并不代表模型达到了最优状态。通过计算海森矩阵的特征值,我们能够确定当前的临界点是局部极小值还是鞍点,从而决定是否需要调整优化策略以跳出鞍点,继续降低损失。

3.2 批量和动量

在深度学习的训练过程中,如何有效更新模型的参数至关重要。本章节详细探讨了批量大小(batch size)对梯度下降法的影响,并介绍了动量法(momentum method),作为一种提高优化效果的方法,尤其在应对鞍点和局部极小值时。

  1. 批量大小对梯度下降的影响

    • 批量梯度下降法(Batch Gradient Descent, BGD)
      • 定义:在批量梯度下降法中,每次使用整个训练数据集计算梯度,然后更新参数。由于使用了所有的数据,这种方法的更新稳定,但每次更新的计算量非常大,可能导致训练过程缓慢。
      • 优势:更新方向更准确和稳定,因为所有数据都被用于计算梯度。
      • 劣势:计算量大,尤其在大数据集上,每次更新耗时较长。
    • 随机梯度下降法(Stochastic Gradient Descent, SGD)
      • 定义:与批量梯度下降不同,随机梯度下降法每次只使用一个训练样本计算梯度并更新参数。更新速度快,但更新方向可能包含噪声,因此路径会更加曲折。
      • 优势:由于频繁更新,模型更容易逃离局部极小值和鞍点,在非凸优化问题中表现优异。
      • 劣势:更新方向不稳定,训练过程可能显得噪声较多,难以找到最优解。
    • 小批量梯度下降法(Mini-batch Gradient Descent)
      • 定义:这种方法结合了批量梯度下降和随机梯度下降的优点,每次使用一个小批量(如32或128个样本)数据计算梯度并更新参数。
      • 优势:在保持计算效率的同时,提供了更稳定的更新方向,常用于深度学习训练。
      • 调优点:批量大小是一个超参数,需要根据具体任务和计算资源进行调整。

    图 3.11 和 图 3.12 通过实验数据展示了不同批量大小对训练模型的影响,指出较小的批量大小在测试集上的表现往往优于较大的批量,因为小批量更容易跳出不理想的局部极小值。      

    • 表 3.1 总结了小批量梯度下降与批量梯度下降的对比,列出两者在一次更新速度、优化效果、泛化性能等方面的优缺点。                                                                                           

  2. 动量法

    • 定义:动量法通过引入前一步的更新方向,使参数更新不仅依赖当前的梯度,还考虑到之前更新的历史。这样可以让模型在遇到鞍点或局部极小值时更容易继续前进。
    • 工作原理
      • 公式:每一步的参数更新方向为当前梯度的反方向加上前一步的更新方向,这样更新方向不仅仅依赖于当前的损失,还受之前梯度的影响。在动量法中,每一步的参数更新公式可以表示为:   通过这个公式,当前的参数更新方向不仅取决于当前的梯度,还会受到之前更新方向的影响,从而避免在优化过程中陷入局部极小值或鞍点。
      • 理解方式:可以将其类比为物理中的惯性,物体在下坡过程中即使遇到平坦区域或小上坡,依然可能因为动量继续前行。
    • 优点:在优化中,动量法有助于模型在损失表面上快速移动,并避免陷入局部极小值或鞍点的困境。
      • 图 3.14:展示了物理世界中的惯性,帮助理解动量法的原理。                                             

      • 图 3.16图 3.17:展示了动量法在参数更新时如何结合当前梯度和之前的更新方向,帮助理解其在优化中的优势。                                                                    

这篇关于Datawhale X 李宏毅苹果书 AI夏令营 task1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111878

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll