MLP 专题
UAT:为什么 MLP 可以逼近连续函数
“只要展开项足够多,就可以拟合一切”这句话背后有一个共同数学结构:用许多简单函数的线性组合逼近复杂函数。傅立叶级数用固定的正弦/余弦基函数,MLP 用可学习的非线性基函数。UAT 说明的是后者的表达能力边界。
同一个逼近模板
f(x) ~= sum_{j=1}^N alpha_j phi_j(x)
Fourier: phi_j in {sin(kx), cos(kx)}
MLP: phi_j(x) = sigma(w_j^T x + b_j)01 / 直觉
一句话应改成更精确的数学说法
“拟合一切”不能理解成无条件拟合任何对象。更精确的说法是:在给定函数空间、给定误差度量、给定定义域和正则条件之后,一组足够丰富的简单函数族可以在该空间里稠密。稠密的意思是:目标函数 f 和模型函数 g 之间的距离可以小于任意 epsilon。
For every f in a function space F and every epsilon > 0,
there exists g in model class G such that
distance(f, g) < epsilon.傅立叶级数和 MLP 的 UAT 都是这个模板的实例。区别在于:傅立叶的基函数通常先固定,模型只决定每个频率放多少;MLP 的隐藏单元位置、方向、尺度和输出权重都可以学习。
02 / 定理
通用逼近定理的标准陈述
设 K 是 R^d 中的紧致集,C(K) 是 K 上所有连续函数构成的空间,并用 sup norm 衡量误差。如果激活函数 sigma 满足合适条件,例如非多项式连续激活,或 Cybenko 原始定理中的有界、连续、非恒定 sigmoidal 激活,则单隐层网络在 C(K) 中稠密。
Given f in C(K) and epsilon > 0,
there exist N, alpha_j, w_j, b_j such that
sup_{x in K} | f(x) - sum_{j=1}^N alpha_j sigma(w_j^T x + b_j) | < epsilon.这个定理的关键词是“存在”。它说明足够宽的 MLP 表达能力够强,但不说明训练算法一定找到这些参数,也不说明有限样本上一定泛化。
03 / 证明
Cybenko 风格证明:用测度分离推出稠密性
下面是常见的证明骨架。它不靠“画图直觉”,而是用泛函分析说明:如果 MLP 不能逼近所有连续函数,就会存在一个非零测度能把所有隐藏单元都积分成 0;但 sigmoidal 单元可以逼近半空间指示函数,最后迫使这个测度在所有半空间上都是 0,于是测度只能是 0,矛盾。
反设:网络张成空间不稠密
令 H 表示所有有限和 sum alpha_j sigma(w_j^T x + b_j)。如果 H 在 C(K) 中不稠密,则存在某个连续函数无法被 H 任意逼近。
Hahn-Banach + Riesz 表示
由 Hahn-Banach 分离定理,存在一个非零连续线性泛函 L,使得 L(h)=0 对所有 h in H 成立。Riesz 表示定理告诉我们,C(K) 上的连续线性泛函可写成对某个有限 signed Borel measure mu 的积分。
L(h) = int_K h(x) d mu(x)
Therefore for every w and b:
int_K sigma(w^T x + b) d mu(x) = 0.缩放 sigmoid,得到半空间
sigmoidal 激活满足 t -> +infty 时趋近 1,t -> -infty 时趋近 0。把 sigma(w^T x+b) 换成 sigma(lambda(w^T x+b)),令 lambda -> infinity。除边界超平面外,它逐点趋近半空间指示函数。
sigma(lambda(w^T x + b)) -> 1{w^T x + b > 0}
So, for almost every boundary shift b:
mu({x in K: w^T x + b > 0}) = 0.所有半空间为零,推出测度为零
对任意方向 w,把 mu 推送到一维直线:nu_w(B)=mu({x: w^T x in B})。上一步说明所有半直线的 nu_w 质量都为 0,因此 nu_w=0。于是 mu 的傅立叶变换在所有频率上为 0。由有限测度的唯一性定理,mu=0。
hat_mu(xi) = int_K exp(i xi^T x) d mu(x)
= int_R exp(i t) d nu_xi(t)
= 0 for every xi.
Thus mu = 0, contradicting that L was nonzero.04 / 构造直觉
一维 ReLU:用折线逼近连续函数
对 ReLU,最直观的推导可以从一维开始。ReLU 单元 (x-t)_+ 是一个从 t 处开始改变斜率的“折点”。多个 ReLU 相加,就能在不同位置放置折点,从而表示任意连续折线函数。
p(x) = beta_0 + beta_1 x + sum_{i=1}^{m-1} c_i (x - t_i)_+
If slopes on intervals are s_1, s_2, ..., s_m,
then c_i = s_{i+1} - s_i.因为闭区间上的连续函数一致连续,所以只要网格足够细,目标函数 f 的折线插值 p 就能满足 sup_x |f(x)-p(x)| < epsilon。折线 p 又可以写成有限个 ReLU 的线性组合,所以一维情形下 UAT 的构造直觉非常直接:隐藏单元越多,可放置的折点越多。
05 / 傅立叶对比
傅立叶级数:固定正交基上的投影
傅立叶级数的核心是:在周期区间上,用一组固定的正交基函数 sin(kx)、cos(kx) 表示函数。对平方可积的周期函数,傅立叶部分和是投影到有限频率子空间的结果。
f(x) ~ a_0/2 + sum_{k=1}^N [a_k cos(kx) + b_k sin(kx)]
a_k = (1/pi) int_{-pi}^{pi} f(x) cos(kx) dx
b_k = (1/pi) int_{-pi}^{pi} f(x) sin(kx) dx正交性带来一个非常清楚的误差分解。若用复指数写 c_k=(1/2pi) int f(x)e^{-ikx}dx,则 Parseval 恒等式说明能量可以按频率分解,截断误差就是被丢掉的高频能量。
||f - S_N f||_2^2 = 2pi * sum_{|k| > N} |c_k|^206 / 关键边界
UAT 和傅立叶都不等于“免费拟合一切”
存在性
UAT 只保证存在某组参数,不保证训练过程容易找到。
函数空间
傅立叶结果要说明周期性、L2、连续性或光滑性等条件。
泛化
训练误差小不代表样本外表现好;仍需要验证集、正则化和研究设计。
所以最准确的一句话是:傅立叶展开和 MLP 的 UAT 都说明“复杂函数可由大量简单函数叠加近似”;但傅立叶使用固定正交频率,MLP 使用可学习非线性单元。二者共享逼近思想,但数学条件、误差范数、计算方式和失败模式都不同。
参考文献
- Cybenko (1989), Approximation by Superpositions of a Sigmoidal Functionhttps://doi.org/10.1007/BF02551274
- Hornik, Stinchcombe, and White (1989), Multilayer Feedforward Networks are Universal Approximatorshttps://doi.org/10.1016/0893-6080(89)90020-8
- Leshno et al. (1993), Multilayer Feedforward Networks with a Nonpolynomial Activation Function can Approximate Any Functionhttps://doi.org/10.1016/S0893-6080(05)80131-5
- Stein and Shakarchi, Fourier Analysis: An Introductionhttps://press.princeton.edu/books/hardcover/9780691113845/fourier-analysis