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

函数与图像

本章节我们将把常见函数的图像直观的展示出来,看懂图像的形状比记住公式更重要。

损失函数曲面、激活函数,本质都是这些基础形状的变体,每个函数都配了可切换的交互图像,动手切换、拖动,比看静态插图有效得多。


为什么要专门学"看图"

数学公式描述的是"规则",图像描述的是"规则长什么样"。

很多深度学习的核心问题,本质上都是"曲线或曲面形状"问题:

深度学习问题本质上的形状问题
为什么某些损失函数更容易优化看它的曲面是不是"碗状"(凸函数)
为什么 sigmoid 会导致训练变慢看它的图像在两端有多"平"
为什么 ReLU 成了默认选择看它的图像有多"简单"

带着"这是什么形状、两端怎么样、中间怎么样"的问题去看每一个函数,会比死记公式记得更牢。


五种基础函数图像

线性函数:y = kx + b

形状是一条直线。 是斜率,决定倾斜程度和方向(k>0 向右上,k<0 向右下); 是截距,决定直线与 y 轴的交点。

定义域、值域都是全体实数,变化率(斜率)处处相同,这是"线性"这个词的含义。

在 AI 中的角色:神经元最基础的运算 正是一条高维空间中的线性函数。权重控制方向和倾斜程度,偏置控制整体平移。

二次函数:y = ax² + bx + c

形状是一条抛物线。 开口向上(碗状),有最小值; 开口向下(倒扣的碗),有最大值。

顶点是曲线的转折点,可以用配方法求出:,图像关于顶点所在的竖直线对称。

在 AI 中的角色:最简单的凸函数长这样。均方误差损失(MSE)在很多简化场景下就接近这种"碗状"曲面--梯度下降在碗状曲面上非常容易找到最低点,因为无论从哪个方向下山,都会走向同一个谷底。

指数函数:y = aˣ(a>0 且 a≠1)

形状是一条不断加速上升(a>1 时)或不断衰减(0<a<1 时)的曲线,永远不会碰到 x 轴,x 轴是它的水平渐近线。

定义域是全体实数,值域是 。输入线性增长,输出是"爆炸式"增长,这是指数函数最核心的性质。

在 AI 中的角色:softmax 里的 、Adam 优化器动量项里的指数衰减,都是在利用"放大差异"或"逐渐遗忘"的性质。

对数函数:y = logₐx(a>0 且 a≠1)

和指数函数正好是"镜像"关系(以直线 y=x 为对称轴)。曲线在 x 从 0 开始迅速上升,然后增长越来越慢。

定义域是 ,值域是全体实数。输入越大,增长越慢,与指数函数完全相反。

在 AI 中的角色:交叉熵损失里的 ,正是利用对数"在 0 附近极其陡峭、在 1 附近趋于平缓"的形状--模型越自信却错得越离谱,惩罚越重。

三角函数:y = sin(x)、y = cos(x)

形状是波浪线,不断重复(周期性),永远在 -1 到 1 之间摆动(有界性)。sin(x) 从原点出发向上,cos(x) 在 x=0 处达到最大值 1。

周期为 ,值域是

在 AI 中的角色:Transformer 的位置编码直接用不同频率的 sin/cos 波形叠加,给序列中每个位置生成一个独特又有规律的"坐标"(第三章展开)。

交互演示:五种基础函数图像画廊
点击按钮切换函数,下方信息卡同步更新形状特征与 AI 角色。

三种关键的 AI 激活函数

激活函数是神经网络每一层的"非线性来源",它们的形状直接决定了训练的难易。

sigmoid:σ(x) = 1 / (1 + e⁻ˣ)

形状是一条 S 形曲线,从 0 缓慢爬升到 1,中间(x=0 附近)爬升最快,两端趋于平坦。

值域是开区间 ,常被解释为"概率"。

最大的副作用:两端的斜率趋近于 0。当输入的绝对值很大时(比如 x=10 或 x=-10),sigmoid 曲线几乎是平的,梯度几乎为零。

在深层网络里,如果很多层都用 sigmoid,梯度在反向传播时会被这些"平坦区域"一层层削弱,最终传不到前面的层--这就是梯度消失问题最直观的几何来源。

ReLU:f(x) = max(0, x)

形状是一条折线:x<0 时贴着 x 轴(输出恒为 0),x≥0 时是一条斜率为 1 的直线。

