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

【AI基础篇】微积分在AI中的核心作用与应用浅析

引言:AI发展的数学基石

人工智能,特别是机器学习和深度学习领域的飞速发展,其背后离不开三大数学支柱:线性代数、概率论与统计学,以及微积分。其中,微积分扮演着至关重要的角色,它不仅是理解和构建大多数AI算法的理论基础,更是驱动模型学习与优化的核心引擎。从最基础的梯度下降优化,到复杂的生成模型和强化学习策略,微积分的语言无处不在。

第一部分:AI优化的基石——导数、梯度与梯度下降

微积分的核心思想是研究“变化”。在AI中,模型训练的本质就是一个不断寻找最优参数以最小化“误差”(即损失函数)的过程。微积分,特别是微分学,为我们提供了衡量和利用这种“变化”的数学工具。

1.1 基础微积分概念在AI中的角色映射

AI模型的训练过程,本质上是在一个由模型参数构成的、极其高维的空间中,寻找一个能使损失函数 L 达到最小值的点。为了有效地找到这个最低点,我们需要知道在当前位置,应该朝哪个方向移动,以及移动多大的步伐。

微积分概念在 AI 中的角色关键公式(示例)常见应用/实现
导数/偏导数衡量单一参数变化对损失函数的影响率。它告诉我们,当某个参数(如权重w )发生微小变动时,损失值 L 会如何变化。\frac{\partial L}{\partial w}在模型训练的每一步,计算损失对各个参数的偏导数,以确定参数更新的贡献。
梯度 (Gradient)损失函数在参数空间中下降最快的方向。梯度是一个由所有参数的偏导数构成的向量,它指向函数值上升最快的方向,其反方向则是下降最快的方向。\bigtriangledown _{\theta }L(\theta ) = \begin{pmatrix} \frac{\partial L}{\partial \theta_{1}} \\ \frac{\partial L}{\partial \theta_{2}} \\ \vdots \\ \frac{\partial L}{\partial \theta_{n}} \end{pmatrix}梯度下降法 (Gradient Descent)。这是几乎所有AI模型训练的核心优化算法。
积分 (Integral)计算累积效应或总和。虽然在模型优化中不如微分常用,但在概率论(如计算概率密度函数的期望)、模型分析(如计算曲线下面积)以及一些特定模型(如神经常微分方程)中扮演重要角色。E[X] = \int x \cdot p(x)dx计算模型输出的期望值、在强化学习中计算累计奖励、在连续模型中求解状态。

1.2 核心优化算法:梯度下降 (Gradient Descent)

梯度下降是AI中最普及的优化算法,其目标是通过迭代更新参数,逐步逼近损失函数的最小值。

核心思想:想象一下你站在一座高山的半山腰,想要以最快的速度下山。每一步,你都会环顾四周,找到最陡峭的下坡方向,然后朝着这个方向迈出一步。在数学上,这个“最陡峭的下坡方向”就是损失函数梯度的负方向。

数学推导与更新公式
假设模型有一组参数 \theta,损失函数为 L(\theta )。我们的目标是找到一组 \theta ^* 使得 L(\theta ^*) 最小。梯度下降的迭代更新步骤如下:

  1. 初始化参数:随机选择一组初始参数 \theta _{0}

  2. 计算梯度:在当前参数 \theta _{t} 的位置,计算损失函数关于参数的梯度\bigtriangledown _{\theta }L(\theta _{t}) 。

  3. 更新参数:沿着梯度的负方向更新参数,以减小损失值。

        \theta _{t+1} = \theta _{t}- \eta \bigtriangledown _{\theta }L(\theta _{t})

其中, \eta是 学习率 (Learning Rate) ,它控制着每一步“下山”的步长。学习率的选择至关重要:太小会导致收敛缓慢,太大则可能在最低点附近“震荡”甚至无法收敛。

应用案例:线性回归
在线性回归中,我们试图找到一条直线 y = wx + b 来拟合数据点(x_{i},y_{i}) 。常用的损失函数是均方误差 (MSE):

L(w,b) = \frac{1}{N} \sum_{i=1}^{N}(y_{i} - (wx_{i} + b))^2

为了使用梯度下降,我们需要计算损失函数对参数 w 和 b 的偏导数:

\frac{\partial L}{\partial w} = \frac{1}{N} \sum_{i=1}^{N} 2(y_i - (wx_i + b))(-x_i) = -\frac{2}{N} \sum_{i=1}^{N} x_i(y_i - (wx_i + b))

\frac{\partial L}{\partial b} = \frac{1}{N} \sum_{i=1}^{N} 2(y_i - (wx_i + b))(-1) = -\frac{2}{N} \sum_{i=1}^{N} (y_i - (wx_i + b))

