《深度学习基础》
深度学习是以多层神经网络为核心、以数据驱动学习特征的机器学习分支。本文整理神经网络的基础概念:神经元、激活函数、前向/反向传播、损失与优化。
1 参考教材
- 深度学习书(花书,免费英文版):https://www.deeplearningbook.org
2 基本组成
2.1 神经元
单个人工神经元对输入做「加权求和 + 偏置 + 非线性激活」:
z = w1*x1 + w2*x2 + ... + b
y = f(z)
2.2 激活函数
引入非线性,使多层网络能够拟合复杂函数:
| 函数 | 公式 | 特点 |
|---|---|---|
| ReLU | max(0, x) |
默认首选,缓解梯度消失,计算快 |
| Sigmoid | 1 / (1 + e^-x) |
输出 (0,1),适合二分类输出层 |
| Tanh | (e^x-e^-x)/(e^x+e^-x) |
输出 (-1,1),零中心 |
| Softmax | 归一化指数函数 | 多分类输出层,输出各类概率 |
2.3 层与网络
- 全连接层(Dense):每个神经元连接上一层的所有神经元。
- 卷积层(Conv):局部连接 + 权值共享,适合图像。
- 循环层(RNN/LSTM):处理序列数据。
- 深度:层数越多,网络可表达的函数越复杂,但也越容易过拟合。
3 训练过程:前向 + 反向传播
1. 前向传播:输入 -> 逐层计算 -> 输出预测值
2. 计算损失:预测值与真实值的差距(损失函数)
3. 反向传播:链式法则求出各层权重对损失的梯度
4. 更新参数:优化器沿负梯度方向调整权重(如 SGD / Adam)
5. 迭代直至收敛
# 一个最小示例(伪骨架,配合 Keras/TensorFlow)
import numpy as np
w = np.random.randn(784, 10) * 0.01
b = np.zeros(10)
lr = 0.001
for epoch in range(10):
# 前向
z = x @ w + b # logits
p = softmax(z) # 概率
loss = cross_entropy(p, y)
# 梯度(简化示意)
dw = x.T @ (p - y) / n
db = (p - y).sum(axis=0) / n
# 参数更新
w -= lr * dw
b -= lr * db
4 损失函数与优化器
| 场景 | 损失函数 |
|---|---|
| 多分类 | categorical_crossentropy(softmax) |
| 二分类 | binary_crossentropy(sigmoid) |
| 回归 | mse(均方误差) |
- SGD:基础,可加动量。
- Adam:自适应学习率,最常用,收敛快、对超参不敏感。
5 欠拟合 / 过拟合
- 欠拟合(训练集表现差):加大模型容量、加深网络、增加训练轮数。
- 过拟合(训练好、验证差):数据增强、
Dropout、L1/L2 正则、EarlyStopping、减小模型。
6 小结
理解「数据 → 网络 → 损失 → 梯度 → 更新」这条主线后,再用框架(Keras/PyTorch/Paddle)实现,就不容易被 API 细节绕晕。
参考文档
阅读 —
·
全站 —