【论文解读】神经网络就像“数学乐高积木”:多层前馈网络如何用简单函数拼接复杂世界

K. Hornik, M. Stinchcombe, and H. White. Multilayer feed- forward networks are universal approximators. Neural Net- works, 2(5):359-366, 1989 论文解读

神经网络就像"数学乐高积木":多层前馈网络如何用简单函数拼接复杂世界

第一节:通俗解释------万能近似定理的核心思想

万能近似定理 (Universal Approximation Theorem)揭示了多层前馈神经网络的本质能力:用简单的非线性函数像搭乐高积木一样,拼接出任何连续函数。就像用无数小积木块能搭出任意形状的城堡,神经网络通过组合隐藏层的激活函数(如Sigmoid、ReLU),能以任意精度逼近定义在有限空间内的复杂函数。

核心结论
  • 隐藏层是核心:只需1个足够宽的隐藏层,就能逼近任意连续函数。
  • 激活函数是关键:激活函数必须是非线性的(如Sigmoid),多项式函数无效。
  • 逼近误差可控:隐藏层神经元越多,逼近精度越高(误差与神经元数量成反比)。

第二节:公式解释与案例

公式1:神经网络输出表达式

f ( x ) = W 2 ⋅ σ ( W 1 x + b 1 ) + b 2 f(x) = W_2 \cdot \sigma(W_1 x + b_1) + b_2 f(x)=W2⋅σ(W1x+b1)+b2

符号 解释 类比
x x x 输入向量 乐高积木的"原材料"
W 1 , b 1 W_1, b_1 W1,b1 隐藏层权重和偏置 积木的"连接方式"
σ ( ⋅ ) \sigma(\cdot) σ(⋅) 激活函数(如Sigmoid) 积木的"形状变换器"
W 2 , b 2 W_2, b_2 W2,b2 输出层权重和偏置 最终拼接的"胶水"

意义 :通过非线性激活 σ \sigma σ将线性变换 W 1 x + b 1 W_1 x + b_1 W1x+b1映射到高维空间,再组合成目标函数。缺点:理论要求隐藏层宽度无限,实际需权衡计算资源。


公式2:Sigmoid激活函数

σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1

  • 作用:将任意输入压缩到(0,1),引入非线性(类似开关控制信息流动)。
  • 案例 :拟合曲线 y = sin ⁡ ( x ) y = \sin(x) y=sin(x)时,多个Sigmoid函数叠加可模拟波形起伏。

公式3:逼近误差边界

∥ f ( x ) − g ( x ) ∥ < ϵ \|f(x) - g(x)\| < \epsilon ∥f(x)−g(x)∥<ϵ

  • ϵ \epsilon ϵ为逼近误差,隐藏神经元数量 N N N满足 N ∝ 1 / ϵ d N \propto 1/\epsilon^d N∝1/ϵd( d d d为输入维度)。
  • 意义高维问题需要指数级神经元,解释深度学习为何依赖深层网络而非单纯拓宽。

第三节:公式探索与推演

相似公式对比
公式 表达式 特点 适用场景
ReLU激活 σ ( z ) = max ⁡ ( 0 , z ) \sigma(z) = \max(0, z) σ(z)=max(0,z) 计算高效,缓解梯度消失 深度网络
Tanh激活 σ ( z ) = e z − e − z e z + e − z \sigma(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}} σ(z)=ez+e−zez−e−z 输出零中心化,梯度更稳定 RNN、GAN
多项式函数 σ ( z ) = z 2 \sigma(z) = z^2 σ(z)=z2 无法满足万能近似条件 线性逼近

关键差异 :ReLU和Tanh虽非线性,但Hornik证明只要激活函数是非多项式的连续函数,即可实现万能逼近


推导过程:从泰勒展开看函数逼近

假设目标函数 g ( x ) g(x) g(x)可展开为:
g ( x ) ≈ ∑ k = 0 ∞ a k x k g(x) \approx \sum_{k=0}^\infty a_k x^k g(x)≈k=0∑∞akxk

神经网络通过隐藏层 组合非线性项 σ ( w x + b ) \sigma(w x + b) σ(wx+b),等价于用非多项式基函数重构 g ( x ) g(x) g(x)。例如Sigmoid的泰勒展开包含无限高阶项,从而覆盖多项式无法表达的复杂度。


第四节:代码实现------用Keras验证万能近似定理

功能演示
  1. 拟合正弦函数 :用单隐藏层网络逼近 y = sin ⁡ ( x ) y = \sin(x) y=sin(x)。
  2. 激活函数对比:Sigmoid vs ReLU的逼近效果差异。
  3. SHAP解释:可视化神经元对预测的贡献。
python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
from sklearn.model_selection import train_test_split
import shap

# 生成数据
X = np.linspace(-3, 3, 1000).reshape(-1, 1)
y = np.sin(X) + 0.1 * np.random.randn(*X.shape)

# 构建模型(单隐藏层,10个神经元)
model = keras.Sequential([
    keras.layers.Dense(10, activation='sigmoid', input_shape=(1,)),
    keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')

# 训练并预测
history = model.fit(X, y, epochs=500, verbose=0)
y_pred = model.predict(X)

# 可视化
plt.figure(figsize=(10, 6))
plt.scatter(X, y, s=5, label='Noisy Data', alpha=0.4)
plt.plot(X, y_pred, c='red', lw=2, label='NN Prediction')
plt.title('Universal Approximation: Sin Wave Fitting', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.6)
plt.legend()
plt.show()

# SHAP解释
explainer = shap.DeepExplainer(model, X[:100])
shap_values = explainer.shap_values(X[:10])
shap.summary_plot(shap_values, X[:10], plot_type='bar')
代码输出分析
  • 拟合效果 :红色曲线紧密贴合噪声数据,证明网络捕捉了 sin ⁡ ( x ) \sin(x) sin(x)的主成分。
  • SHAP解释:条形图显示不同隐藏神经元对预测的贡献度,反映函数拼接过程。

关键词:

#万能近似定理

#UniversalApproximation

#激活函数

#Sigmoid

#ReLU

#函数逼近

#神经网络架构

#SHAP解释

#Keras

相关推荐
夏文强几秒前
DeepSeek Harness 权限与审批:给 Agent 上一把 human-in-the-loop 的安全阀
人工智能·开源·大模型·agent·deepseek
陕西企来客3 分钟前
2026年9月西安 AI 搜索优化是什么?功能与价值解读
人工智能·西安 ai 搜索优化是什么
Allen_LVyingbo10 分钟前
医疗AI基础2026-构建可靠智能体的编程路径(上)
大数据·数据库·人工智能·python·自动化
MetaLite21 分钟前
AI编程与工程底座-让AI遵守SpringBoot边界
人工智能·spring boot·ai编程
angered27 分钟前
「AI 应用 / AI Agent」行业日报 · 2026-09-05
人工智能·ai编程
CAIE注册人工智能工程师28 分钟前
突发!GPT-6刚刚开放使用、上线API,能体验AGI模型了
人工智能·gpt·agi
进击切图仔35 分钟前
Autodl 平台接受客户端端口数据
人工智能
新知图书37 分钟前
第8章 智能体设计模式5:上下文工程
人工智能·智能体
IT_陈寒40 分钟前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
熊野君1 小时前
第 7 章 AI时代产品经理新增能力
大数据·人工智能·经验分享·职场和发展·产品经理