橘智橘智
FakeOrange
预计阅读时间:3分钟4秒

机器学习与算法2.2 —— 偏导数与梯度

从偏导数与梯度了解如何训练模型

0
0

前言


好了朋友们~,这是我们新的旅程。在初识机器学习的或是深度学习的应用中。我们经常能听到所谓梯度下降,反向传播,训练等等术语。但其中的原理是什么呢?

说到最简单的应用使用Tensorflow,Pytorch或者Scikit-learn等等深度学习库,只需输入一个 model.fit(x,y) 或 model.train(x,y),我们就能得到一个训练后的模型。


但是当面对复杂问题的时候,往往效果不佳,此时开始调参。但记得前面说过的 GIGO(垃圾进,垃圾出),也许数学对你比较无趣,不过了解之后可以让你更好的去理解并应用!


今日份的座右铭是:“什么是手段,什么是目的,不要在手段中迷失了旅途的目的地。”


顺便分享一首纯音乐:配合食用更佳 月明かりの宴(月光盛宴)~


1. 什么是偏导数?


在多元微积分中,偏导数用来描述多变量函数对其中一个变量的变化率。偏导数的意义在于它可以告诉我们,函数值随着某个特定变量(保持其他变量不变)的变化而如何变化。


假设我们有一个简单的二元函数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/62cec139-77f0-47d7-b6d5-16ac224024e7image.png。这个函数的输出不仅取决于 x 的值,也取决于 y 的值。为了研究 xy f 的影响,我们分别计算 xy偏导数


偏导数的计算方法


步骤1:如果我们想知道 x f(x,y) 的影响,我们就对 x 求偏导数,保持 y 不变:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/fe597fd3-b0e1-4b0c-a230-c69a63ce8ae8image.png

步骤2:如果我们想知道  y f(x,y) 的影响,我们就对 y 求偏导数,保持 x 不变:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/db6d5c3f-f2d7-4d9d-b0ca-c578bbb1d934image.png


偏导数的意义


在函数 f(x,y)=x2+y2f 中,偏导数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/f94e9029-fc08-4346-8bc9-b933b9f5bfbbimage.png表示当 x 发生微小变化时,f 会如何变化。同理,偏导数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/ca843a75-72ae-47ec-81ca-3ed2e76977cdimage.png 表示当 y 发生微小变化时,f 的变化率。


在机器学习中,偏导数的计算非常关键。因为我们需要找到模型参数的最佳值来最小化损失函数,而计算偏导数可以帮助我们分析每个参数的影响,指导我们如何调整参数。


2. 什么是梯度?


梯度是一个向量,包含了函数对每个变量的偏导数。在几何上,梯度指向函数值增长最快的方向,因此在多维空间中,梯度向量代表了函数的“陡峭上升”方向。

假设仍然使用函数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/62cec139-77f0-47d7-b6d5-16ac224024e7image.png


  • 这个函数的梯度(记作 ∇f)是所有偏导数的集合,即:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/e646aa2d-4353-43df-b1d3-77bd884c982dimage.png


梯度的几何意义


梯度向量 (2x,2y) 表示当我们从一点出发时,如何沿着最快速增大的方向移动(这个方向就是梯度指向的方向)。而在优化问题中,我们往往想沿着“梯度的反方向”移动,以达到函数的最小值。


3. 偏导数和梯度在机器学习中的作用


在机器学习中,我们经常使用梯度下降法来优化模型参数,使损失函数最小化。

假设我们有一个线性回归模型,目标是最小化损失函数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/48cc77e3-a2d6-464a-aeda-17e906bf63aaimage.png。为了找到最佳的 w b 值,我们计算损失函数关于 w b 的偏导数:


  • 对 w 求偏导数:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/8168f8a6-8a57-41e9-9fc2-a5c3979f5a53image.png

  • 对 b 求偏导数:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/51f7eda7-b0f3-4684-ab58-954c69e46c81image.png


这些偏导数组成梯度向量 data/78df2c1f-e442-415d-a382-fa7925af0c4b/45d9200e-8592-40fd-9ef9-e1235452bedcimage.png。在梯度下降中,我们使用这个梯度向量来调整参数:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/61ef5036-45bf-4ba2-9a1c-f0f8a5cc1392image.png

这里的 α(alpha) 是学习率,用来控制参数的调整步伐。

通过梯度下降法,我们可以逐步找到让损失函数最小化的 w 和 b 值,从而得到一个更优的模型。