负半轴导数恒为 0,正半轴导数恒为 1,没有 sigmoid 那种"逐渐变平"的过程,计算也极其简单(只需一次比较)。

正半轴的梯度永远是 1,不会随输入变大而衰减,大大缓解了梯度消失问题,这是 ReLU 成为默认激活函数的直觉原因。

它也有自己的问题:负半轴梯度恒为 0,可能导致某些神经元"死掉"不再更新--这从图像形状上也能直接看出来。

tanh:f(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ)

和 sigmoid 很像的 S 形曲线,但以原点为中心、值域是

相比 sigmoid,tanh 的输出以 0 为中心。如果下一层网络的输入均值接近 0,训练往往更稳定,这是 tanh 在某些场景更受欢迎的原因。

但它并没有解决"两端变平"的根本问题,这也是后来 ReLU 系列函数流行起来的背景。

交互演示:激活函数及其导数
切换激活函数,实线是函数本身,虚线是它的导数(斜率)。注意观察导数曲线的峰值和两端的衰减情况。
sigmoid 的导数最大值只有 0.25,且在 |x| > 4 时几乎为 0--多层连乘后梯度迅速消失,这就是"梯度消失"的几何来源。

交叉熵为什么用 -log(p)

二分类问题里,模型预测"正确类别"的概率为 ,交叉熵损失就是

直觉上你可能会想:用 当损失不是更简单吗?两条曲线放在一起,差距立刻可见。

交互演示:-log(p) 与 1-p 的惩罚对比
拖动滑块改变模型预测概率 p,观察两种损失给出的惩罚差异。当 p 很小(模型自信地犯错)时,-log(p) 的惩罚远大于 1-p。
蓝色是 -log(p),绿色是 1-p。前者在 p → 0 时冲向无穷大,后者最多只到 1。

实例

# 亲手算一遍:梯度消失与 -log(p) 的惩罚
import math

# ---- 第一部分:sigmoid 导数随 |x| 增大而衰减 ----
def sigmoid(x):
    return 1 / (1 + math.exp(-x))

def sigmoid_grad(x):
    s = sigmoid(x)
    return s * (1 - s)     # sigmoid 的导数公式

print(sigmoid_grad(0))    # 峰值处:0.25,已经是 sigmoid 导数的最大值
print(sigmoid_grad(5))    # |x|=5 时:只剩不到 0.007
print(sigmoid_grad(10))   # |x|=10 时:约 0.0000456,梯度几乎消失

# ---- 第二部分:-log(p) 的惩罚增长 ----
for p in [1.0, 0.5, 0.1, 0.01]:
    print(p, -math.log(p))   # p 越小惩罚越陡,p=0.01 时惩罚已达 4.6

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

0.25
0.006648056670790155
4.5395807735957664e-05
1.0 0.0
0.5 0.6931471805599453
0.1 2.302585092994046
0.01 4.605170185988091

两个数字值得记住:sigmoid 导数的峰值只有 0.25;p 从 0.5 降到 0.01 时, 的惩罚从 0.69 涨到 4.6。


把"形状直觉"用起来的三个场景

场景看什么形状判断依据
判断损失函数是否好优化曲面是否接近"碗状"(凸)越接近碗状,梯度下降越容易找到全局最低点;坑坑洼洼(非凸)可能陷入局部最优
判断激活函数是否拖慢训练图像两端是否"变平"越平,梯度消失问题越明显
判断函数是否适合做概率输出值域是否有界值域压缩在 (0,1) 类区间才能解释成概率,这是 sigmoid、softmax 被选中的直接原因

练习:不看公式,只凭直觉判断--ReLU 和 sigmoid,哪一个更适合放在网络的最后一层做"二分类概率输出"?为什么?

点击查看答案

sigmoid 更适合,因为它的值域是 ,天然可以解释成"属于某一类的概率"。

ReLU 的值域是 ,没有上界,不能直接当作概率使用。


本章小结

函数形状关键词对应 AI 概念
线性函数直线,处处斜率相同神经元的加权求和 wx+b
二次函数碗状 / 倒扣碗状损失函数曲面(凸函数直觉)
指数函数加速上升或衰减softmax、动量项
对数函数增长越来越慢交叉熵损失
三角函数周期性波浪位置编码
sigmoidS 形,两端变平概率输出,梯度消失的来源
ReLU折线,负半轴归零默认激活函数
tanhS 形,以 0 为中心需要"零均值输出"的场景