梯度提升和梯度下降(梯度下降中的梯度是什么)

梯度提升和梯度下降(梯度下降中的梯度是什么)p 深入浅出梯度下降算法 p 在机器学习中 梯度下降算法 Gradient Descent 是一个重要的概念 它是一种优化算法 用于最小化目标函数 通常是损失函数 简而言之 梯度下降帮助我们找到一个模型最优的参数 使得模型的预测更加准确

大家好,我是讯享网,很高兴认识大家。



 <p>深入浅出梯度下降算法</p> 

讯享网

在机器学习中,梯度下降算法(Gradient Descent)是一个重要的概念。它是一种优化算法,用于最小化目标函数,通常是损失函数。

简而言之,梯度下降帮助我们找到一个模型最优的参数,使得模型的预测更加准确。

本文将深入探讨梯度下降算法的原理、公式以及如何在Python中实现这一算法。

1.1 什么是梯度?

在数学中,梯度是一个向量,表示函数在某一点的变化率和方向。在多维空间中,梯度指向函数上升最快的方向。

我们可以通过梯度来找到函数的最小值或最大值。对于损失函数,我们关注的是最小值。

1.2 梯度下降的基本思想

梯度下降的核心思想是通过不断调整参数,沿着损失函数的梯度方向移动,从而逐步逼近最小值。具体步骤如下:

1. 初始化参数:随机选择参数的初始值。

2. 计算梯度:计算损失函数对每个参数的梯度。

3. 更新参数:根据梯度信息调整参数,更新规则为:


讯享网

其中:

是要优化的参数。

是学习率(step size),决定每次更新的幅度。

是损失函数关于参数的梯度。

4. 重复步骤:重复计算梯度和更新参数,直到收敛(即损失函数的变化非常小)。

假设我们有一个简单的线性回归问题,目标是最小化均方误差(MSE)损失函数:

其中是模型的预测值。为了使用梯度下降,我们需要计算损失函数关于参数的梯度:

通过求导,我们可以得到梯度表达式,并利用它来更新参数。

接下来,我们将通过一个简单的线性回归示例来实现梯度下降算法。以下是实现代码:

3.1 导入库

讯享网

3.2 生成数据

我们将生成一些随机数据来模拟房屋面积与房价之间的线性关系。

 

3.3 梯度下降实现

我们将实现梯度下降算法的核心部分。

讯享网

截距 (θ0): 0.0000, 斜率 (θ1): 0.9743

3.4 绘制损失曲线

通过绘制损失函数随迭代次数变化的曲线,我们可以观察梯度下降的收敛过程。

 

3.5 可视化回归线

最后,我们可以将训练好的回归线可视化,以观察模型的效果。

讯享网

梯度下降算法在许多机器学习算法中得到了广泛应用,包括:

线性回归:如上文示例所示。

逻辑回归:用于分类问题,通过优化对数损失函数。

神经网络:用于深度学习,反向传播算法依赖于梯度下降来更新权重。

我们后面会一一讲到!

梯度下降是一种强大的优化算法,它通过迭代更新参数来最小化损失函数。在实际应用中,选择合适的学习率和迭代次数至关重要,因为学习率过大可能导致发散,而学习率过小则可能导致收敛速度缓慢。


在使用 Matplotlib 绘制包含中文字符的图表时,可能会遇到 的警告。这是因为默认字体不支持中文字符。可以通过以下方式解决这个问题:

1. 设置支持中文的字体

在代码中手动设置 Matplotlib 使用支持中文的字体(如 SimHei 字体):

 
    

2. 直接指定字体路径

也可以通过 来指定具体的字体文件路径:

讯享网

3. 安装支持中文的字体(适用于缺少中文字体的环境)

在某些环境中(如 Ubuntu),需要先安装中文字体:

 
    

然后在代码中使用这类字体即可。


图中的公式是关于梯度向量的表示,它描述了在参数空间中目标函数的变化情况。让我们逐步解释其中的每个部分。

公式解释

公式中的符号和含义如下:

  • ∇J(θ):梯度符号 ∇ 表示函数 J 的梯度,θ 是函数 J 的参数向量(例如,θ = [θ0,θ1])。
  • J(θ):目标函数,通常是损失函数成本函数,例如在机器学习中的均方误差损失函数。这个函数随着参数 θ 的变化而变化。
  • ∂J/∂θ0 和 ∂J/∂θ1:分别是对参数 θ0 和 θ1 的偏导数。这些偏导数描述了 J(θ) 在 θ0 和 θ1 方向上的变化率。偏导数的值表示在某个方向上增加或减少参数时,目标函数的增大或减小程度。

梯度向量的意义

梯度 ∇J(θ)是一个向量,它指向目标函数 J(θ)上升最快的方向。在机器学习的梯度下降算法中,更新参数时会朝着梯度的相反方向(即函数下降最快的方向)移动,以最小化 J(θ)。

梯度下降更新公式

假设我们要最小化目标函数 J(θ),梯度下降的更新公式为:

θ = θ − α⋅∇J(θ)

其中:

  • α 是学习率,控制更新步伐的大小。
  • θ 是当前参数值,通过减去梯度的方向,使 J(θ) 趋于最小。

总结

此公式用于计算目标函数 J 关于参数向量 θ 的梯度。通过梯度信息,优化算法可以找到目标函数的最小值(或最大值),并且梯度的每个分量(即每个偏导数)告诉我们如何调整各个参数以达到目标函数的优化。

图中的公式是关于梯度向量的表示,它描述了在参数空间中目标函数的变化情况。让我们逐步解释其中的每个部分。


标准差(Standard Deviation)是统计学中用于衡量数据集的离散程度的指标。它表示数据点与平均值之间的平均偏离程度。标准差越小,数据越集中;标准差越大,数据的分散程度越大。

