导数、偏导数与梯度:机器学习数学基础

1. 导数

1.1. 定义

导数用来描述函数在某一点的变化率,也就是曲线在那一点的切线斜率。

比如你有一个函数:

导数 表示: 当 在某一点 处变化一个很小的量时, 会随之变化多少。

数学上定义为:

这个极限就是在 处的瞬时变化率。

1.2. 举例

函数:

导数:

时:

这表示 每增加一点点, 会增大约6倍得量。

1.3. 导数为0与极值点

当导数为0时,曲线在该点的切线时水平的。此时可能出现以下几重情况:

  • 极小值(山谷):函数由下降转为上升
  • 极大值(山顶):函数由上升转为下降
  • 拐点:曲线弯曲方向改变的点,也就是曲线从"凹"变"凸"或从"凸"变"凹"的位置。

例如:

: 在 处导数为0,是最小值。

处导数为0,是极大值。

2. 偏导数

2.1. 定义

当函数有多个变量时,例如:

函数的变化不仅取决于 ,还取决于

这时我们引入偏导数来分析某个方向的变化率。

  • 的偏导数(固定 ):
  • 的偏导数(固定 ):

偏导数就是:只改变一个变量,其他变量保持不变,观察函数的变化率。

2.2. 举例

给定:

的偏导( 当常数):

的偏导( 当常数):

可以把 想象成一片山地的高度, 轴表示东西方向, 轴表示南北方向, 表示地形高度。在某一点,表示沿东西方向的坡度,表示沿南北方向的坡度。

3. 向量

3.1. 定义

向量是一个既有大小又有方向的量,可以用来表示空间中的位置、运动方向、力的大小等。

  • 通常用箭头表示:从起点指向终点
  • 也可以用有序列表示:

3.2 表示

空间维度 向量示例 含义
一维 直线上的点或位移
二维 平面上的箭头
三维 空间中的箭头
n 维 高维空间的方向和大小
  • 分量:向量得每一个数字称为分量
  • 模(长度):

4. 梯度

在机器学习和数学优化中,梯度是一个非常核心的概念,用来描述函数在多维空间中变化最快的方向与速度。

4.1. 定义

对于一个多元函数

它的梯度记为

直观理解:

  • 每个偏导数表示函数在该变量方向上的变化率。
  • 梯度向量就像是在多维控件中的箭头,指向函数上升最快的方向。
  • 你把函数想象成一座山,你站在某个位置,梯度向量就是这座山在你脚下最陡峭的上坡方向。

4.2. 梯度算法与损失函数

在机器学习中,我们的目标通常是: 让模型的预测值尽可能接近真实值。 而实现这一目标的核心就是损失函数和梯度算法的配合。

4.2.1. 损失函数

  • 损失函数是一个用来衡量模型预测值与真实值差距的函数。
  • 它把模型的表现变成一个可以计算、可以优化的数字。
  • 它只告诉你模型表现得好不好,但没有告诉你如何改进参数。

4.2.2. 梯度算法

  • 梯度算法的核心是沿着损失下降最快的方向前进,直到损失函数达到最小值。
  • 类比:想象你站在一座山顶,周围雾蒙蒙,看不见远处得谷底,你只能感受到脚下最陡得坡度,然后沿着最陡得坡度一步步往下走,直到走到山谷最低点。

4.2.3. 数学表示

设目标函数为:,其中 是待优化的参数,是损失函数。

每次迭代的参数更新公式为:

  • :学习率(learning rate),决定每次走多大步;
  • :梯度,表示函数对参数的偏导数;

4.2.4. 梯度下降迭代步骤

  • 初始化参数

为函数的参数设置随机初始值。

  • 计算梯度

在当前参数值下,计算损失函数的变化情况。这告诉我们函数增长最快的方向。梯度显示了每个参数如何影响函数输出。

  • 更新参数

将每个参数稍微沿着降低损失的方向移动。具体做法是从当前参数中减去梯度。步长由学习率控制。学习率越小,每次更新的步伐也越小。

  • 重复过程

用新的参数再次执行上述计算。不断重复,直到损失函数值不再下降或变得非常小,这意味着算法可能已经到达最小值。

