深度学习入门
神经网络基础
生物神经元启发
结构类比
生物神经元 → 人工神经元
树突 → 输入连接
细胞体 → 求和与激活
轴突 → 输出连接
突触 → 权重参数
数学模型
# 基本神经元计算
z = Σ(wi × xi) + b
a = activation(z)
其中:
- xi: 输入特征
- wi: 连接权重
- b: 偏置项
- activation: 激活函数
激活函数
Sigmoid 函数
σ(x) = 1 / (1 + e^(-x))
特点:
- 输出范围:(0, 1)
- 平滑可导
- 梯度消失问题
Tanh 函数
tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))
特点:
- 输出范围:(-1, 1)
- 零中心化
- 仍有梯度消失
ReLU 函数
ReLU(x) = max(0, x)
特点:
- 计算简单
- 缓解梯度消失
- Dead ReLU 问题
Leaky ReLU
LeakyReLU(x) = max(αx, x), α << 1
特点:
- 解决 Dead ReLU
- 保持稀疏激活
网络架构
前馈神经网络
多层感知机(MLP)
输入层 → 隐藏层1 → 隐藏层2 → ... → 输出层
通用近似定理
- 单隐藏层网络可近似任意连续函数
- 隐藏层神经元数量决定表达能力
- 深度网络更高效
卷积神经网络(CNN)
核心组件
卷积层
# 卷积运算
output[i, j] = Σ Σ input[m, n] × kernel[i-m, j-n]
特点:
- 局部连接
- 权重共享
- 平移不变性
池化层
# 最大池 化
output[i, j] = max(input[2i:2i+2, 2j:2j+2])
# 平均池化
output[i, j] = mean(input[2i:2i+2, 2j:2j+2])
经典架构
LeNet-5(1998)
- 输入层:32×32 图像
- 卷积层:6个 5×5 卷积核
- 池化层:2×2 平均池化
- 全连接层:120 + 84 + 10
AlexNet(2012)
- 更深网络:8层
- ReLU 激活函数
- Dropout 正则化
- 数据增强
VGG(2014)
- 统一 3×3 卷积核
- 16-19 层深度
- 简单有效的设计
ResNet(2015)
# 残差连接
output = F(x) + x
特点:
- 解决梯度消失
- 支持极深网络
- 易于优化
循环神经网络(RNN)
基础 RNN
# 隐藏状态更新
ht = tanh(Wx × xt + Wh × h(t-1) + bh)
# 输出计算
yt = Wy × ht + by
LSTM(长短期记忆网络)
# 遗忘门
ft = σ(Wf × [ht-1, xt] + bf)
# 输入门
it = σ(Wi × [ht-1, xt] + bi)
C̃t = tanh(WC × [ht-1, xt] + bC)
# 候选记忆
Ct = ft × Ct-1 + it × C̃t
# 输出门
ot = σ(Wo × [ht-1, xt] + bo)
ht = ot × tanh(Ct)
GRU(门控循环单元)
# 更新门
zt = σ(Wz × [ht-1, xt])
# 重置门
rt = σ(Wr × [ht-1, xt])
# 候选隐藏状态
h̃t = tanh(W × [rt × ht-1, xt])
# 新隐藏状态
ht = (1 - zt) × ht-1 + zt × h̃t
训练技术
反向传播算法
链式法则
# 梯度计算
∂L/∂w = ∂L/∂a × ∂a/∂z × ∂z/∂w
其中:
- L: 损失函数
- a: 激活输出
- z: 加权输入
- w: 权重参数
计算图
- 前向传播:计算输出
- 反向传播:计算梯度
- 参数更新:梯度下降