计算标准差的公式

假设有一组数据 X={x1,x2,…,xn},其均值为 μ。标准差的计算分为样本标准差和总体标准差:

  1. 总体标准差(当我们有整个数据集时):


    其中:

    • σ:总体标准差
    • n:数据总数
    • xi:第 i 个数据点
    • μ:数据的平均值,即

  2. 样本标准差(当我们有一个样本数据集时):

    其中:

    • s:样本标准差
    • n:样本数据的数量
    • xi:第 i 个数据点
    • xˉ:样本的平均值,即


标准差的意义

  • 低标准差:数据点接近平均值,数据比较集中。
  • 高标准差:数据点分布较广,与平均值偏离较大,数据分散。

示例

假设有一组数据 {2,4,4,4,5,5,7,9},我们可以计算其平均值,然后计算各个数据点与平均值的偏离,最终得到标准差。

标准差的应用

标准差广泛应用于数据分析、工程、金融和科学研究中,用于分析数据的波动情况,评估风险等。例如:

  • 在股票市场中,较高的标准差可能意味着较高的价格波动。
  • 在质量控制中,小的标准差表示产品的质量更加稳定。

标准差是一个重要的统计量,帮助我们了解数据集的波动情况和离散程度。


在数据处理中用于标准化(归一化)数据,将数据调整为零均值和单位标准差。这个过程称为标准分数(Z-score)标准化,其意义如下:

公式解析

  • np.mean(X):计算数据集 X 的平均值。
  • np.std(X):计算数据集 X 的标准差。
  • X−np.mean(X):每个数据点减去均值,使数据中心移动到 0。
  • X−np.mean(X)/np.std(X):每个数据点与均值的偏差除以标准差,这一步将数据的分布缩放为单位标准差(1)。

标准化的结果

  • 均值为 0:标准化后,数据的均值会变成 0。
  • 标准差为 1:标准化后的数据标准差为 1,数据点在正态分布情况下会大部分集中在 [-1, 1] 之间。

标准化的意义

  1. 特征均衡:在机器学习中,不同特征的尺度不同(如收入单位是美元、身高单位是厘米),标准化可以让不同特征的数值范围相近,以避免某个特征对模型的影响过大。
  2. 加快收敛:在梯度下降等优化算法中,标准化可以使算法更快地收敛。
  3. 对称性:在数据分析和可视化中,标准化可以帮助我们更容易比较不同数据集之间的变化。

示例

假设 X=[1,2,3,4,5],则标准化后的 XXX 会是一个均值为 0、标准差为 1 的数据集,使得数据可以更适合大多数机器学习模型的输入。

在上面的图中:

  • 左图显示了原始数据 [1,2,3,4,5]。
  • 右图显示了标准化后的数据。这些值经过 Z-score 标准化处理,均值为 0,标准差为 1。可以看到,数据被缩放到一个中心在 0、范围大致在 -2 到 2 之间的区间。

标准化有助于在特征值差异较大时,让数据更加均匀,便于机器学习模型处理。

讯享网

参数设定

 
        
  • alpha:学习率,用于控制每次参数更新的幅度。较高的学习率可能使得收敛更快,但过高可能导致模型不收敛。
  • num_iterations:算法迭代的次数,即更新参数的次数。更多的迭代次数可以帮助模型更好地拟合数据。
  • m:样本数量,用于计算平均损失和梯度。

初始化参数

讯享网
  • theta_0 和 theta_1:模型参数。初始值都设为 0,其中  是截距, 是特征  的系数(斜率)。

存储损失值

 
        
  • losses:用于记录每次迭代的损失值(误差)。通过存储损失值可以观察模型的收敛情况。

梯度下降算法实现

讯享网
  • 使用一个循环,执行  次梯度下降步骤。
1. 计算预测值
 
        
  • Y_pred:根据当前的参数  和  计算预测值。对于每个样本 xi,预测值为 yi = θ0 + θ1 · xi 。
2. 计算损失函数
讯享网
  • loss:计算损失函数(均方误差,MSE),衡量预测值  和实际值  的差距。公式为:

  • losses.append(loss):将损失值添加到列表  中,以便观察损失值随迭代次数的变化。
3. 计算梯度
 
        
  • gradient_0:截距  的梯度。它表示损失函数对  的变化率,用来调整  的值。公式为:

  • gradient_1:斜率  的梯度。它表示损失函数对  的变化率,用来调整  的值。公式为:

4. 更新参数
讯享网
  • theta_0 -= alpha * gradient_0:使用学习率  和梯度  更新 。梯度指明了损失函数下降的方向,乘以  控制更新步长。
  • theta_1 -= alpha * gradient_1:使用学习率  和梯度  更新 。

通过每次迭代更新  和 ,梯度下降算法会逐渐找到使损失最小的参数。


在 NumPy 中, 和 都是用于生成随机数的函数,但它们生成的随机数分布不同:

1.

  • 分布:生成的随机数符合均匀分布,即在指定范围内(通常是 [0,1))的每个数值出现的概率相同。
  • 范围:生成的值在 [0,1) 区间内。
  • 用法:,参数可以是多个维度,指定生成数组的形状。
  • 示例
     

2.

  • 分布:生成的随机数符合标准正态分布(均值为 0,标准差为 1)。
  • 范围:理论上没有固定的范围,但数据大部分集中在 [−3,3] 之间。
  • 用法:,参数也可以指定生成数组的形状。
  • 示例
    讯享网

总结

  • 生成的是 [0,1) 区间的均匀分布随机数。
  • 生成的是均值为 0、标准差为 1 的标准正态分布随机数。


小讯
上一篇 2025-05-15 15:42
下一篇 2025-06-05 12:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146264.html