【神经网络与深度学习】以最通俗易懂的角度解读[梯度下降法及其优化算法],这一篇就足够(很全很详细)

一、梯度下降法

1.1 梯度下降法介绍

在处理非线性分类问题时,往往需要使用多层神经网络。然而,多层神经网络的损失函数是一种复杂的不规则函数(即 不是凸函数),难于计算解析解(根据严格的推导和计算得到是方程的精确解)求解极值问题。这时,便需要梯度下降法通过不断迭代来求解极值。
梯度下降法是一种常用的求函数极值的方法,其结果是数值解
· 求解函数在某一点的梯度
· 梯度的方向:函数值变化最快的方向
· 沿着损失函数梯度方向更新权值
· 梯度为0时,停止迭代

数值解:就是通过某种近似计算得到的解,在给定的精度下满足方程。)

1.2 梯度下降法的三种类型

三种梯度下降方法:
· 批量梯度下降法
· 随机梯度下降法
· 小批量梯度下降法

下面以便于理解的一元线性回归的损失函数来介绍这三种方法,这是一元线性回归的平方损失函数。
在这里插入图片描述

1.2.1 批量梯度下降法(Batch Gradient Descent,BGD)

批量梯度下降法的特点:
· 每一次迭代都是用所有的样本来计算偏导数
在这里插入图片描述

· 由所有样本确定梯度方向
· 每一步都是准确地向着极值点趋近,迭代次数少
· 如果损失函数是凸函数,必定收敛于全局极小值
· 如果损失函数是非凸函数,则收敛于局部极小值点
· 可以利用向量运算进行并行计算
· 计算量大,训练时间长,不适合大规模数据集

在大规模的数据集中,通常会有很多大量冗余的数据,没有必要使用整个数据集计算梯度。

批量梯度下降法的适用范围:小规模数据集

1.2.2 随机梯度下降法(Stochastic Gradient Descent, SGD)

随机梯度下降法
· 每次迭代只选择一个样本训练模型,使网络的输出尽可能逼近这个样本的标签值
· 一轮:将所有样本都训练一遍称为一轮
· 反复训练多轮,直到网络对所有样本的误差足够小
· 参数更新非常频繁,无法快速收敛
· 不易于实现并行计算

举个例子,将10万个样本使用随机梯度下降法来训练模型,要将这10万个样本都训练一遍称为一轮(即迭代10万次)。由于每一次只使用一个样本训练模型,一个样本往往不具有整个样本特征的通用性,所以使用前面一个样本训练出的模型参数,不一定会使得后一个样本的误差更小,所以后一个样本需要重新训练网络。
可以推想到,虽然每一次迭代速度非常的快,但训练完一轮后,只是对最后一个训练的样本损失最小,后面的样本调整的模型参数很有可能会使得前面的样本损失加大,所以使用随机梯度下降法,并不具备很强的泛化能力(即对所有的样本的损失都足够小)。

因此,随机梯度下降法适用范围:很少采用。

1.2.3 小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)

小批量梯度下降法兼顾了前两种梯度下降法的特点,也可以称为小批量随机梯度下降算法(Mini-Batch SGD)
· 它是把数据分为多个小批量,每次迭代使用一个小批量来训练模型。
· 每个小批量中的所有样本共同决定了本次迭代中的梯度方向
· 一轮:使用所有小批量训练一遍
· 需要训练多轮,使网络对所有样本的误差足够小
· 每次迭代的训练样本数固定,与整个训练集的样本数量无关
· 可以实现并行运算
· 训练大规模数据集

小批量梯度下降法适用范围:大规模数据集。

这是小批量梯度下降法的模型参数更新迭代公式,如图所示。
在这里插入图片描述
若使用小批量梯度下降法需要注意,每一批量样本都要从数据集中随机抽取出来,使得它们的特征可以在一定程度上代表完整数据集的特征。
也就是说,要尽量保证每一批量的样本特点
· 独立同分布:小批量样本能够代表整个样本集的特征
· 随机抽取:小批量样本的特征和整体样本的特征存在差别

至今也没有一个明确的标准每一批量需要多少个样本,在实际应用往往根据经验类比对比,从而找到一个相对合适的批量样本数量。但为了充分利用处理资源,经常使用2的幂数作为批量大小:32、64、128、256…

小批量梯度下降法与批量梯度下降法相比:小批量样本计算出的梯度和使用全体样本计算出的标准梯度之间存在偏差,但总体向最优化的方向前进。有趣的是,小批量样本计算出的梯度与标准梯度之间存在的这种偏差,相当于在样本中增加了噪声,小批量梯度下降法训练出的模型具备更好的泛化能力

1.2.4 小总结:三种梯度下降法的对比

三种梯度下降法在损失函数上迭代的过程,如图所示。

