关于深度学习的梯度下降法介绍

server/2025/3/26 9:34:21/

目录

内容提要

1. 梯度是什么?

2. 怎么个下降法?

3. 潜在的问题

4. 陷入局部最小

5. 遭遇鞍点

6. 学习率的选择

总结


内容提要

梯度下降法是机器学习中用于优化模型参数的核心算法之一

在训练神经网络时扮演着至关重要的角色

掌握这一“黑魔法”,首先需要理解“梯度”的概念,以及梯度下降法的工作原理、潜在问题及其解决方案。

1. 梯度是什么?

梯度是一个向量,表示函数在某一点的变化率最快的方向。

对于多元函数来说,梯度是由各个变量的偏导数组成的向量。

在机器学习中,梯度通常指的是损失函数(即模型预测值与真实值之间的误差)关于模型参数的偏导数。

梯度指向的是损失函数增长最快的方向,因此,负梯度方向就是损失函数下降最快的方向。

举个例子,假设我们有一个简单的线性回归模型,损失函数是均方误差(MSE)。梯度就是损失函数对模型参数(如权重和偏置)的偏导数。通过计算梯度,我们可以知道如何调整参数才能使损失函数最小化。

梯度的方向和大小,具有直观的几何意义。

可以证明(本文不证):某点的梯度方向,总是指向函数值「变化率」最大的方向,而梯度的大小等于该「变化率」

一元函数的变化率,就是该函数的导数;而刻画多元函数的「变化率」,则需要引入「方向导数」的概念。

对于一元函数,自变量只有增大和减小两个变化方向,而对于多元函数,自变量可以有任意多个变化方向。不妨以二元函数  为例。如下图:

2. 怎么个下降法?

梯度下降法的基本思想是:沿着负梯度方向逐步调整模型参数,使损失函数逐渐减小

顾名思义,梯度下降法就是沿着梯度的反方向进行下降,直到找到函数的局部最小值或者全局最小值。

想象一下你在山上,站在某个点。如果你沿着不同的方向走,你会发现高度的变化率是不同的,也就是山的陡峭程度是不同的,而沿着梯度指向的方向,是最陡峭的。那么,每次沿着梯度的反方向卖出一小步,就能以最快的速度下山。

怎么判断你已经到了山谷呢?很简单,你只管沿着梯度的方向走,只要高度下再下降了,也就是梯度变成了 0 时,你就到了山谷。

显然,每一步迈出的距离大小,会影响下山的速度。这个步长,称之为「学习率」,记为 。

梯度下降法用于训练神经网络时,目标是最小化「损失函数」。什么叫损失函数这里先不用管,只要知道它是一个多元函数即可。

一个神经网络可以有成千上万的参数,对应地,「损失函数」可以有成千上万的自变量。

运行梯度下降法时,首先需要随机地初始化这些自变量,然后沿着梯度反方向「迭代」若干轮。

具体步骤如下:

  1. 初始化参数:随机或根据某种策略初始化模型参数。
  2. 计算梯度:在当前参数下,计算损失函数关于每个参数的偏导数,得到梯度向量。
  3. 更新参数:沿着负梯度方向更新参数,更新公式为:
  4. 其中,θ 是模型参数,η 是学习率,∇θ​J(θ) 是损失函数关于参数的梯度。
  5. 重复迭代:重复步骤2和步骤3,直到损失函数收敛或达到预定的迭代次数。

梯度下降法有多种变体,如批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降(Mini-batch GD),它们的主要区别在于每次更新参数时使用的数据量不同。

3. 潜在的问题

尽管梯度下降法简单有效,但在实际应用中可能会遇到一些问题:

  • 陷入局部最小:损失函数的形状可能非常复杂,存在多个局部最小值。梯度下降法可能会陷入某个局部最小值,而无法找到全局最小值。

  • 遭遇鞍点:在高维空间中,损失函数的表面可能存在鞍点,即某些方向的梯度为零,而其他方向的梯度不为零。在这种情况下,梯度下降法可能会停滞不前。

  • 学习率的选择:学习率 η 是一个关键的超参数。如果学习率过大,可能会导致参数更新幅度过大,无法收敛;如果学习率过小,收敛速度会非常慢。

4. 陷入局部最小

