1. 函数与极限

学习目标

  • 掌握 AI 中最常用的四种函数:指数、对数、多项式、Sigmoid
  • 理解极限的直观含义,能够计算简单极限
  • 熟记关键导数公式,为梯度下降和反向传播打下基础
  • 通过 Python 代码验证理论,实现数值微分近似求导

1.1 常用函数(AI 核心常用)

1.1.1 指数函数

知识点
  • 定义 y = a x ( a > 0 , a ≠ 1 ) y = a^x \quad (a > 0, a \neq 1) y=ax(a>0,a=1)。AI 中最常用 a = e a = e a=e(自然常数 e ≈ 2.71828 e \approx 2.71828 e2.71828),即 y = e x y = e^x y=ex
  • 核心性质
    • 定义域 R \mathbb{R} R,值域 ( 0 , + ∞ ) (0, +\infty) (0,+)
    • a > 1 a > 1 a>1 时单调递增, 0 < a < 1 0 < a < 1 0<a<1 时单调递减
    • 恒过点 ( 0 , 1 ) (0, 1) (0,1)
    • 导数 d d x e x = e x \frac{d}{dx} e^x = e^x dxdex=ex(自身导数,梯度计算的基础)
  • AI 应用场景:Softmax 归一化、连续变量建模、神经网络中的指数线性单元 (ELU)、梯度计算。
手工计算示例
  1. 计算 e 2 e^2 e2 e − 1 e^{-1} e1
    e 2 ≈ 2.71828 2 = 7.389 e^2 \approx 2.71828^2 = 7.389 e22.718282=7.389 e − 1 = 1 / e ≈ 0.368 e^{-1} = 1/e \approx 0.368 e1=1/e0.368

  2. 解方程 e x = 5 e^x = 5 ex=5
    两边取自然对数: x = ln ⁡ 5 ≈ 1.609 x = \ln 5 \approx 1.609 x=ln51.609

Python 代码示例
import numpy as np
import matplotlib.pyplot as plt

# 计算指数函数值
x = np.array([0, 1, 2, -1, -2])
y = np.exp(x)
print("x:", x)
print("e^x:", np.round(y, 3))

# 绘制 y = e^x 图像
x_plot = np.linspace(-3, 3, 100)
y_plot = np.exp(x_plot)

plt.figure(figsize=(8, 5))
plt.plot(x_plot, y_plot, color='blue', label='$y = e^x$')
plt.axhline(0, color='black', linestyle='--', alpha=0.5)
plt.axvline(0, color='black', linestyle='--', alpha=0.5)
plt.title('指数函数 $y = e^x$')
plt.xlabel('x'); plt.ylabel('y')
plt.legend(); plt.grid(alpha=0.3)
plt.show()
学习资料链接

1.1.2 对数函数

