机器学习数学基础 120 章

幂、指数、对数与换底

层级:A|必学

1. 为什么这是概率模型的日常语言

概率经常以乘积出现:一万个样本的联合似然可能是一万个小概率相乘,既难求导又会发生浮点下溢。对数能把乘法变成加法;指数能把任意实数映射为正数。逻辑回归、Softmax、交叉熵、高斯分布、指数族和神经网络数值稳定性都依赖这组工具。

2. 幂与指数

对正整数 nnana^n 表示 nnaa 相乘。扩展后有:

a0=1(a0),an=1an,a1/n=an.a^0=1\quad(a\ne0),\qquad a^{-n}=\frac1{a^n},\qquad a^{1/n}=\sqrt[n]{a}.

最常用的运算律是

aman=am+n,aman=amn,(am)n=amn.a^m a^n=a^{m+n},\qquad \frac{a^m}{a^n}=a^{m-n},\qquad (a^m)^n=a^{mn}.

不要把 (a+b)2(a+b)^2 错写成 a2+b2a^2+b^2;正确展开为 a2+2ab+b2a^2+2ab+b^2

当底数固定、指数为变量时,得到指数函数 f(x)=axf(x)=a^x。机器学习里最重要的底数是

e2.718281828,e\approx2.718281828,

因为 ddxex=ex\frac{d}{dx}e^x=e^x,求导后形式不变。ex>0e^x>0 对所有实数 xx 成立。

3. 对数是指数的逆运算

a>0a>0a1a\ne1

y=logax    ay=x.y=\log_a x \iff a^y=x.

因此 log28=3\log_2 8=3,因为 23=82^3=8。对数的定义域是 x>0x>0。常见记号:

  • lnx=logex\ln x=log_e x:自然对数,数学和机器学习默认首选;
  • log2x\log_2x:信息论常用,单位是 bit;
  • log10x\log_{10}x:十进制数量级。

很多机器学习材料直接写 logx\log x,通常指自然对数,除非上下文明确指定其他底。

4. 三条必须熟练的对数律

a,b>0a,b>0

log(ab)=loga+logb,\log(ab)=\log a+\log b, logab=logalogb,\log\frac ab=\log a-\log b, log(ar)=rloga.\log(a^r)=r\log a.

特别注意:log(a+b)\log(a+b) 没有类似的拆分规则,通常不等于 loga+logb\log a+\log b

换底公式为

logax=logbxlogba.\log_a x=\frac{\log_b x}{\log_b a}.

改变对数底只相差一个正常数倍,所以用不同底计算熵时,大小关系不变,但数值单位不同。

5. 对数为什么把似然变简单

假设样本独立,参数为 θ\theta,似然为

L(θ)=i=1np(xiθ).L(\theta)=\prod_{i=1}^{n}p(x_i\mid\theta).

取对数得到

(θ)=logL(θ)=i=1nlogp(xiθ).\ell(\theta)=\log L(\theta) =\sum_{i=1}^{n}\log p(x_i\mid\theta).

对数函数严格递增,所以使 L(θ)L(\theta) 最大的参数也使 (θ)\ell(\theta) 最大。乘积变成求和之后:

  • 求导更容易;
  • 可按样本累加或分批计算;
  • 避免许多小于 1 的概率相乘后下溢为 0。

若每个概率约为 10310^{-3},一千个相乘是 10300010^{-3000},普通浮点数无法表示;对应的对数只需保存约 6907.8-6907.8

6. 指数与对数的图像直觉

exe^x 单调递增:负数被映射到 (0,1)(0,1)00 映射到 11,正数映射到 (1,)(1,\infty)logx\log x 也是单调递增,但只接受正数;当 x0+x\to0^+logx\log x\to-\infty

这解释了对数损失的行为:若真实类别的预测概率接近 00logp-\log p 会变得非常大,对“自信但错误”的预测施加重罚。

7. 导数与近似

常用导数:

ddxex=ex,ddxlogx=1x(x>0).\frac{d}{dx}e^x=e^x,\qquad \frac{d}{dx}\log x=\frac1x\quad(x>0).

u=u(x)>0u=u(x)>0 时,由链式法则

ddxlogu(x)=u(x)u(x).\frac{d}{dx}\log u(x)=\frac{u'(x)}{u(x)}.

x|x| 很小时,log(1+x)x\log(1+x)\approx xex1+xe^x\approx1+x。这些近似来自泰勒展开。

8. 机器学习中的典型出现方式

Logistic 函数

σ(z)=11+ez,\sigma(z)=\frac1{1+e^{-z}},

把任意实数变到 (0,1)(0,1)

Softmax

pk=ezkjezj,p_k=\frac{e^{z_k}}{\sum_j e^{z_j}},

把一组实数分数变成和为 11 的类别概率。

高斯密度

p(x)=12πσ2exp((xμ)22σ2).p(x)=\frac1{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right).

距离均值越远,负平方项越小,密度指数级下降。

交叉熵

二分类常写成

[ylogp+(1y)log(1p)].-\big[y\log p+(1-y)\log(1-p)\big].

它本质上是 Bernoulli 模型的负对数似然。

9. 数值稳定提醒

直接计算 e1000e^{1000} 会溢出。Softmax 应先减去最大分数:

ezkjezj=ezkmjezjm,m=maxjzj.\frac{e^{z_k}}{\sum_j e^{z_j}} =\frac{e^{z_k-m}}{\sum_j e^{z_j-m}},\qquad m=\max_j z_j.

分子分母同除以 eme^m,数学值不变,但所有指数输入都不大于零。计算 log(1+x)\log(1+x)ex1e^x-1 的极小 xx 时,应使用库函数 log1pexpm1 减少消去误差。

常见问答

Q1:负数能取对数吗?

在实数范围内不能。若推导中出现 logp\log p,必须保证 p>0p>0。概率为零时常通过平滑或极限处理。

Q2:取负对数为什么“最大化”变成“最小化”?

最大化 LL 等价于最大化 logL\log L;再乘 1-1 后,最大化变成最小化 logL-\log L

Q3:对数底会影响模型最优参数吗?

通常不会,因为换底只乘一个正常数,不改变最优点。但报告熵的数值时必须说明单位。

Q4:为什么 000^0 有时在程序里等于 1?

000^0 在初等分析中通常视为未定义,但组合数学和某些软件上下文会约定为 1 以保持公式统一。应根据语境判断。

练习

  1. 化简 e2xexe^{2x}e^{-x}
  2. 计算 log232\log_2 32lne3\ln e^{-3}
  3. logi=1npi\log\prod_{i=1}^n p_i 写成求和。
  4. 判断:log(x+1)=logx+log1\log(x+1)=\log x+log1
  5. 若正确类别概率分别为 0.90.90.10.1,计算两者的自然对数损失 lnp-\ln p,比较惩罚大小。
  6. 证明 Softmax 的“减最大值”写法与原式相等。

答案与提示

  1. exe^x
  2. 553-3
  3. ilogpi\sum_i\log p_i
  4. 错。
  5. 约为 0.1050.1052.3032.303,后者大得多。
  6. 分子分母同时乘 eme^{-m}