4.2.5. Python示例

python 复制代码
import numpy as np

# 目标函数:f(x) = x^2
def f(x):
    return x*x

# 导数:f'(x) = 2x
def grad(x):
    return 2 * x

# 初始化
x = 5.0
lr = 0.1
epochs = 20

for i in range(epochs):
    g = grad(x)
    x = x - lr * g
    print(f"第 {i+1} 次迭代: x = {x:.4f}, f(x) = {f(x):.4f}")

输出结果:

Lua 复制代码
第 1 次迭代: x = 4.0000, f(x) = 16.0000
第 2 次迭代: x = 3.2000, f(x) = 10.2400
第 3 次迭代: x = 2.5600, f(x) = 6.5536
第 4 次迭代: x = 2.0480, f(x) = 4.1943
第 5 次迭代: x = 1.6384, f(x) = 2.6844
第 6 次迭代: x = 1.3107, f(x) = 1.7180
第 7 次迭代: x = 1.0486, f(x) = 1.0995
第 8 次迭代: x = 0.8389, f(x) = 0.7037
第 9 次迭代: x = 0.6711, f(x) = 0.4504
第 10 次迭代: x = 0.5369, f(x) = 0.2882
第 11 次迭代: x = 0.4295, f(x) = 0.1845
第 12 次迭代: x = 0.3436, f(x) = 0.1181
第 13 次迭代: x = 0.2749, f(x) = 0.0756
第 14 次迭代: x = 0.2199, f(x) = 0.0484
第 15 次迭代: x = 0.1759, f(x) = 0.0309
第 16 次迭代: x = 0.1407, f(x) = 0.0198
第 17 次迭代: x = 0.1126, f(x) = 0.0127
第 18 次迭代: x = 0.0901, f(x) = 0.0081
第 19 次迭代: x = 0.0721, f(x) = 0.0052
第 20 次迭代: x = 0.0576, f(x) = 0.0033

可以看到,经过20次迭代,目标函数已经非常接近最小值了。

5. 导数、偏导数、梯度对比

项目 导数(Derivative) 偏导数(Partial Derivative) 梯度(Gradient)
适用函数 单变量函数 多变量函数 多变量函数
自变量数 1 ≥ 2 ≥ 2
含义 函数在一点的斜率 在某一方向(某个变量)上的变化率 所有方向偏导数的组合,指向最陡上升方向
输出 一个数(斜率) 一个数(某个方向的变化率) 一个向量(多个偏导数组合)
几何意义 曲线的切线斜率 曲面在某一方向的切线斜率 曲面上升最快方向的向量
计算方式 对单个变量求导 对一个变量求偏导,其他变量看作常数 对所有变量求偏导,并组合成向量
应用场景 一维函数分析 多维函数单方向分析 多维最优化(如梯度下降、深度学习训练)
相关推荐
灰灰老师3 小时前
七种排序算法比较与选择[Python ]
java·算法·排序算法
秃头狂魔3 小时前
DAY1 数组一
算法
CM莫问3 小时前
推荐算法之粗排
深度学习·算法·机器学习·数据挖掘·排序算法·推荐算法·粗排
rengang663 小时前
10-支持向量机(SVM):讲解基于最大间隔原则的分类算法
人工智能·算法·机器学习·支持向量机
AndrewHZ4 小时前
【图像处理基石】暗光增强算法入门:从原理到实战(Python+OpenCV)
图像处理·python·opencv·算法·计算机视觉·cv·暗光增强
lifallen5 小时前
从Apache Doris 学习 HyperLogLog
java·大数据·数据仓库·算法·apache
智驱力人工智能5 小时前
使用手机检测的智能视觉分析技术与应用 加油站使用手机 玩手机检测
深度学习·算法·目标检测·智能手机·视觉检测·边缘计算
姚瑞南6 小时前
【AI 风向标】四种深度学习算法(CNN、RNN、GAN、RL)的通俗解释
人工智能·深度学习·算法
补三补四6 小时前
SMOTE 算法详解:解决不平衡数据问题的有效工具
人工智能·算法