现在位置: 首页 > AI 数学基础 > 正文

代数基础

本章节介绍方程与不等式的变形、函数的核心概念、指数与对数运算、以及求和符号 Σ 与级数收敛。

本章节内容是 sigmoid、softmax、交叉熵、信息熵的共同数学根基,每个知识点都配了可交互的图像演示,拖动滑块比看十遍公式更能建立直觉。


方程与不等式的求解、变形

代数变形只依赖一句话。

等式两边同时做同样的运算,等式仍然成立。

只要你对方程左右两边"一视同仁"地加、减、乘、除(除数非零)、开方(注意正负号),方程的解就不会变。

一元一次方程

最基础的形式是

的完整步骤:

3x + 5 = 20
3x = 20 - 5        ← 两边同减 5(移项)
3x = 15
x = 15 / 3         ← 两边同除以 3
x = 5

核心动作只有两个:移项(本质是两边同减)和两边同除

一元二次方程与判别式

形式为 ,两种常用解法。

解法一:因式分解

x² - 5x + 6 = 0
(x - 2)(x - 3) = 0
→ x = 2 或 x = 3

解法二:求根公式,适用于所有情况但计算量更大:

其中 判别式,记作 ,它直接决定了根的个数:

判别式根的情况几何含义(抛物线与 x 轴)
两个不同的实根抛物线与 x 轴交于两点
一个重根抛物线恰好碰到 x 轴(相切)
无实根抛物线整体悬在 x 轴上方或下方

下面拖动滑块改变 ,观察抛物线形状与判别式如何联动。

交互演示:判别式与抛物线
拖动三个滑块,观察 Δ 的符号变化时,抛物线与 x 轴的交点个数如何改变。

的求根公式代入过程:

a=1, b=-2, c=-3
Δ = (-2)² - 4×1×(-3) = 4 + 12 = 16
x = (2 ± √16) / 2 = (2 ± 4) / 2
→ x = 3 或 x = -1

分式方程:最后必须检验

先通分或去分母,转化成普通方程求解。

最后必须把解代回原方程检验,确认没有让分母为 0。

让分母变 0 的解要舍去,称为增根

不等式:最容易出错的一条规则

不等式的变形规则与方程类似,但有一条关键区别。

不等式两边同时乘以(或除以)一个负数时,不等号方向要反转。

-2x > -6       ← 两边同减 6
x < 3          ← 两边同除以 -2(负数,不等号从 > 变成 <)

这条规则在机器学习里非常重要:推导优化算法的收敛方向、损失函数下降条件时,符号处理错了方向,结论会完全反过来。

不等式组的解集要取多个不等式解集的交集

x > 1
x < 5
→ 解集为 1 < x < 5

常用变形技巧

技巧做法典型用途
移项把某一项移到等号另一边,同时改变符号所有方程求解的基础动作
配方法求二次函数顶点、简化损失函数推导
换元法把反复出现的复杂子表达式用一个新变量代替化简结构复杂的式子

实例

# 用判别式和求根公式解一元二次方程
import math

def solve_quadratic(a, b, c):
    """解 ax^2 + bx + c = 0,返回所有实根"""
    delta = b * b - 4 * a * c   # 判别式 Δ = b² - 4ac
    if delta > 0:               # Δ > 0:两个不同实根
        r = math.sqrt(delta)
        return [(-b + r) / (2 * a), (-b - r) / (2 * a)]
    elif delta == 0:            # Δ = 0:一个重根
        return [-b / (2 * a)]
    else:                       # Δ < 0:无实根
        return []

# 验证 x² - 2x - 3 = 0,前面手算的结果是 x = 3 或 x = -1
print(solve_quadratic(1, -2, -3))

# Δ = 0 的情况:x² - 4x + 4 = 0,即 (x-2)² = 0
print(solve_quadratic(1, -4, 4))

# Δ < 0 的情况:x² + x + 1 = 0
print(solve_quadratic(1, 1, 1))

执行以上代码输出结果为:

[3.0, -1.0]
[2.0]
[]