在这里插入图片描述
叠在一起的圆圈是损失函数的等高线,红线是梯度下降的过程(从等高线最外⚪向损失函数极值点中心移动)
从图中我们可以看出,批量梯度下降法的每一步都是沿着函数值下降最快的方向迭代,该种方法更适合小规模数据集;随机批量下降法虽然总体走向是对的,但会走很多弯路,需要迭代很多很多次;小批量梯度下降法虽然没有第一个图的表现那么好,但也没有像第二个图偏离的太离谱,该种方法更适合大规模数据集

二、梯度下降法的优化

2.1 传统梯度下降法存在的问题

对于非凸函数,会有局部极小值点和鞍点(驻点),如图所示。
在这里插入图片描述
使用前面所讲的传统的梯度下降法在非凸函数上面求极值点时,往往会陷入局部极小值点/鞍点。也就是说,在局部极小值点/鞍点上,梯度接近于0,迭代就停止了,或者在靠近局部极小值点/鞍点附近反复震荡。

所以,对于多层神经网络,使用传统的梯度下降法,从理论上就无法保证一定收敛到最小值点。

我们依然以一元线性回归为例,来介绍小批量梯度下降算法的优化。如下图所示,使用小批量梯度下降法参数更新迭代公式,从公式中我们可以找到影响小批量梯度下降法的因素。
在这里插入图片描述
影响小批量梯度下降法的主要因素
· 小批量样本的选择xi,yi
· 批量大小t
· 学习率η
· 梯度

下面我们就根据这几种影响因素,来优化梯度算法。

2.2 小批量样本的选择

·在每轮训练之前,打乱样本顺序(保证随机性和独立同分布)

2.3 小批量中的样本数量

· 批量中的样本数量越多,梯度方向越准确,迭代次数越少
· 批量中的样本数量越少,随机性越大,迭代次数越多
· 充分利用处理器资源,进行并行计算
使用2的幂数作为批量大小:32、64、128、256

2.4 学习率

在之前的梯度下降发中,学习率都是固定的,学习率设置过小,收敛速度慢; 学习率设置过大,震荡,无法收敛。但是如果在训练过程中,动态的调整学习率,就可以加快收敛。

2.4.1 学习率衰减算法(Learning Rate Decay)

学习率衰减算法又称为学习率退火算法(Learning Rate Annealing)。

对于凸函数,可以使用学习率退火算法,开始时,学习率较大,收敛速度快;随着迭代次数的增加,学习率逐渐减小,避免震荡,最终收敛于最小值点在这里插入图片描述

弊端:对于多层神经网络的非凸函数,由于函数过于复杂,仅使用学习率衰减算法仍然不能逃脱局部极小值点和鞍点。

所以,学习率退火算法适用范围:损失函数为凸函数的情况。

2.4.2 自适应学习率算法

为解决非凸函数的学习率的调整问题,非凸函数的学习率要具有以下特性:
· 自适应调整每个参数的学习率

有以下几种自适应学习率算法

2.4.2.1 AdaGrad算法

首先定义全局学习率η,每个模型参数自适应更新学习率η:在这里插入图片描述
从公式中我们可以看出,每个参数学习率的变化是和当前点的梯度大小相关的,梯度越大,分母越大,学习率η衰减幅度越大,衰减速度越快。

AdaGrad算法在整体上,学习率随着迭代次数的增加而单调减少

2.4.2.2 RMSprop和AdaDelta算法

RMSprop和AdaDelta算法是对AdaGrad算法的改进,各参数的学习率不是单调递减的。

2.5 梯度估计

梯度下降法是沿着损失函数的梯度方向更新权值,在小批量梯度下降法中,完全依赖于当前批中样本的梯度,如果样本批量中含有比较大的噪声,就不能很好的反应全体样本的真实梯度,导致更新不稳定。
因此我们需要从梯度估计的方法入手,对算法进行改进和优化。

2.5.1 动量梯度下降法(Momentum)

动量梯度下降法引入了物理学中我们熟知的动量的概念,使用动量梯度下降法在更新参数时可以一定程度的保留之前的更新方向。也就是说,利用当前小批量的梯度和积攒的历史梯度信息来共同决定最终更新方向,这样可以减少更新参数的随机性,增加稳定性,加快训练速度,摆脱局部极小值/鞍点区域。
动量梯度下降法的参数迭代公式:
在这里插入图片描述
从式中我们可以看出,参数更新的影响因素又增加了之前累积的动量项,使得之前参数的更新方向不会立刻消失,而是像物体的惯性一样保留了一部分之前的速度方向。这就使得如果梯度方向不变,步长会更大,收敛速度加快;如果梯度方向改变,步长变小,更新速度变慢,使网络更加稳定的收敛。

弊端:如果在接近最小值点时,梯度方向一直不变,就会积累很大的速度,冲出最小值区域,当然也会越过局部极小值点/鞍点。

2.5.2 牛顿加速梯度算法(Nesterov Accelerated Gradient,NAG)