局部最小值是损失函数表面的一个低点,但在全局范围内并不是最低点。梯度下降法容易陷入局部最小值,尤其是在损失函数表面复杂的情况下。为了缓解这一问题,可以采用以下方法:

  • 随机初始化:通过多次随机初始化参数,增加找到全局最小值的概率。

  • 动量法:引入动量项,帮助参数更新时跳出局部最小值。

  • 模拟退火:在优化过程中引入随机性,允许参数偶尔向损失函数增大的方向移动,从而跳出局部最小值。

5. 遭遇鞍点

鞍点是高维空间中梯度为零的点,但在某些方向上损失函数仍在下降。梯度下降法在鞍点附近可能会停滞不前。为了应对鞍点问题,可以采用以下策略:

  • 二阶优化方法:如牛顿法或拟牛顿法,利用二阶导数信息来加速收敛并避免鞍点。

  • 自适应学习率:如Adam、RMSProp等优化算法,根据梯度的历史信息动态调整学习率,帮助跳出鞍点。

6. 学习率的选择

学习率 η 决定了参数更新的步长。选择合适的学习率对梯度下降法的性能至关重要。常见的学习率选择方法包括:

  • 固定学习率:选择一个固定的学习率,适用于简单的优化问题。

  • 学习率衰减:随着迭代次数的增加,逐渐减小学习率,帮助模型在接近最优解时更稳定地收敛。

  • 自适应学习率:如AdaGrad、Adam等算法,根据梯度的变化自动调整学习率,适应不同的优化阶段。

总结

梯度下降法是机器学习中用于优化模型参数的核心算法。理解梯度的概念、掌握梯度下降法的基本步骤,并了解其潜在问题及解决方案,是掌握这一“黑魔法”的关键。通过合理选择学习率、使用优化算法的变体以及应对局部最小值和鞍点问题,可以显著提高梯度下降法的性能,从而更有效地训练神经网络。


http://www.ppmy.cn/server/176889.html

相关文章

python_巨潮年报pdf下载

目录 前置: 步骤: step one: pip安装必要包,获取年报url列表 step two: 将查看url列表转换为pdf url step three: 多进程下载pdf 前置: 1 了解一些股票的基本面需要看历年年报,在巨潮一个个下载比较费时间&…

主流区块链

文章目录 主流链1. Solana特点:适用场景:工具链: 2. Binance Smart Chain (BSC)特点:适用场景:工具链: 3. Avalanche特点:适用场景:工具链: 4. Polkadot特点:…

再学:合约继承 、抽象合约 solidity接口、库、事件 合约重入攻击

目录 1.合约继承 2.抽象合约 3.接口 4.库 5.事件 6.重入攻击 1.合约继承 这里的代码解释:B继承A B可以访问A的set()方法(即便是internal也可以),也可以拿到A的a变量。 只要这些在A的东西不是private就行 若想在子类可以重写…

【jQuery 使用教程】

文章目录 一、前言二、jQuery 简介1. 什么是 jQuery?2. jQuery 发展历史 三、jQuery 的使用1. 引入 jQuery方式 1:使用 CDN方式 2:本地引入 2. jQuery 语法基础1. 语法结构 3. jQuery 选择器4. jQuery 事件处理1. 点击事件 (click())2. 鼠标悬…

wangEditor富文本轻量使用及多个编辑器

0、官网 wangEditor multi editor 1、引入文件 <!--【富文本】第1步&#xff0c;引入--> <link rel"stylesheet" href"/wangeditor/style.css"/> <script charset"utf-8" src"/wangeditor/index.js"></script…

IO(Input/Output)

IO IO,即输入/输出&#xff0c;磁盘IO,网络IO 计算机角度的IO 主观意思就是计算机输入输出&#xff0c;计算机是主体。计算机分为5个部分:运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备。 输入设备&#xff1a;向计算机输入数据和信…

网络爬虫【爬虫库request】

我叫不三不四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库&#xff0c;完全满足如今网络爬虫的需求。与Urllib对比&#xff0c;Requests不仅具备Urllib的全部功能&#xff1b;在开发使用上&…

Python----计算机视觉处理(Opencv:图像缩放)

图像缩放 与图像旋转里的缩放的原理一样&#xff0c;图像缩放的原理也是根据需要将原图像的像素数量增加或减少&#xff0c;并通 过插值算法来计算新像素的像素值。 导入模块 import cv2 输入图像 imgcv2.imread(lena.png) 图像缩放 img_sizecv2.resize(img,None,fx0.5,fy0.5,…