有了这些梯度,我们就可以通过梯度下降法迭代更新 w 和b ,直到损失函数收敛。实践中,为了提高效率,常使用梯度下降的变体,如随机梯度下降(SGD)或Adam优化器。

第二部分:深度学习的引擎——链式法则与反向传播

深度神经网络(DNN)由许多层堆叠而成,其结构远比线性回归复杂。要计算这样一个复杂复合函数的梯度,直接求解偏导数会变得异常困难。这时,微积分中的 链式法则 (Chain Rule) 便派上了用场,它构成了 反向传播 (Backpropagation) 算法的数学核心。

2.1 数学基石:链式法则

链式法则是计算复合函数导数的基本规则。如果一个变量 z 依赖于变量 y,而 y 又依赖于变量 x,那么z  对 x 的导数可以通过以下方式计算:

\frac{\mathrm{d} z}{\mathrm{d} x} =\frac{\mathrm{d} z}{\mathrm{d} y}\cdot \frac{\mathrm{d} y}{\mathrm{d} x}

对于多变量函数,链式法则可以扩展。例如,如果 L 是一个关于 z 的函数,而 z 是一个关于多个变量 w_{1},w_{2}, w_{3},\cdots ,w_{n} 的函数,那么 L 对某个 w_{i} 的偏导数是:

\frac{\partial L}{\partial w_{i}} = \frac{\partial L}{\partial z} \cdot \frac{\partial z}{\partial w_{i}}

反向传播正是巧妙地、系统性地应用链式法则,从网络的输出层开始,逐层向后计算梯度,最终得到损失函数对每一层参数的梯度。

2.2 反向传播算法详解

反向传播算法包含两个阶段:

  1. 前向传播 (Forward Propagation) :输入数据从输入层开始,逐层通过网络,经过权重矩阵的线性变换和激活函数的非线性变换,最终在输出层得到预测结果。同时,计算出最终的损失值。
  2. 反向传播 (Backward Propagation) :从最终的损失值开始,利用链式法则,将梯度(误差信号)从输出层逐层向输入层传播,并在此过程中计算出每一层参数(权重和偏置)的梯度。

多层感知机 (MLP) 的反向传播数学推导

考虑一个简单的两层神经网络。我们定义:

  • X:输入
  • W_{1},b_{1}:第一层的权重和偏置
  • Z_{1} =W_{1}W + b_{1}:第一层的线性输出
  • A_{1} =\sigma (Z):第一层的激活输出(\sigma是激活函数,如Sigmoid或ReLU)
  • W_{2},b_{2}:第二层的线性输出
  • Z_{2} = W_{2}A_{1} + b_{2}:第二层的线性输出
  • \hat{Y} = A_{2} = \sigma (Z_{2}) :最终预测输出
  • L:损失函数,例如L = \frac{1}{2} (\hat{Y}- Y)^2

我们的目标是计算\frac{\partial L}{\partial W_{2}},\frac{\partial L}{\partial b_{2}},\frac{\partial L}{\partial W_1},\frac{\partial L}{\partial b_1}

Step 1: 计算对第二层参数的梯度
使用链式法则,损失L  对 W_2 的梯度可以分解为:

\frac{\partial L}{\partial W_2} = \frac{\partial L}{\partial \hat{Y}} \cdot \frac{\partial \hat{Y}}{\partial Z_2} \cdot \frac{\partial Z_2}{\partial W_2}

  • \frac{\partial L}{\partial \hat{Y}} = \hat{Y} -Y
  • \frac{\partial \hat{Y}}{\partial Z_2} = {\sigma }'(Z_2)(激活函数的导数)
  • \frac{\partial Z_2}{\partial W_2} = A_{1}^{T}

将它们相乘得到: \frac{\partial L}{\partial W_2} = (\hat{Y}-Y) \bigodot {\sigma}'(Z_2)\cdot A_{1}^T(其中 \bigodot 表示逐元素乘积,即Hadamard积)。这个(\hat{Y}-Y) \bigodot {\sigma}'(Z_2)  通常被称为第二层的误差项 \delta _2
同样地,\frac{\partial L}{\partial b_2} = \delta _2

Step 2: 计算对第一层参数的梯度
为了计算对 W_1 的梯度,我们需要将误差从第二层“传播”到第一层。

\frac{\partial L}{\partial W_1} = \frac{\partial L}{\partial Z_2} \cdot \frac{\partial Z_2}{\partial A_1} \cdot \frac{\partial A_1}{\partial Z_1} \cdot \frac{\partial Z_1}{\partial W_1}

  • \frac{\partial L}{\partial Z_2} = \delta _2 (已在Step1中计算)
  • \frac{\partial Z_2}{\partial A_1} = W_2^{T}
  • \frac{\partial A_1}{\partial Z_1} = { \sigma}'(Z_1)
  • \frac{\partial Z_1}{\partial W_1} = X^T