牛顿梯度下降法可以根据当前更新方向,估算下一步的梯度方向,在新位置计算梯度,修正梯度方向,这种算法会更具有前瞻性,在走每一步时,都会看看下一步的梯度方向是什么样,从而修正自己的梯度方向。
牛顿加速梯度算法的参数更新公式:
在这里插入图片描述
牛顿加速梯度算法利用超前提梯度模型参数来校正当前梯度

2.5.3 自适学习率+梯度估计的组合算法

可以将两种算法组合使用,既可以自适调整学习率,又可以自适应调整梯度,使得参数收敛的更快更好。
在这里插入图片描述
需要注意的是,朋友们往往都喜欢采用最先进的算法,但是并不一定是越先进的算法优化效果就越好,这和数据集、模型超参数的选择…等都有关系,需要通过实践来总结和对比。

<注:本文主要参考了西安科技大学——《神经网络与深度学习 Tensorflow2.0实战》的内容>

<后续还会继续整理【神经网络与深度学习】相关内容,如果需要,可持续关注我哦~>

<整理不易,留个赞或评论支持一下我吧^^>

如有疑问,欢迎批评指正^^

<think>好的,我现在要处理用户关于梯度下降法的问题。首先,用户想了解梯度下降法的基本概念和原理,尤其是在机器学习中的应用。我需要根据提供的三个引用来构建回答,确保内容准确且符合用户的要求。 首先,我需要回顾梯度下降法的核心概念。梯度下降是一种优化算法,用于小化损失函数,从而找到模型的佳参数。根据引用[1],它被广泛用于无约束优化问题,是机器学习常用的方法之一。接下来,引用[3]提到学习率α的重要性,控制步长大小,避免错过极小值或收敛过慢。这部分需要详细解释,因为学习率的选择对算法效果至关重要。 然后,我需要解释梯度下降的数学原理。这里需要推导梯度下降的公式,说明参数如何更新。根据引用[2],虽然用户提到了随机梯度下降法,但基础原理和标准梯度下降类似,只是使用单个样本更新参数。因此,在回答中需要区分批量梯度下降和随机梯度下降的不同之处,但用户的问题更关注基本原理,所以重点放在标准形式上。 接下来,步骤分解很重要。用户可能需要一个清晰的步骤说明,比如计算梯度、更新参数等。同时,要提到初始参数的选择和迭代终止条件,如达到大次数或梯度小于阈值。 然后,结合引用中的内容,讨论学习率的影响。引用[3]详细说明了α太大或太小的后果,这部分需要用简单的例子说明,比如下山的比喻,让用户更容易理解。 此外,需要提到梯度下降的变种,如批量、随机和小批量梯度下降,但根据引用[2],用户可能对随机梯度下降感兴趣,所以简要提及这些变种,但保持回答集中在基本概念上。 后,确保回答结构清晰,使用中文,数学公式正确。行内公式用$...$,独立公式用$$...$$,并单独成段。同时生成相关问题,可能需要包括优化方法、学习率调整、其他算法的比较等。 检查是否有遗漏点,比如应用场景或常见问题。确保引用正确,每个引用对应的内容准确标注。例如,引用[1]说明梯度下降的普遍性,引用[3]解释学习率的重要性,引用[2]提到随机梯度下降的应用。 总结回答结构:概念、数学原理、步骤、学习率的作用、变种类型、应用场景,后生成相关问题。确保每个部分都参考了正确的引用,并且语言通俗易懂,避免过于技术化。</think>### 梯度下降法原理详解 梯度下降法(Gradient Descent)是机器学习中用于优化模型参数的**核心算法**,通过迭代调整参数使损失函数小化[^1]。 --- #### 一、数学原理 梯度下降基于以下参数更新公式: $$ \theta_{t+1} = \theta_t - \alpha \cdot \nabla J(\theta_t) $$ 其中: - $\theta_t$:第$t$次迭代的参数值 - $\alpha$:学习率(控制步长) - $\nabla J(\theta_t)$:损失函数$J$在$\theta_t$处的梯度 梯度方向是函数增长快的方向,负梯度方向则是函数下降快的方向[^3]。 --- #### 二、执行步骤 1. **初始化参数**:随机选择初始参数$\theta_0$ 2. **计算梯度**:求当前参数对应的梯度$\nabla J(\theta_t)$ 3. **参数更新**:按公式调整参数 4. **终止条件**:达到预设迭代次数或梯度接近零 --- #### 三、关键特性 1. **学习率选择** - 过大(如$\alpha=1$):可能跳过优解,导致震荡或发散 - 过小(如$\alpha=0.001$):收敛速度过慢 经验取值通常在$0.001$到$0.1$之间[^3] 2. **梯度计算方式** | 类型 | 数据量 | 特点 | |------------|------------|--------------------| | 批量梯度下降 | 体样本 | 稳定但计算量大 | | 随机梯度下降 | 单个样本 | 收敛快但波动大[^2] | | 小批量梯度下降| 小批量样本 | 平衡速度稳定性 | --- #### 四、应用场景 1. 线性/逻辑回归的参数优化 2. 神经网络中的反向传播 3. 支持向量机等模型的求解 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路遥_.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值