练习:解不等式

点击查看答案

两边减 9:;两边除以 -3(负数,不等号反转):


函数的概念:定义域、值域、复合函数

函数 描述一种"输入到输出"的对应规则:每一个输入 x,有且只有一个输出 y 与之对应

写作 ,读作"y 是 x 的函数"。

定义域:所有"合法输入"组成的集合

判断定义域,本质是排除让表达式"无意义"的取值:

表达式特征限制条件示例
分母不能为 0
偶次根号根号下不能为负
对数真数必须大于 0

对数这一条在 AI 中特别重要:凡是用到 log 的地方(比如交叉熵损失),都要保证输入是正数。这也是为什么很多代码实现里写成 ——加一个很小的常数 ε,防止 报错或产生无穷大。

值域:所有"可能输出"组成的集合

的值域是 ,因为平方永远非负。

sigmoid 函数 的值域是开区间 ,永远不会等于 0 或 1,只会无限接近。

这正是它被用来表示"概率"的数学原因:概率理论上可以无限接近 0% 或 100%,但不会真的等于。

复合函数:函数套函数

把一个函数的输出,作为另一个函数的输入,写作

计算顺序是先算内层 g(x),再把结果代入外层 f

,求

f(g(x)) = f(x+1) = (x+1)²

通常不等于 ,顺序不能随便换。

为什么复合函数对 AI 重要:神经网络本质上就是很多层函数的复合。

一个两层网络可以写成 ,其中 是第一层(线性变换 + 激活函数), 是第二层。

反向传播算法能"逐层"计算梯度,靠的正是复合函数求导的链式法则(后续微积分课程详细展开)。

实例

# 复合函数的计算与"顺序不可交换"验证
def f(x):
    return x ** 2          # 外层函数 f(x) = x²

def g(x):
    return x + 1           # 内层函数 g(x) = x + 1

# f(g(x)):先算 g(3) = 4,再代入 f 得 16
print(f(g(3)))

# g(f(x)):先算 f(3) = 9,再代入 g 得 10
# 两者不相等,说明复合顺序不能互换
print(g(f(3)))

执行以上代码输出结果为:

16
10

练习:设 ,求 ,比较两者是否相同。

点击查看答案

两者不同,说明复合函数顺序不能互换。


指数与对数运算

一句话理解这两个函数的分工:指数函数负责"放大/压缩数值范围",对数函数负责"把乘除变成加减、把大范围数值压缩到可控范围"

它们在 AI 的损失函数、激活函数设计中反复出现。

随 x 增大趋于 0,把任意实数压进 (0,1)
AI 场景公式用到的性质
sigmoid 函数
softmax 函数指数放大差异,再归一化成概率分布
交叉熵损失对数把"概率连乘"变成"数值连加",避免下溢
信息熵log 让熵具有可加性

必须熟练的运算规则

指数运算规则:

对数运算规则,与指数规则一一对应:

换底公式,把任意底的对数换成自然对数:

指数与对数互为镜像

指数函数 与对数函数 互为反函数,图像关于直线 对称。

拖动滑块改变底数 a,观察两条曲线如何联动。

交互演示:指数与对数互为镜像
拖动滑块改变底数 a,两条曲线始终关于灰色虚线 y = x 对称。
蓝色为指数函数 y = a^x,绿色为对数函数 y = log_a(x),灰色虚线为对称轴 y = x。

推导练习:为什么交叉熵要用 log

假设真实标签是"猫"(概率为 1),模型预测"是猫"的概率为

如果不用 log,直接用 作为损失,当 p 从 0.5 降到 0.1,损失只是"线性"增长,惩罚力度不够。

:当 (模型极度自信却判断错误)时,,给予极其严厉的惩罚;当 (判断正确)时,,几乎不惩罚。

这是对数函数"在 0 附近陡峭、在 1 附近平缓"的形状在损失函数设计中的直接应用,第二章会用交互图像专门展示这条曲线。

实例

# 用代码验证对数运算规则:log(mn) = log(m) + log(n)
import math