知识点
  • 定义:指数函数的反函数, y = log ⁡ a x y = \log_a x y=logax。AI 中最常用自然对数 y = ln ⁡ x y = \ln x y=lnx(底 e e e),也常用 log ⁡ 10 x \log_{10} x log10x
  • 核心性质
    • 定义域 ( 0 , + ∞ ) (0, +\infty) (0,+),值域 R \mathbb{R} R
    • 与指数函数互逆: ln ⁡ ( e x ) = x \ln(e^x)=x ln(ex)=x e ln ⁡ x = x e^{\ln x}=x elnx=x
    • 单调递增(底 a > 1 a>1 a>1
    • 导数 d d x ln ⁡ x = 1 x \frac{d}{dx} \ln x = \frac{1}{x} dxdlnx=x1
  • AI 应用场景:交叉熵损失函数、对数似然、数据压缩(防止数值溢出)、信息熵计算。
手工计算示例
  1. 计算 ln ⁡ 1 \ln 1 ln1 ln ⁡ e \ln e lne ln ⁡ 10 \ln 10 ln10
    ln ⁡ 1 = 0 \ln 1 = 0 ln1=0 ln ⁡ e = 1 \ln e = 1 lne=1 ln ⁡ 10 ≈ 2.303 \ln 10 \approx 2.303 ln102.303

  2. 解方程 ln ⁡ ( x + 2 ) = 1 \ln(x+2)=1 ln(x+2)=1
    取指数: x + 2 = e 1 ⇒ x = e − 2 ≈ 0.718 x+2 = e^1 \Rightarrow x = e - 2 \approx 0.718 x+2=e1x=e20.718

Python 代码示例
import numpy as np
import matplotlib.pyplot as plt

# 计算自然对数和常用对数
x = np.array([1, np.e, 10, 0.5])
print("x:", x)
print("ln(x):", np.round(np.log(x), 3))    # np.log 是自然对数
print("log10(x):", np.round(np.log10(x), 3))

# 绘制 y = ln x
x_plot = np.linspace(0.1, 5, 100)
y_plot = np.log(x_plot)

plt.figure(figsize=(8, 5))
plt.plot(x_plot, y_plot, color='red', label='$y = \\ln x$')
plt.axhline(0, color='black', linestyle='--', alpha=0.5)
plt.axvline(0, color='black', linestyle='--', alpha=0.5)
plt.title('自然对数函数 $y = \\ln x$')
plt.xlabel('x'); plt.ylabel('y')
plt.legend(); plt.grid(alpha=0.3)
plt.show()
学习资料链接

1.1.3 多项式函数

知识点
  • 定义 y = a n x n + a n − 1 x n − 1 + ⋯ + a 1 x + a 0 y = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0 y=anxn+an1xn1++a1x+a0 n n n 为非负整数, a n ≠ 0 a_n \neq 0 an=0
  • 常见类型
    • 一次多项式(线性函数) y = k x + b y = kx + b y=kx+b,图像为直线,斜率为 k k k
      导数 d d x ( k x + b ) = k \frac{d}{dx}(kx+b)=k dxd(kx+b)=k
    • 二次多项式 y = a x 2 + b x + c y = ax^2+bx+c y=ax2+bx+c,图像为抛物线,有极值点。
  • AI 应用场景:线性回归、多项式回归、神经网络中的线性变换层。
  • 幂函数求导公式(一般形式): d d x x n = n x n − 1 \frac{d}{dx} x^n = n x^{n-1} dxdxn=nxn1,对多项式逐项求导非常有用。
手工计算示例
  1. 线性函数: y = 2 x + 3 y=2x+3 y=2x+3,求 x = 1 x=1 x=1 x = − 2 x=-2 x=2 时的值。
    x = 1 ⇒ y = 5 x=1 \Rightarrow y=5 x=1y=5 x = − 2 ⇒ y = − 1 x=-2 \Rightarrow y=-1 x=2y=1

  2. 二次函数极值: y = x 2 − 4 x + 3 y = x^2 - 4x + 3 y=x24x+3,求最小值。
    顶点横坐标 x = − b 2 a = 2 x = -\frac{b}{2a}=2 x=2ab=2,最小值 y = 2 2 − 8 + 3 = − 1 y=2^2-8+3=-1 y=228+3=1

Python 代码示例
# 导入数值计算库numpy,用于数组和数值运算
import numpy as np
# 导入绘图库matplotlib,用于绘制数据点和拟合曲线
import matplotlib.pyplot as plt
# 导入线性回归模型,用于拟合多项式曲线
from sklearn.linear_model import LinearRegression
# 导入多项式特征构造器,用于将x转为x²、x等高阶特征
from sklearn.preprocessing import PolynomialFeatures

# 定义 一次多项式函数(线性函数 y = kx + b)
def linear_func(x, k=2, b=3):
    # 计算并返回线性函数结果:k*x + b
    return k * x + b
    
# 定义 二次多项式函数(y = ax² + bx + c)
def quadratic_func(x, a=1, b=-4, c=3):
    # 计算并返回二次函数结果
    return a*x**2 + b*x + c

# 生成测试用的x数组(4个数值)
x = np.array([1, -2, 3, 0])
# 打印输入的x
print("x:", x)
# 打印一次多项式计算结果
print("一次多项式:", linear_func(x))
# 打印二次多项式计算结果
print("二次多项式:", quadratic_func(x))

# ------------------- 二次多项式拟合示例 -------------------
# 设置随机种子,保证每次运行生成的噪声都一样(可复现)
np.random.seed(42)

# 生成在 [-5,5] 之间均匀分布的50个点,作为x数据
x_data = np.linspace(-5, 5, 50)

# 生成真实的y数据:2x²+3x+1,并加上正态分布噪声(模拟真实数据)
y_data = 2*x_data**2 + 3*x_data + 1 + np.random.normal(0, 2, 50)

# 创建多项式特征生成器,degree=2表示生成二次多项式特征(x, x²)
poly = PolynomialFeatures(degree=2)

# 将x_data转为二维数组,并生成多项式特征 [1, x, x²]
x_poly = poly.fit_transform(x_data.reshape(-1, 1))

# 创建线性回归模型,并使用多项式特征拟合y_data
model = LinearRegression().fit(x_poly, y_data)

# 使用训练好的模型进行预测,得到拟合曲线y_pred
y_pred = model.predict(x_poly)

# 绘制原始带噪声的数据点(散点图)
plt.scatter(x_data, y_data, color='orange', label='带噪声数据')

# 绘制多项式拟合曲线
plt.plot(x_data, y_pred, color='blue', label='二次多项式拟合')

# 设置图表标题
plt.title('多项式回归示例')

# 设置x轴和y轴标签
plt.xlabel('x'); plt.ylabel('y')

# 显示图例、显示网格(透明度0.3)
plt.legend(); plt.grid(alpha=0.3)

# 展示绘制好的图像
plt.show()
学习资料链接

1.1.4 Sigmoid 函数

知识点
  • 定义 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1,读作“Sigmoid”或“Logistic 函数”。
  • 核心性质
    • 定义域 R \mathbb{R} R,值域 ( 0 , 1 ) (0, 1) (0,1)
    • 图像呈 “S” 型,中心对称于点 ( 0 , 0.5 ) (0, 0.5) (0,0.5)
    • 单调递增,光滑且无穷可导
    • 极限特性: lim ⁡ x → + ∞ σ ( x ) = 1 \lim_{x\to +\infty}\sigma(x)=1 limx+σ(x)=1 lim ⁡ x → − ∞ σ ( x ) = 0 \lim_{x\to -\infty}\sigma(x)=0 limxσ(x)=0
    • 导数 σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x) = \sigma(x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x))(可用自身表示,极大简化反向传播计算)
  • AI 应用场景:二分类输出层(概率解释)、神经网络隐藏层激活函数、LSTM 门控机制。
