跳转至

P2-2.4 为什么 log 与 exp 会反复出现

Section ID: P2-2.4 Version: v2026.07.20

把极限重新接上之后,在后面的机器学习与深度学习说明里,仍然还有一些经常卡住读者的记号。像 logexpe^x 这样的表达就是代表。它们不是额外的高级数学装饰,而是在说明 数值增长或缩小得有多快怎样把乘法关系重新读成加法关系怎样处理像概率一样的分数 时反复会出现的语言。

这里要把对数(logarithm)和指数(exponential)重新接成阅读 逻辑回归(logistic regression)对数损失(log loss)softmax 所需的最小计算语言。需要快速回看术语时,也可以一起查看概念词汇表

核心判断标准:为什么 log 与 exp 会反复出现

  • 能把 exp(x) 读成 e 的幂。
  • 能说明 log(x) 是沿着指数反方向读取的函数。
  • 能建立这样的直觉:指数描述重复的比率变化,而对数负责把这个比率重新读回来。
  • 能说明为什么乘法关系会在对数空间里被重新读成加法关系。
  • 能说明为什么对数与指数会在 逻辑回归(logistic regression)激活函数(activation function)softmax 的说明里反复出现。

先抓住的一个场景

在本节里,最先要抓住的是下面这四行。

表达 现在先这样读 后面再次出现的位置
exp(2) \approx 7.39 把分数 2 拉成更大权重的计算 sigmoid, softmax
log(exp(2)) = 2 把送进指数空间的值重新读回原坐标轴 logit, log-odds
0.9 x 0.8 x 0.7 = 0.504 直接把概率相乘,数值会很快变小 likelihood, joint probability
log(0.9) + log(0.8) + log(0.7) 把乘法重新读成加法 log loss, log-likelihood

也就是说,对数与指数不是另一套数学装饰,而是在从 分数 -> 比率 -> 类似概率的值 -> 损失 过渡时,让计算更容易读懂的语言。

三个基准

基准 为什么重要 本节需要的理解水平
指数是记录重复 同比率 的语言 因为它能避免把线性增长和比率增长混在一起。 理解 e^x 是在表达增长速度怎样被放大。
对数是沿着指数反方向读取 因为这样可以把 log 看成反着读的函数,而不是把它硬记成新符号。 理解 explog 处在相反方向上。
对数与指数是后面各 Part 解释分数的语言 因为这样能避免损失、概率、softmax 看起来像突然出现的陌生符号。 这里只要先抓住它们为什么会反复出现就够了。

指数是同一比率的重复变化

如果说加法让人更容易看见 是不是在重复加同样的量,那么指数可以理解成让人更容易看见 是不是在按同样的比率重复变大或变小

\[ e^x \]

这个记号表示以 e 为底(base)的指数函数。这里重要的是,即使 x 只增加一点,数值增长的方式也会以不同于线性(linear)的方式加快。

例如当 x 增加到 1、2、3 时:

  • x 本身每次都线性地增加 1。
  • e^x 即使面对同样的 1 的增长,也会以更大的比率变大。

因此,在需要读出 一开始很小的差异,越往后会拉成更大差异的结构 时,指数就会经常出现。

把“每次加同样的量”的变化和“按同样比率增长”的变化放在一起,差异会更清楚。

步骤 线性增长例子:每次 +10 比率增长例子:每次 x1.1
起点 100 100
1 步后 110 110
2 步后 120 121
3 步后 130 133.1

刚开始看时,两种变化好像差不多,但步数一增加,比率增长就会越来越快。指数函数正是这种比率变化的语言。

对数是在反过来读指数

对数(log)是在反过来追问:要得到这个值,在指数那一侧到底放进去了什么?

\[ \log(x) \]

看到这个式子时,可以把它理解成重新读出 到底是哪个指数输入产生了 x

例如:

  • exp(2) 就是 e^2
  • log(e^2) 会重新回到 2。

所以对数和指数,其实是沿着相反方向运动的函数。

正向读取 反向读取
exp(x) log(x)
它按多大的比率增长? 要得到这个值,指数那边原来是多少?

最短地确认这个直觉的三个值如下。

式子 读法
exp(0) = 1 如果指数侧输入是 0,就会回到基准大小 1。
log(1) = 0 可以把 1 读成指数变化还没施加之前的基准点。
log(exp(x)) = x 对数会把送进指数空间的值重新拉回原坐标轴。