4. 实际示例


假设问题:线性回归模型


假设我们有一组数据,想要通过训练一个线性模型来预测某个目标变量 y。线性回归模型的公式为:y=wx+b

其中:

  • x 是输入特征,
  • w 是模型参数(权重 weights),
  • b 是偏置项 (bias)。

目标是找到最优的 w 和 b 值,使得模型的预测结果 y 最接近真实值。


损失函数:均方误差(MSE - Mean Squared Error


为了度量模型预测值和真实值之间的差异,我们定义了一个损失函数 L(w,b)。在这里,我们使用 均方误差(MSE)作为损失函数,它的定义为:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/1c55ab1c-1b45-4673-9d3d-4f09fa4e25d6image.png

其中:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/5bd6b1c3-5cb7-4526-9f31-6161062507f2image.png

说句人话就是,计算每个预测值和真实值,然后加起来取平均数。

我们的目标是通过调整 w 和 b 的值,使得 L(w,b) 最小化。(至于是最小化还是最大化,就看损失函数的方向,比如用R平方的话就是最大化。)


计算偏导数


要实现这个目标,我们需要计算 L(w,b) 对 w 和 b 的偏导数,以便我们知道如何调整 w 和 b 才能使损失最小化。

1. 对 w 求偏导数:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/32f395c6-aa63-4800-9381-c3ab8eae5e25image.png(套一下前面的偏导数公式,两边同除2)

这个偏导数告诉我们,如果我们对 w 做一个小小的调整,损失 L 会如何变化。

2. 对 b 求偏导数:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/c52174bb-3c32-4947-a640-65951823ab3fimage.png

同样地,这个偏导数告诉我们,如果我们对 b 做一个小小的调整,损失 L 会如何变化。


梯度向量


偏导数 data/78df2c1f-e442-415d-a382-fa7925af0c4b/298bfde5-a47a-4d86-9a00-a18dfb0f422bimage.png 和  data/78df2c1f-e442-415d-a382-fa7925af0c4b/84a49e8c-f53b-45bb-a984-e0efe708b591image.png共同组成了损失函数的梯度向量,记作 data/78df2c1f-e442-415d-a382-fa7925af0c4b/53519af6-af6d-479e-9d64-f029dcfd31f2image.png。这个梯度向量指向损失函数增加最快的方向。


梯度下降法更新参数


在机器学习中,梯度下降法是通过使用梯度向量来迭代更新参数的方法。我们从随机初始化的 w 和 b 开始,逐步沿着损失函数下降最快的方向调整参数。每次更新的公式为:

data/78df2c1f-e442-415d-a382-fa7925af0c4b/01529002-d7dd-43c1-a700-6b49f5cb9c85image.png

其中,α\alpha 是学习率,用来控制每次参数调整的步伐。也就是说在我们学习率的基础上新的 b = b - α*(b的偏导数)学习率在此处也重要,步子大了扯着,步子小了走不出怪圈。


示例计算过程


假设有一组简单的数据:

xy
12
22.8
33.6
44.5


1. 初始化参数:假设 w = 0 和 b = 0,学习率 α=0.01


2. 计算偏导数

  • 根据当前的 w = 0 和 b = 0,可以计算

data/78df2c1f-e442-415d-a382-fa7925af0c4b/3467ca8e-ce96-403c-9812-f5ed8ee810d3image.png


3. 更新参数

  • 使用梯度下降公式,更新 w 和 b。


4. 重复步骤 2 和 3,直到 w 和 b 收敛到一个稳定的值,使得损失函数最小化


为什么这很重要?


  • 偏导数帮助我们理解单个变量对多变量函数输出的影响。


  • 梯度包含了所有偏导数,指向函数值增加最快的方向,是优化问题中的重要工具。


  • 在机器学习中,通过梯度下降法,利用梯度信息,我们可以逐步找到最优参数,使模型的损失函数最小化,从而提高模型的预测准确性。
  • 偏导数和梯度的计算让我们知道在每一步中应该如何调整参数,使损失函数尽可能下降。这就像爬山时需要知道哪个方向最陡峭,而在优化问题中,我们寻找“下降最陡的方向”。

    在机器学习中,这一过程非常关键,因为通过这样的优化,我们可以让模型的参数不断向最佳解靠拢,从而提高模型的预测准确性。


    恭喜你又完成一小节!!!!!!!!!!!!!!!!!!!!!

    评论