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

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

相关推荐
谨慎谦虚17 分钟前
Trae 体验:探索被忽视的 Chat 模式
人工智能·trae
北极的树20 分钟前
AI驱动的大前端开发工作流
人工智能
IT古董36 分钟前
【漫话机器学习系列】100.L2 范数(L2 Norm,欧几里得范数)
人工智能·机器学习
ktkiko1137 分钟前
Websocket——心跳检测
网络·websocket·网络协议
小天努力学java1 小时前
【面试系列】Java开发--AI常见面试题
java·人工智能·面试
GGGGGGGGGGGGGG.1 小时前
hapxory-ACL基础介绍及案例
运维·服务器·网络
数造科技1 小时前
紧随“可信数据空间”政策风潮,数造科技正式加入开放数据空间联盟
大数据·人工智能·科技·安全·敏捷开发
@ V:ZwaitY091 小时前
如何打造TikTok矩阵:多账号管理与内容引流的高效策略
人工智能·矩阵·tiktok
lcw_lance2 小时前
人工智能(AI)的不同维度分类
人工智能·分类·数据挖掘
夏莉莉iy2 小时前
[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction
人工智能·笔记·深度学习·机器学习·语言模型·自然语言处理·transformer