四、模型
模型的定义
在机器学习和深度学习中,模型 可以定义为:
- 一个数学函数或算法,能够从输入数据中提取特征并生成输出。
- 通过训练过程,模型能够学习数据中的规律(如分类、回归、聚类等)。
- 训练完成后,模型可以用于对新数据进行预测或决策。
模型种类及其特点
目前深度学习领域主要有以下几种模型:
1. 传统深度神经网络(DNN)
- 全称: Deep Neural Network
- 特点:
- 由多个全连接层(Fully Connected Layer)堆叠而成。
- 每个神经元与前一层的所有神经元相连。
- 适合处理结构化数据(如表格数据)。
- 优点:
- 结构简单,易于实现。
- 在小型数据集上表现良好。
- 缺点:
- 参数量大,容易过拟合。
- 不适合处理图像、文本等非结构化数据。
- 应用场景:
- 分类、回归任务。
- 小型数据集上的机器学习任务。
2. 卷积神经网络(CNN)
- 全称: Convolutional Neural Network
- 特点:
- 使用卷积层(Convolutional Layer)提取局部特征。
- 通过池化层(Pooling Layer)降低特征图尺寸。
- 适合处理图像、视频等具有空间结构的数据。
- 优点:
- 参数共享,减少参数量。
- 能够捕捉局部特征,适合处理图像数据。
- 缺点:
- 对序列数据(如文本、时间序列)处理能力较弱。
- 应用场景:
- 图像分类(如 ResNet、VGG)。
- 目标检测(如 YOLO、Faster R-CNN)。
- 图像分割(如 U-Net)。
3. 循环神经网络(RNN)
- 全称: Recurrent Neural Network
- 特点:
- 具有循环结构,能够处理序列数据。
- 通过隐藏状态(Hidden State)记忆之前的信息。
- 适合处理文本、时间序列等具有时间依赖性的数据。
- 优点:
- 能够捕捉序列数据中的时间依赖性。
- 适合处理变长序列数据。
- 缺点:
- 训练过程中容易出现梯度消失或梯度爆炸问题。
- 对长序列的记忆能力有限。
- 应用场景:
- 自然语言处理(如文本生成、机器翻译)。
- 时间序列预测(如股票价格预测)。
- 语音识别。
4. 变种与扩展
(1)长短期记忆网络(LSTM)
- 特点:
- RNN 的改进版本,通过引入门控机制(输入门、遗忘门、输出门)解决梯度消失问题。
- 能够更好地捕捉长序列中的依赖关系。
- 应用场景:
- 长文本生成。
- 复杂时间序列预测。
(2)门控循环单元(GRU)
- 特点:
- LSTM 的简化版本,参数更少,计算效率更高。
- 通过更新门和重置门控制信息流动。
- 应用场景:
- 与 LSTM 类似,但更适合资源受限的场景。
(3)Transformer
- 特点:
- 基于自注意力机制(Self-Attention),完全摒弃了循环结构。
- 能够并行处理序列数据,训练效率高。
- 在自然语言处理任务中表现优异。
- 应用场景:
- 机器翻译(如 Google 的 Transformer 模型)。
- 文本生成(如 GPT 系列)。
- 文本分类(如 BERT)。
总结
模型类型 | 特点 | 适用场景 |
---|---|---|
DNN | 全连接结构,适合处理结构化数据。 | 分类、回归任务。 |
CNN | 卷积结构,适合处理图像、视频等空间数据。 | 图像分类、目标检测、图像分割。 |
RNN | 循环结构,适合处理序列数据。 | 自然语言处理、时间序列预测。 |
LSTM/GRU | RNN 的改进版本,解决梯度消失问题,适合处理长序列数据。 | 长文本生成、复杂时间序列预测。 |
Transformer | 基于自注意力机制,并行处理序列数据,训练效率高。 | 机器翻译、文本生成、文本分类。 |
层的定义
- 层 是模型中的一个计算单元,负责对输入数据进行某种数学变换。
- 每一层接收输入数据,经过计算后输出结果,传递给下一层。
- 多个层堆叠在一起,形成一个完整的模型(如神经网络)。
层的作用
1. 特征提取:
- 每一层从输入数据中提取不同层次的特征。
- 例如:卷积层提取图像的边缘、纹理等低级特征,全连接层提取高级语义特征。
2. 非线性变换:
- 通过激活函数引入非线性,使模型能够拟合复杂的函数。
3. 降维:
- 通过池化层或全连接层降低数据维度,减少计算量。
4. 正则化:
- 通过 Dropout 层或归一化层防止过拟合,提高模型的泛化能力。
激活函数
# 深度学习中的激活函数
1. 激活函数的作用
在深度学习的神经网络中,激活函数(Activation Function)用于引入非线性,使神经网络能够学习复杂的映射关系。如果没有激活函数,神经网络的每一层只是对输入进行线性变换,最终的模型等价于一个单层的线性模型,无法拟合复杂的数据分布。
2. 常见的激活函数
2.1 Sigmoid 函数
公式:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e−x1
特点:
- 输出范围为 (0,1),适用于二分类问题。
- 可能会出现梯度消失问题(当输入较大或较小时,梯度接近于0)。
- 计算较慢(包含指数运算)。
2.2 Tanh 函数(双曲正切函数)
公式:
f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=ex+e−xex−e−x
特点:
- 输出范围为 (-1,1),相比 Sigmoid,Tanh 的零均值性使其表现更好。
- 仍然可能出现梯度消失问题。
2.3 ReLU(Rectified Linear Unit)函数
公式:
f ( x ) = max ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
特点:
- 计算简单,高效。
- 解决了梯度消失问题(对于 ( x > 0 ) 时梯度为 1)。
- 存在 “死亡 ReLU” 问题(当 ( x < 0 ) 时,梯度为 0,可能导致某些神经元永远无法更新)。
2.4 Leaky ReLU(泄漏修正线性单元)
公式:
f ( x ) = { x , x > 0 α x , x ≤ 0 f(x) = \begin{cases} x, & x > 0 \\ \alpha x, & x \leq 0 \end{cases} f(x)={x,αx,x>0x≤0
特点:
- 通过给负值赋予一个小的斜率(通常 (\alpha = 0.01)),避免 ReLU 的“死亡”问题。
2.5 ELU(Exponential Linear Unit)
公式:
f ( x ) = { x , x > 0 α ( e x − 1 ) , x ≤ 0 f(x) = \begin{cases} x, & x > 0 \\ \alpha (e^x - 1), & x \leq 0 \end{cases} f(x)={x,α(ex−1),x>0x≤0
特点:
- 负值区域平滑,梯度不会消失。
- 计算复杂度较高。
2.6 Softmax 函数
公式:
f ( x i ) = e x i ∑ j e x j f(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} f(xi)=∑jexjexi
特点:
- 适用于多分类问题,将输入转换为概率分布(所有输出的总和为 1)。
- 主要用于神经网络的输出层。
3. 总结
激活函数 | 输出范围 | 是否有梯度消失 | 计算复杂度 | 适用场景 |
---|---|---|---|---|
Sigmoid | (0,1) | 是 | 高 | 二分类问题 |
Tanh | (-1,1) | 是 | 高 | 二分类问题 |
ReLU | ([0, +\infty)) | 否(可能死亡) | 低 | 隐藏层 |
Leaky ReLU | ((-\infty, +\infty)) | 否 | 低 | 隐藏层 |
ELU | ((-\infty, +\infty)) | 否 | 中等 | 隐藏层 |
Softmax | (0,1) | 否 | 高 | 多分类输出层 |
选择合适的激活函数对于提高模型的训练效果和收敛速度至关重要。
优化器
1. 优化器的作用
在深度学习中,优化器(Optimizer) 是用于调整神经网络权重参数的算法。其目标是通过最小化损失函数,使模型的预测更加准确。优化器通常基于梯度下降(Gradient Descent)方法来更新参数。
2. 常见的优化器
梯度下降(Gradient Descent, GD)
梯度下降的三种类型:
- 批量梯度下降(Batch Gradient Descent, BGD)
- 使用整个训练集计算梯度。
- 收敛稳定但计算量大,训练慢。
- 随机梯度下降(Stochastic Gradient Descent, SGD)
- 每次仅使用一个样本计算梯度并更新参数。
- 更新频繁,计算高效,但容易震荡,不稳定。
- 小批量梯度下降(Mini-batch Gradient Descent, MBGD)
- 介于 BGD 和 SGD 之间,每次使用一个小批量样本计算梯度。
- 计算效率高,且收敛较稳定。
损失函数
… …
深度学习训练模型流程
- 数据标注并预处理(数据集的实现)
- 数据加载(也就是读取数据)
- 选取模型与优化器
- 循环读取数据:
进行训练
计算损失
将所有的训练样本全部训练完成一轮,我们将其成为一个epoch
暂时先看这么多... ...