当前位置: 首页 > news >正文

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

1. 导数

1.1. 定义

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

比如你有一个函数:

$y=f(x)$

导数$f'(x)$ 表示: 当 $x$ 在某一点 $x_0$ 处变化一个很小的量时,$y$ 会随之变化多少。

数学上定义为:

$f'(x_0)=\displaystyle \lim_{\Delta x \to 0}{\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x}}$

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

1.2. 举例

函数:

 $f(x)=x^2$

导数:

$f'(x)=2x$

在 $x=3$ 时:

$f'(3)=6$

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

1.3. 导数为0与极值点

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

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

例如:

$f(x)=x^2$: 在 $x=0$ 处导数为0,是最小值。

$f(x)=-x^2$$x=0$ 处导数为0,是极大值。

2. 偏导数

2.1. 定义

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

$z=f(x,y)$

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

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

  • 对 $x$ 的偏导数(固定 $y$):

$\frac{\delta f}{\delta y} (x_0,y_0)=\displaystyle \lim_{\Delta x \to 0} \frac{f(x_0+\Delta x,y_0) - f(x0,y0)}{\Delta x}$

  • 对 $y$ 的偏导数(固定 $x$):

$\frac{\delta f}{\delta x} (x_0,y_0)=\displaystyle \lim_{\Delta y \to 0} \frac{f(x_0,y_0 + \Delta y) - f(x0,y0)}{\Delta y}$

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

2.2. 举例

给定:

$f(x,y)=x^2y+3xy^2$

对 $x$ 的偏导($y$ 当常数):

$\frac{\delta f}{\delta x}=2xy+3y^2$

对 $y$ 的偏导($x$ 当常数):

$\frac{\delta f}{\delta y}=x^2+6xy$

可以把 $f(x,y)$ 想象成一片山地的高度,$x$ 轴表示东西方向,$y$ 轴表示南北方向,$f(x,y)$ 表示地形高度。在某一点,$\frac{\delta f}{\delta x}$表示沿东西方向的坡度,$\frac{\delta f}{\delta y}$表示沿南北方向的坡度。

3. 向量

3.1. 定义

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

  • 通常用箭头表示:从起点指向终点
  • 也可以用有序列表示:$[x_1,x_2,...,x_n]$

3.2 表示

空间维度向量示例含义
一维$[x]$直线上的点或位移
二维$[x,y]$平面上的箭头
三维$[x,y,z]$空间中的箭头
n 维$[x_1,x_2,...,x_n]$高维空间的方向和大小
  • 分量:向量得每一个数字称为分量
  • 模(长度):$\begin{Vmatrix} \overrightarrow{v} \end{Vmatrix}=\sqrt[]{x^2_1+x^2_2+...+x^2_n}$

4. 梯度

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

4.1. 定义

对于一个多元函数

$f(x_1, x_2, ..., x_n)$

它的梯度记为

$\Delta f(x_1, x_2, ..., x_n)=[\frac{\delta f}{\delta x_1}, \frac{\delta f}{\delta x_2},...,\frac{\delta f}{\delta x_n}]$

直观理解:

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

4.2. 梯度算法与损失函数

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

4.2.1. 损失函数

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

4.2.2. 梯度算法

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

4.2.3. 数学表示

设目标函数为:$f(\theta)$,其中 $\theta$是待优化的参数,$f(\theta)$是损失函数。

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

$\theta:=\theta- \eta.\Delta f(\theta)$

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

4.2.4. 梯度下降迭代步骤

  • 初始化参数

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

  • 计算梯度

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

  • 更新参数

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

  • 重复过程

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

4.2.5. 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 = 20for i in range(epochs):g = grad(x)x = x - lr * gprint(f"第 {i+1} 次迭代: x = {x:.4f}, f(x) = {f(x):.4f}")

输出结果:

第 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
含义函数在一点的斜率在某一方向(某个变量)上的变化率所有方向偏导数的组合,指向最陡上升方向
输出一个数(斜率)一个数(某个方向的变化率)一个向量(多个偏导数组合)
几何意义曲线的切线斜率曲面在某一方向的切线斜率曲面上升最快方向的向量
计算方式对单个变量求导对一个变量求偏导,其他变量看作常数对所有变量求偏导,并组合成向量
应用场景一维函数分析多维函数单方向分析多维最优化(如梯度下降、深度学习训练)
http://www.dtcms.com/a/461923.html

相关文章:

  • 六安市裕安区建设局网站天津企朋做网站的公司
  • 企业做淘宝客网站有哪些四平做网站佳业
  • 网站建立与推广手机商城网站
  • OpenAI Whisper 语音识别模型:技术与应用全面分析
  • C++17 新特性:std::optional —— 优雅处理函数返回值
  • 你好,因用户投诉并经平台审核,发现账号已发布的服务所选类目与小程序运营内容不符合,亲测有效
  • 怎样设计一个系统?
  • 橙色守护者
  • MySQL笔记---事务
  • 火车采集wordpress百色seo关键词优化公司
  • CVPR 2025 | 频率动态卷积FDConv,标准卷积的完美替代,即插即用,高效涨点!
  • 外贸企业用什么企业邮箱?2025 全球畅邮 TOP3,海外客户沟通无障碍
  • 做网站要注意些什么要求html制作个人简历
  • 第6篇 OpenCV RotatedRect如何判断矩形的角度
  • 响水做网站杭州网站设计手机
  • java面试-0135-InputStream不能重复读取原因及解决?√
  • C++之类的继承与派生
  • Yudao单体项目 springboot Admin安全验证开启
  • 电子商务网站建设风格网站建设技术的实现
  • 【Frida Android】基础篇2:Frida基础操作模式详解
  • 应用于ElasticSearch的C++ API——elasticlient
  • MyISAM存储引擎的特点
  • 伺服滑差补偿方案
  • 无锡网站建设排名安徽网站开发建设
  • 【C++】探秘string的底层实现
  • 建设卡开通网银网站学做网站 空间 域名
  • 基于Simulink的太阳能单极性移相控制光伏并网逆变器
  • 受欢迎的锦州网站建设wordpress取消默认图片
  • CUDA-Q Quake 规范详解:量子中间表示的技术深度解析
  • 包头教育平台网站建设吉化北建公司官网