为什么乘法一遇到对数就像加法

对数之所以常用,是因为它会把计算结构改成更容易阅读的形式。

  • 在对数空间里,乘法会像加法一样被读取。
  • 在对数空间里,除法会像减法一样被读取。

对初学者来说,关键不是背公式,而是抓住这种直觉:在处理 非常小或非常大的数的乘积 时,对数会让计算不那么不稳定,也让比较更容易。

例如,假设要把三个概率相乘。

\[ 0.9 \times 0.8 \times 0.7 = 0.504 \]

如果再加入更多数值,这样的乘积会很快变小。但一旦取对数,乘积就会被重新读成

\[ \log(0.9 \times 0.8 \times 0.7) = \log(0.9) + \log(0.8) + \log(0.7) \]

这样改写后,就能更容易拆开去看多个项各自的贡献。因此在机器学习里,比起直接相乘概率,更常见的是先取对数,再把它读成损失或分数的场景。

这里读者马上要抓住的只有一个问题。

现在看到的场景 先问自己的问题
数值一步一步按 x1.1x1.2 这样增长 这是按同样的量增长,还是按同样的比率增长?
好几个小概率不断相乘 它会不会变得太小,以致难以阅读?
想把分数变得像概率一样 是不是先用指数把相对权重拉开?
想强烈惩罚错误的概率预测 是不是要靠对数更敏感地读出概率差距?

这个视角在后面的模型说明里尤其重要。

  • 在 Part 4 里,读 log loss 为什么会那样惩罚概率预测时需要它。
  • 在 Part 6 里,追踪 softmax 为什么会把多个分数变成像概率一样可读的值时也需要它。

这个计算会再次出现的场景

对数与指数并不会在本节里就此结束。这里只是先做最小准备,让它们在下面这些场景里不会突然显得陌生。

后面会再次遇到的场景 这里先留下的直觉
逻辑回归里的 sigmoid 指数函数可以用来把分数变成 0 到 1 之间的值。
log loss 对数是一种会更强烈惩罚“错得很自信”的概率的语言。
softmax 把多个分数重新读成可比较概率的过程中,会用到指数和对数的直觉。

因此,本节的核心是:对数与指数不是数学考试题,而是解释分数的语言。

一个很短的计算例子

即使是同样的线性分数,也不能立刻把它读成概率。所以后面会出现这样的转换。

  1. 先计算一个分数(score)。
  2. 再用指数函数处理这个分数,或者用 log loss 去读取它。
  3. 然后把结果像概率一样比较,或者把它打包成损失。

例如,如果两个候选的分数是 21,分数差是 1,但它本身还不是概率。此时如果取指数:

\[ e^2 \approx 7.39,\quad e^1 \approx 2.72 \]

较大的分数就会得到大得多的权重。把这些值再除以它们的总和,就会像 softmax 一样,准备好被读成 可比较的比率

如果把这个场景再更简短地写成表,就是下面这样。

步骤 计算 读到的是什么
原始分数 2, 1 还只是简单分数,不是概率
应用指数 exp(2) \approx 7.39, exp(1) \approx 2.72 给更大的分数更大的权重
用总和归一化 7.39 / (7.39 + 2.72) 准备变成可比较的比率

反过来,如果把“正确概率预测得很好是 0.9”和“严重预测错了是 0.1”这两种情况用对数来读,错误的那一边会受到更大的惩罚。这就是为什么对数损失(log loss)会更强烈地惩罚 错了但又很自信的预测

按同样的标准去看 -log(p)

正确概率 p -log(p) 的感觉
0.9 损失很小
0.5 损失会更大
0.1 损失会变得很大

所以,对数损失会朝着更强烈惩罚 模型明明很自信却预测错了 的方向工作。

对数与指数,是在分数、概率、损失之间来回移动时,让计算更容易读懂的语言。

检查清单

  • 能把 exp(x) 读成 e 的幂吗?
  • 能说明为什么 log(x) 是在反过来读指数吗?
  • 能说出“按同样的量增长”和“按同样的比率增长”的差别吗?
  • 能说明为什么把几个相乘的概率取 log 后会更容易读吗?
  • 能说明为什么在 softmaxlog loss 里,对数与指数会再次出现吗?
  • 能把指数与对数连成 同比率增长把乘法改读成加法把分数变成概率与损失的计算 来说明吗?

来源与参考资料