初始化:从 docx 拆分为独立 Markdown 章节
将《设计人工智能:基础与应用》拆分为 38 个 Markdown 文件, 按 11 个部分(上篇6部分+下篇5部分)+ 3 个附录组织。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
|
||||
### 学习目标
|
||||
|
||||
理解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
|
||||
Reference in New Issue
Block a user