### 学习目标 理解MLP的基本结构 掌握前向传播的计算过程 了解激活函数的作用和类型 理解反向传播的基本思想 ### MLP结构 #### 什么是MLP **MLP (Multi-Layer Perceptron)**:多层感知机,是最基础的神经网络结构。 网络架构 `输入层`` ``隐藏层`` ``输出层`\ ` ┌─────────┐ ┌─────────────┐ ┌─────────┐`\ ` │ x₁ │ │ h₁ │ │ y₁ │`\ ` │ x₂ │───→│ h₂ │───→│ y₂ │`\ ` │ x₃ │ │ h₃ │ │ y₃ │`\ ` │ ... │ │ ... │ │ ... │`\ ` │ xₙ │ │ hₘ │ │ yₖ │`\ ` └─────────┘ └─────────────┘ └─────────┘`\ ` │ │ │`\ ` └───────────────┴────────────────┘`\ ` ``全连接(每个神经元相连)` #### 层次说明 ---------------------------------------- 层类型 作用 神经元数量 -------- ---------------- -------------- 输入层 接收原始数据 取决于特征数 隐藏层 特征变换与组合 自由设计 输出层 产生最终结果 取决于任务 ---------------------------------------- ### 前向传播 #### 单个神经元 `# ``线性部分`\ `z ``=`` ``w₁x``₁ ``+`` ``w₂x``₂ ``+`` ... ``+`` ``wₙx``ₙ ``+`` b`\ \ `# ``激活函数`\ `h ``=`` σ(z)` #### 完整网络 对于L层网络: `# ``第``1``层` `h₁ ``=`` σ``₁(``W₁x`` ``+`` b₁)` `# ``第``2``层` `h₂ ``=`` σ``₂(``W₂h``₁ ``+`` b₂)` `# ...` `# ``第``L``层` y = σₗ(Wₗh_{l-1} + bₗ) #### 数据流动 `输入向量`` x₀`\ ` │`\ ` ├─→ W₁, b₁ ──→ z₁ = ``W₁x``₀ + b₁`\ ` │ │`\ ` │ └─→ σ₁(z₁) = h₁`\ ` │ │`\ ` └──────────────────────────────├─→ W₂, b₂ ──→ z₂ = ``W₂h``₁ + b₂`\ ` │ │`\ ` └─→ σ₂(z₂) = h₂`\ ` │`\ ` └─→ ... → y` ### 激活函数 #### 为什么需要激活函数? 没有激活函数,多层网络就等价于单层线性变换: `y = W₂(``W₁x``) = (W₂W``₁)x`` = ``W'x` 激活函数引入**非线性**,使网络能够学习复杂模式。 #### 常用激活函数 -------------------------------------------------------------------- 激活函数 公式 特点 应用场景 ---------- ----------------------------- ------------ -------------- Sigmoid σ(z) = 1/(1+e⁻ᶻ) 输出(0,1) 二分类输出层 ReLU ReLU(z) = max(0,z) 简单高效 隐藏层首选 Softmax softmax(zᵢ) = eᶻⁱ/Σeᶻʲ 输出和为1 多分类输出层 Tanh tanh(z) = (eᶻ-e⁻ᶻ)/(eᶻ+e⁻ᶻ) 输出(-1,1) 循环网络 -------------------------------------------------------------------- #### 视觉对比 `ReLU``: Sigmoid: Tanh:`\ ` ↑ ___ ___`\ ` │ / ╲`\ ` │ / ╲`\ ` │____ / ╲___`\ ` │ ______ / │`\ ` └──────── / └──`\ ` -``∞ 0`` +∞ -∞ 0 +∞ -∞ 0 +∞` ### 损失函数与优化 #### 损失函数 损失函数衡量模型预测与真实值的差距: --------------------------------------- 任务 损失函数 公式 -------- ---------- ------------------- 回归 均方误差 MSE = Σ(ŷ-y)²/n 二分类 交叉熵 CE = -y·log(ŷ) 多分类 交叉熵 CE = -Σyᵢ·log(ŷᵢ) --------------------------------------- #### 优化目标 `最小化损失函数:`\ `min L(f(x; θ), y)`\ \ `其中`` θ = {W₁, b₁, W₂, b₂, ...} ``是所有可学习参数` #### 梯度下降 `重复直到收敛:`\ ` θ = θ - α·∇L(θ)`\ \ `其中:`\ ` θ``:参数`\ ` α``:学习率`\ ` ∇L(θ)``:损失函数的梯度` ### 反向传播 核心思想 从输出层向输入层反向计算梯度: `输出层误差`` → ``隐藏层误差`` → ... → ``输入层误差` 链式法则 `∂L/∂W₁ = (∂L/∂y) · (∂y/∂h₂) · (∂h₂/∂z₂) ·`\ ` `` (``∂z₂/∂h₁) · (∂h₁/∂z₁) · (∂z₁/∂W₁)` 直观理解 1.**前向传播**:计算每个神经元的输出 2.**计算误差**:比较输出与真实值 3.**反向传播**:将误差反向传递 4.**更新权重**:根据误差调整参数 ### MLP vs 传统模型 -------------------------------------- 特性 MLP 传统机器学习 ------------ ---------- -------------- 特征工程 自动学习 人工设计 非线性能力 强 中/弱 数据需求 大量 中等 可解释性 低 高 训练时间 长 短 -------------------------------------- ### 思考与练习 1.为什么隐藏层越多,网络表达能力越强? 2.ReLU为什么比Sigmoid更适合隐藏层? 3.如果所有权重初始化为0,会发生什么? ### 关键术语 ---------------------------------------------------------- 中文 英文 说明 ---------- ------------------ ---------------------------- 前向传播 Forward Pass 数据从输入到输出的计算过程 反向传播 Backpropagation 计算梯度的算法 损失函数 Loss Function 衡量预测误差的函数 梯度下降 Gradient Descent 优化算法 学习率 Learning Rate 参数更新的步长 ---------------------------------------------------------- ### 延伸阅读 [Neural Networks and Deep Learning - Chapter 1](http://neuralnetworksanddeeplearning.com/chap1.html) [Yes you should understand backprop](https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b) \# 01.3 编程工具与Vibe Coding