手工计算示例
  1. 计算 σ ( 0 ) \sigma(0) σ(0) σ ( 1 ) \sigma(1) σ(1) σ ( − 1 ) \sigma(-1) σ(1)
    σ ( 0 ) = 0.5 \sigma(0)=0.5 σ(0)=0.5 σ ( 1 ) = 1 1 + e − 1 ≈ 0.731 \sigma(1)=\frac{1}{1+e^{-1}}\approx0.731 σ(1)=1+e110.731 σ ( − 1 ) = 1 1 + e 1 ≈ 0.269 \sigma(-1)=\frac{1}{1+e^{1}}\approx0.269 σ(1)=1+e110.269
    验证对称性: 0.269 = 1 − 0.731 0.269 = 1-0.731 0.269=10.731

  2. 利用导数公式计算 σ ′ ( 2 ) \sigma'(2) σ(2)
    已知 σ ( 2 ) ≈ 0.881 \sigma(2)\approx0.881 σ(2)0.881,则 σ ′ ( 2 ) = 0.881 × ( 1 − 0.881 ) = 0.105 \sigma'(2)=0.881\times(1-0.881)=0.105 σ(2)=0.881×(10.881)=0.105

Python 代码示例
import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    s = sigmoid(x)
    return s * (1 - s)

x = np.array([-3, -1, 0, 1, 3])
print("x:", x)
print("Sigmoid(x):", np.round(sigmoid(x), 3))
print("Sigmoid'(x):", np.round(sigmoid_derivative(x), 3))

# 绘图
x_plot = np.linspace(-5, 5, 100)
y_sig = sigmoid(x_plot)
y_der = sigmoid_derivative(x_plot)

plt.figure(figsize=(10, 4))
plt.subplot(1,2,1)
plt.plot(x_plot, y_sig, 'purple', label='$\\sigma(x)$')
plt.axhline(0.5, color='gray', linestyle='--')
plt.title('Sigmoid 函数'); plt.grid(alpha=0.3)

