前馈神经网络 / MLP

多层感知机 - 深度学习的基础

从 Rosenblatt 感知机(1958)到现代 Transformer - 通用函数逼近器

网络结构可视化

观察数据在输入层、隐藏层和输出层中的流动

前向传播: x -> [Hidden] -> ... -> y

网络配置

动画

核心概念

FFNN:信息只沿前向流动(输入 -> 隐藏 -> 输出),没有环路

层变换演示

查看每层如何变换数据:线性变换 + 非线性激活

z = Wa + b: 线性变换
a = sigma(z): 非线性激活

权重与偏置

激活函数

为什么需要非线性?

没有激活函数:y = W2(W1x) = (W2W1)x 仍是线性!无法学习复杂模式。

激活函数画廊

比较不同激活函数及其梯度

函数详情

公式: f(x) = 1/(1+e^(-x))
范围: (0, 1)
梯度: f'(x) = f(x)(1-f(x))
优点: Smooth, differentiable
问题: Vanishing gradient

演进对比表

函数 优点 问题
Sigmoid 平滑 梯度消失
Tanh 零中心 梯度消失
ReLU 简单、快速 神经元死亡
Leaky ReLU 不易死亡 需调 alpha
GELU 平滑、有理论支持 计算复杂

万能逼近定理

MLP 可以在紧致子集上逼近任意连续函数

目标函数

定理 (Cybenko, 1989)

含有限隐藏神经元的单隐藏层前馈网络可以逼近 R^n 紧致子集上的任意连续函数

几何直觉

第1层:将空间切分为区域。更深层:通过复合形成复杂决策边界。

反向传播可视化

观察梯度如何在网络中反向流动

链式法则: dL/dW = dL/da * da/dz * dz/dW

仿真

梯度流状态

点击按钮开始

参数更新

W <- W - lr * dL/dW

每个梯度都由局部梯度与上游梯度相乘得到(链式法则)

Transformer 的 MLP 模块

理解为什么每个 Transformer Block 都包含 MLP/FFN

查看模式

为什么 Transformer 里要有 MLP?

1 Attention:Token 间交互(全局混合)
2 MLP:逐 Token 特征精炼(局部深度)
3 互补:二者共同构建丰富表征

实验观察

  • 移除 MLP -> 性能显著下降
  • 移除 30-50% Attention -> 影响较小
  • MLP 提供关键的非线性能力
FFN(x): GELU(xW1 + b1)W2 + b2
典型维度: d_model -> 4d_model -> d_model

网络设计

小数据: 2-4 layers
大数据: 5-20 layers
宽度经验: 2-10x input dim

初始化方法

ReLU Family -> He/Kaiming Init
Sigmoid/Tanh -> Xavier/Glorot Init

正则化

  • L2 权重衰减(防止权重过大)
  • Dropout(随机失活)
  • BatchNorm / LayerNorm(稳定训练)
  • Early Stopping(防止过拟合)

真实应用

1
房价预测 基于表格特征的回归
2
欺诈检测 交易数据上的二分类
3
医学诊断 病人数据上的多分类

历史时间线

1958 Rosenblatt:感知机
1986 Rumelhart/Hinton:反向传播
2011 ReLU 革命
2017 Transformer + GELU
2018 图灵奖:Hinton、LeCun、Bengio

MLP 的局限

  • 高维输入下参数量较大
  • 不具备内置结构利用能力(相较 CNN/RNN)
  • 小数据集上容易过拟合
  • 输入尺寸通常需要固定

一句话总结

MLP = 多次 "线性变换 + 非线性激活" 复合 = 通用函数逼近器