m, n = 8, 4

# 左边:直接算 log₂(8×4)
left = math.log(m * n, 2)

# 右边:log₂(8) + log₂(4)
right = math.log(m, 2) + math.log(n, 2)

print(left)   # log₂32 = 5
print(right)  # 3 + 2 = 5,两者相等,规则成立
print(abs(left - right) < 1e-12)

执行以上代码输出结果为:

5.0
5.0
True

练习:计算 ,并用对数法则化简为一个对数。

点击查看答案


数列与级数:理解 Σ 与收敛

数列是按顺序排列的一串数,记作 ,简记为

两种最基础的数列:

类型特征示例通项公式
等差数列相邻两项差值恒定(公差 d)2, 5, 8, 11, ...(d=3)
等比数列相邻两项比值恒定(公比 r)2, 4, 8, 16, ...(r=2)

求和符号 Σ 到底在算什么

意思是:让下标 i 从 1 变到 n,把每一个 都算出来,再全部加起来。

读 Σ 公式的三步法:先看求和变量是谁(下标),再看求和范围(从哪到哪),最后看每一项长什么样

AI 公式里几乎总能看到 Σ,比如均方误差损失 ,和神经元的加权求和

两个求和公式:等差数列 ,等比数列(

级数与收敛性

级数是数列"无穷项"加起来的和,即

无穷多个数加起来,结果会不会是无穷大?这就是收敛与发散的问题:

如果随着项数增加,累加的和趋近于一个确定的有限值,称级数收敛;如果和越来越大或没有固定趋势,称级数发散。

最经典的例子是等比级数

时收敛,和为 ;当 时发散。

点击"播放"按钮,观察部分和如何一步步逼近极限值。

交互演示:等比级数的收敛过程
拖动滑块改变公比 r,再点击"播放",观察部分和 S₁, S₂, ... 如何逼近(或远离)极限 1/(1-r)。
红色虚线是理论极限 1/(1-r)。当 |r| 接近 0.9 时,收敛明显变慢;若 |r| ≥ 1(本演示滑块限制在 0.9 以内),级数将发散。

为什么收敛性对 AI 重要

训练神经网络时,梯度下降的每一步更新可以看作一个数列,权重更新是否能"收敛"到一个稳定值,判断逻辑和级数收敛的直觉相通。

某些优化算法(如 Adam 里的动量项)本质是对历史梯度做加权指数衰减求和,数学形式就是一个公比小于 1 的等比级数。

循环神经网络(RNN)中,如果某个乘法因子反复相乘且绝对值小于 1,会导致"梯度消失"(对应级数收敛于 0);大于 1 则导致"梯度爆炸"(对应级数发散)。这是深度学习的经典问题,根源正是等比数列的直觉。

实例

# 观察等比级数部分和逼近极限的过程:r = 0.5
# 理论极限:1 / (1 - 0.5) = 2

r = 0.5
limit = 1 / (1 - r)      # 理论极限值 2
s = 0                    # 部分和,从 0 开始累加

for i in range(6):       # 逐项累加:1 + 0.5 + 0.25 + ...
    s += r ** i
    print(i + 1, s)      # 打印项数与当前部分和

print(limit)             # 理论极限,部分和越来越接近它

执行以上代码输出结果为:

1 1.0
2 1.5
3 1.75
4 1.875
5 1.9375
6 1.96875
2.0

可以看到每加一项,部分和到极限的差距就缩小一半——这正是公比为 0.5 的等比级数的收敛节奏。

练习:判断级数 是否收敛,如果收敛求其和。

点击查看答案

公比 ,满足 ,收敛。


本章小结

主题一句话核心
方程与不等式两边同时做相同运算;乘/除负数时不等号要反转
函数概念定义域是"能输入什么",值域是"能输出什么",复合函数是"函数套函数"
指数与对数指数放大/压缩数值,对数把乘除变成加减——AI 损失函数的核心工具
数列与级数Σ 是"按规则求和",级数收敛与否决定模型训练是否稳定