plt.subplot(1,2,2)
plt.plot(x_plot, y_der, 'green', label="$\\sigma'(x)$")
plt.title('Sigmoid 导数'); plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
学习资料链接

1.2 极限概念(直观理解,不深究 ε-δ)

1.2.1 极限的直观定义

当自变量 x x x 无限趋近 于某个值 x 0 x_0 x0(或趋于无穷大)时,函数值 f ( x ) f(x) f(x) 无限趋近 于一个确定的常数 A A A,则称 A A A 为极限,记作
lim ⁡ x → x 0 f ( x ) = A 或 lim ⁡ x → ∞ f ( x ) = A . \lim_{x \to x_0} f(x) = A \quad \text{或} \quad \lim_{x \to \infty} f(x) = A. xx0limf(x)=Axlimf(x)=A.

核心思想:变量可以无限接近某个目标,但不一定等于该目标。例如 lim ⁡ x → 2 ( 2 x + 3 ) = 7 \lim_{x\to 2}(2x+3)=7 limx2(2x+3)=7,虽然 x x x 可以取 2,但极限概念允许 x x x 从左右两侧无限逼近 2。

1.2.2 常用极限(必须熟记)

极限表达式 备注
lim ⁡ x → 0 sin ⁡ x x \lim_{x \to 0} \frac{\sin x}{x} limx0xsinx 1 1 1 重要极限,导数推导基础
lim ⁡ x → 0 e x − 1 x \lim_{x \to 0} \frac{e^x - 1}{x} limx0xex1 1 1 1 等价于 e x e^x ex 在 0 处的导数
lim ⁡ x → ∞ ( 1 + 1 x ) x \lim_{x \to \infty} \left(1+\frac{1}{x}\right)^x limx(1+x1)x e e e 自然常数的定义
lim ⁡ x → + ∞ e − x \lim_{x \to +\infty} e^{-x} limx+ex 0 0 0 指数衰减
lim ⁡ x → − ∞ e − x \lim_{x \to -\infty} e^{-x} limxex + ∞ +\infty + 指数爆炸
lim ⁡ x → + ∞ σ ( x ) \lim_{x \to +\infty} \sigma(x) limx+σ(x) 1 1 1 Sigmoid 饱和
lim ⁡ x → − ∞ σ ( x ) \lim_{x \to -\infty} \sigma(x) limxσ(x) 0 0 0 Sigmoid 饱和

1.2.3 手工计算示例

  1. 判断 lim ⁡ x → 2 ( 2 x + 3 ) \lim_{x \to 2} (2x+3) limx2(2x+3)
    x x x 无限接近 2 时, 2 x + 3 2x+3 2x+3 无限接近 7 7 7,所以极限为 7 7 7

  2. 判断 lim ⁡ x → ∞ 1 x \lim_{x \to \infty} \frac{1}{x} limxx1
    x x x 无限增大时, 1 x \frac{1}{x} x1 无限接近 0 0 0,极限为 0 0 0

  3. 计算 lim ⁡ x → 0 e x − 1 x \lim_{x \to 0} \frac{e^x - 1}{x} limx0xex1
    利用 e x ≈ 1 + x e^x \approx 1 + x ex1+x(当 x x x 很小时),则 ( 1 + x ) − 1 x = 1 \frac{(1+x)-1}{x}=1 x(1+x)1=1,故极限为 1 1 1

1.2.4 Python 代码验证

import numpy as np

# 1. 验证 lim_{x->2} (2x+3) = 7
x_2 = np.array([1.9, 1.99, 1.999, 2.001, 2.01, 2.1])
print("2x+3 逼近 7:", 2*x_2 + 3)

# 2. 验证 lim_{x->∞} 1/x = 0
x_inf = np.array([10, 100, 1000, 10000])
print("1/x 逼近 0:", 1/x_inf)

# 3. 验证 lim_{x->0} (e^x-1)/x = 1
x_0 = np.array([0.1, 0.01, 0.001, 0.0001, -0.0001, -0.001, -0.01, -0.1])
y_0 = (np.exp(x_0) - 1) / x_0
print("(e^x-1)/x 逼近 1:", np.round(y_0, 4))