组合起来,我们先计算第一层的误差项 \delta _1 = \frac{\partial L}{\partial Z_1} = (W_2^T \delta _2)\bigodot {\sigma }'(Z_1)

然后,\frac{\partial L}{\partial W_1} = \delta_1 \cdot X^T以及\frac{\partial L}{\partial b_1} = \delta _1 。

这个过程清晰地展示了梯度(误差)是如何从后向前逐层计算和传递的,这也是“反向传播”名称的由来 。在实践中,现代深度学习框架(如PyTorch、TensorFlow)通过自动微分(Autograd)技术,自动构建计算图并执行反向传播,极大地简化了开发过程。

用NumPy从零实现反向传播
以下代码展示了一个简单的两层神经网络,并手动实现了反向传播来计算梯度,这有助于直观理解本部分推导的数学过程。

import numpy as np# 激活函数及其导数
def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 输入数据和标签
X = np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]])
y = np.array[[0]], [[1]], [[1]], [[0]]# 初始化权重和偏置
np.random.seed(1)
W1 = np.random.randn(3, 4) # 输入层(3) -> 隐藏层(4)
b1 = np.zeros((1, 4))
W2 = np.random.randn(4, 1) # 隐藏层(4) -> 输出层(1)
b2 = np.zeros((1, 1))learning_rate = 0.1for i in range(10000):# --- 前向传播 ---Z1 = np.dot(X, W1) + b1A1 = sigmoid(Z1)Z2 = np.dot(A1, W2) + b2A2 = sigmoid(Z2) # 预测值# 计算损失 (均方误差)loss = np.mean((y - A2)**2)if i % 1000 == 0:print(f"Iteration {i}, Loss: {loss}")# --- 反向传播 ---# 计算输出层的误差和梯度delta_A2 = A2 - ydelta_Z2 = delta_A2 * sigmoid_derivative(A2) # dL/dZ2grad_W2 = np.dot(A1.T, delta_Z2)grad_b2 = np.sum(delta_Z2, axis=0, keepdims=True)# 计算隐藏层的误差和梯度delta_A1 = np.dot(delta_Z2, W2.T) # dL/dA1delta_Z1 = delta_A1 * sigmoid_derivative(A1) # dL/dZ1grad_W1 = np.dot(X.T, delta_Z1)grad_b1 = np.sum(delta_Z1, axis=0, keepdims=True)# --- 更新权重和偏置 ---W1 -= learning_rate * grad_W1b1 -= learning_rate * grad_b1W2 -= learning_rate * grad_W2b2 -= learning_rate * grad_b2

http://www.dtcms.com/a/558550.html

相关文章:

  • 做网站卖机器怎么弄新能源汽车价格表
  • 免费舆情信息网站网站开发需要掌握的知识
  • 推广网站软文高德地图是国产软件吗
  • 威海网站建设兼职郑州模板建站哪家好
  • 土豆做视频在线观看网站网站建设的多吗
  • 电子商务网站建设摘要旅游做义工的同城网站
  • 网站开发建设费用包括那些郑州高端网站建设哪家好
  • 网站开发税率是多少wordpress选定文字标红
  • dummy|trick
  • 计算机软件开发网站建设取什么名字手机怎样下载安装建设银行网站
  • FreeRTOS 学习:(七)FreeRTOS 中相关的 API 函数的命名规则
  • 如何用博客网站做cpa网站建设哪家公司好网站建设
  • 自动化测试的使用场景有哪些?
  • 安徽哪家公司做网站比较好淘宝上网站开发退款
  • view()与transpose()函数使用注意事项
  • WHAT - 前端自动化测试系列(二)
  • 【代数学】置换群的正规子群与猜拳游戏
  • 南京做网站南京乐识权威京东购物网站怎么做
  • 3.5 介质访问控制【2010统考真题】
  • 网站导航条用什么做邢台123最新事件
  • 网站建设模板免费下载万联芯城网站建设
  • 电商网站 性能目标有哪些桂阳网站制作
  • 百度有网站建设吗cn网站
  • 利用选择法对数据排序
  • django网站开发源代码企业画册图片
  • 什么颜色做网站显的大气网站开发流程分为哪三个阶段
  • tomcat启动web项目使用debug,无法进行下一步
  • 网站后台中文模板电话营销网站建设
  • dede模板网站如何搭建网站子目录怎么做的
  • 网站建设需要钱吗网页制作手机版