1.2.5 极限在 AI 中的意义

  • 导数的定义:导数本身就是一种极限(差商的极限),是梯度下降的理论基石。
  • 梯度消失/爆炸:深层网络中多个 Sigmoid 导数连乘,当每项都接近 0 时,梯度极限趋于 0(梯度消失)。
  • 收敛性分析:优化算法是否收敛到最小值,取决于迭代序列的极限。
  • 数值稳定性:理解极限可以帮助避免除以 0 或溢出等数值问题。

1.3 必备导数公式汇总(熟记)

函数 导数 备注
f ( x ) = x n f(x)=x^n f(x)=xn f ′ ( x ) = n x n − 1 f'(x)=n x^{n-1} f(x)=nxn1 幂函数(多项式的基础)
f ( x ) = e x f(x)=e^x f(x)=ex f ′ ( x ) = e x f'(x)=e^x f(x)=ex 指数函数
f ( x ) = ln ⁡ x f(x)=\ln x f(x)=lnx f ′ ( x ) = 1 x f'(x)=\frac{1}{x} f(x)=x1 自然对数
f ( x ) = σ ( x ) = 1 1 + e − x f(x)=\sigma(x)=\frac{1}{1+e^{-x}} f(x)=σ(x)=1+ex1 f ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) f'(x)=\sigma(x)(1-\sigma(x)) f(x)=σ(x)(1σ(x)) Sigmoid 导数,用于反向传播

目标:这些公式是理解梯度下降反向传播的核心。建议手动推导一遍 Sigmoid 导数,加深记忆。


1.4 代码实践:数值微分与链式法则验证

数值微分用差商近似导数:
f ′ ( x ) ≈ f ( x + h ) − f ( x ) h f'(x) \approx \frac{f(x+h)-f(x)}{h} f(x)hf(x+h)f(x)
其中 h h h 是一个很小的数(如 10 − 5 10^{-5} 105)。该技巧可用于验证解析导数的正确性。

import numpy as np

def numerical_derivative(f, x, h=1e-5):
    """数值微分(前向差分)"""
    return (f(x + h) - f(x)) / h

# 测试函数:f(x) = e^x * ln(x)   (可验证链式法则)
def f(x):
    return np.exp(x) * np.log(x)

# 解析导数(通过乘积法则+链式法则): f'(x) = e^x * ln(x) + e^x * (1/x)
def analytic_derivative(x):
    return np.exp(x) * np.log(x) + np.exp(x) / x

x_test = 2.0
num_deriv = numerical_derivative(f, x_test)
ana_deriv = analytic_derivative(x_test)

print(f"数值导数: {num_deriv:.6f}")
print(f"解析导数: {ana_deriv:.6f}")
print(f"误差: {abs(num_deriv - ana_deriv):.2e}")

结果:误差通常小于 10 − 8 10^{-8} 108,验证了链式法则和求导公式的正确性。


学习资料链接(综合)

视频教程

文档与书籍

  • 《人工智能数学基础》(清华大学出版社)
  • 《机器学习的数学》
  • numpy 官方教程

在线练习

可视化工具


小结

函数类型 核心公式 定义域 值域 关键导数 AI 主要应用
指数 e x e^x ex R \mathbb{R} R ( 0 , ∞ ) (0,\infty) (0,) e x e^x ex Softmax,梯度
对数 ln ⁡ x \ln x lnx ( 0 , ∞ ) (0,\infty) (0,) R \mathbb{R} R 1 / x 1/x 1/x 交叉熵,信息熵
多项式 x n x^n xn R \mathbb{R} R 视次数 n x n − 1 n x^{n-1} nxn1 线性/多项式回归
Sigmoid 1 1 + e − x \frac{1}{1+e^{-x}} 1+ex1 R \mathbb{R} R ( 0 , 1 ) (0,1) (0,1) σ ( 1 − σ ) \sigma(1-\sigma) σ(1σ) 二分类,激活函数

极限 是微积分的基石,理解极限有助于掌握导数、梯度下降等核心概念。建议结合 Python 代码和绘图工具,通过数值实验加深对函数行为和极限思想的理解。

下一步:继续学习导数、梯度下降、链式法则,为反向传播算法打下坚实的数学基础。

Logo

分享最新、最前沿的AI大模型技术,吸纳国内前几批AI大模型开发者

更多推荐