深度学习
深度学习
CNN
卷积 使用卷积核(过滤器)提取局部特征,通过权重共享降低参数数量
激活 非线性化
池化 缓解位置敏感性,增加平移不变性
全局平均池化 GAP 每个通道的特征图计算一个平均值,一般用来替代全连接层
全连接 每个神经元与前一层的所有神经元相连,常用于分类任务的输出。
对于图像特征,**先Flatten后使用**
BN层 提高模型稳定性和收敛性,批次内按特征进行标准化
初始化 Xavier
过拟合、欠拟合
过拟合 模型太复杂,测试集上效果差
1、降低模型复杂度
2、增加数据、生成数据、数据增强
3、dropout
4、正则化(L1、L2)
L1 正则化(Lasso):通过引入权重绝对值的惩罚项,促使某些权重变为零,从而进行特征选择。倾向于产生稀疏的权重向量,因为它将一些权重推向零
在权重接近零时的惩罚更为显著
L2 正则化(Ridge):通过引入权重平方和的惩罚项,限制权重的大小,从而防止模型对训练数据的过度拟合。
5、早停 Early Stop
6、验证交叉
欠拟合 模型太简单,训练集、 测试集上效果都差
增加模型复杂度
减少正则化
增加训练时间
交叉验证
用于模型选择
激活函数
relu
Leaky ReLU
sigmoid 二分类
tanh (-1, 1)
当输入在0附近时,tanh函数接近线性变换。函数的形状类似于sigmoid函数,
不同的是tanh函数关于坐标系原点中心对称。
sigmoid和softmax区别
Sigmoid:
公式:σ(x)=1+e−x1
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}
输出范围:将输入值映射到 (0, 1) 区间,适用于二分类问题。
Softmax:Softmax(zi)=∑j=1nezjezi
公式:对于一个向量 z=[z1,z2,…,zn],Softmax 定义为:
z=[z1,z2,…,zn]z = [z_1, z_2, \ldots, z_n]
Softmax(zi)=ezi∑j=1nezj\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}}
- 输出范围:将输入值转换为 (0, 1) 区间,并且所有输出值的和为 1,适用于多分类问题。
损失函数
分类损失
0-1损失 二分类
交叉熵损失
https://www.vectorexplore.com/tech/loss-functions/cross-entropy/
衡量两个分布之间的相似程度(距离)
模型训练时,通过最小化交叉熵损失函数,我们可以使模型预测值的概率分布逐步接近真实的概率分布。
二元交叉熵损失(Binary Cross-Entropy Loss):
n表示样本数量
多元交叉熵损失(Categorical Cross-Entropy Loss):
适用于多分类问题,C 表示类别数。
C=2时,等价于BCE
KL散度/相对熵
对数损失
指数损失
合页损失 svm
回归损失
L1损失-MAE
L2损失-MSE
huber损失
检测、分割
IoU损失
优化算法
梯度下降法(每次使用全部数据,计算一个平均下降方向,速度慢)
随机梯度下降(每次使用单个数据,不稳定)
小批量随机梯度下降 (兼顾速度和稳定性)
动量法 加了一个“动量”项,用于平滑参数更新
Adam
结合了动量法和 RMSProp,计算梯度的一阶矩(均值)和二阶矩(方差)来调整学习率,使得优化过程更加平滑。
Adam 优化器的主要参数包括学习率(learning rate)、β1(一阶矩估计的指数衰减率)、β2(二阶矩估计的指数衰减率)和ε(数值稳定性参数)。以下是这些参数的详细说明:
- 学习率(learning rate)(默认值:0.001):
学习率决定了每次参数更新的步长大小。较小的学习率可以使模型收敛更加稳定,但可能会导致训练速度较慢;较大的学习率可以加快训练速度,但可能会导致模型在参数空间中跳跃过大,难以收敛。 - β1(一阶矩估计的指数衰减率)(默认值:0.9):
Adam 优化器使用指数移动平均来估计梯度的一阶矩,β1 参数控制了一阶矩估计的衰减率。较大的 β1 值会使得历史梯度信息对当前梯度的影响更大,使优化过程更加稳定。 - β2(二阶矩估计的指数衰减率)(默认值:0.999):
Adam 优化器还使用指数移动平均来估计梯度的二阶矩,β2 参数控制了二阶矩估计的衰减率。较大的 β2 值会使得历史梯度平方的影响更大,对梯度更新的方向进行调整,有助于降低噪声对优化过程的影响。 - ε(数值稳定性参数)(默认值:1e-7):
ε 参数是为了提高数值稳定性而添加的一个小的常数,防止分母为零。它在计算梯度的二阶矩估计时使用,避免了除零错误。
这些参数通常会根据具体的任务和数据集进行调整,以获得最佳的性能和收敛速度。通常情况下,Adam 优化器的默认参数值已经在许多任务中表现良好,因此在大多数情况下,不需要进行额外的调整。
RNN
循环神经网络是具有隐状态的神经网络
后一步的输入依赖前一步的输出,层间有连接
即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
https://blog.csdn.net/bestrivern/article/details/90723524
http://www.jokerak.com/deep-learning/5-RNN/#_5-1-%E6%A6%82%E5%BF%B5
LSTM
seq2seq
CNN与RNN区别
输入数据类型
- CNN:
- 主要处理二维或三维数据,如图像(高度、宽度、颜色通道)和视频帧。
- 通过卷积层提取空间特征,适合于图像分类、目标检测等任务。
- RNN:
- 主要处理一维序列数据,如时间序列、文本等。
- 能够处理变长输入,适合于自然语言处理、语音识别等任务。
训练和计算
- CNN:
- 并行计算较为容易,因为卷积操作可以在不同的区域同时进行。
- 通常使用批量训练,加速计算过程。
- RNN:
- 训练过程通常是顺序的,因为每个时间步的输出依赖于前一个时间步的状态,难以并行化。
- 更容易出现梯度消失或梯度爆炸的问题,通常使用长短期记忆网络(LSTM)或门控递归单元(GRU)来缓解这些问题。
CNN与MLP
- 结构:
- 多层感知机(MLP)是一种基本的前馈神经网络结构,由多个全连接层组成,每个神经元与上一层的所有神经元相连。
- 卷积神经网络(CNN)是一种专门用于处理网格结构数据(如图像)的神经网络结构,其中包含卷积层、池化层和全连接层等。卷积层通过卷积操作来提取局部特征,池化层通过池化操作来减少特征图的大小和参数数量。
- 输入数据的结构:
- 多层感知机(MLP)通常用于处理一维的数据,例如序列数据、文本数据等。
- 卷积神经网络(CNN)通常用于处理二维的数据,例如图像数据,但也可以扩展到处理三维的数据,例如视频数据。
- 参数共享:
- 在卷积神经网络(CNN)中,卷积操作具有参数共享的特性,即卷积核在整个特征图上移动时所使用的参数是相同的,这大大减少了需要学习的参数数量,提高了模型的效率和泛化能力。
- 在多层感知机(MLP)中,每个神经元与上一层的所有神经元相连,参数独立,没有参数共享的概念。
- 特征提取:
- 卷积神经网络(CNN)通过卷积操作和池化操作来逐层提取输入数据的特征,从而学习到数据的局部和全局特征,具有良好的特征提取能力。
- 多层感知机(MLP)则是通过全连接层来对输入数据进行线性变换和非线性变换,对于复杂的结构化数据,需要更多的层和参数来进行学习,且往往需要更多的数据来进行训练。不激活时相当于是多个线性变换
上采样、反池化、反卷积
https://blog.csdn.net/A_a_ron/article/details/79181108
https://blog.csdn.net/yq_forever/article/details/101169771
上采样 最近邻插值、双线性插值等
反池化 需要池化索引
反卷积 参数需要学习
BN、LN
- Batch Normalization (BN):在批次维度上进行归一化,即对每个 mini-batch 内的所有样本的同一特征进行归一化。公式中使用的是每个 mini-batch 内特征的均值和方差。适合卷积神经网络(CNN)等批量大小比较大的场景。特征归一化
- Layer Normalization (LN):在层维度上进行归一化,即对每个样本的所有特征进行归一化。公式中使用的是单个样本的所有特征的均值和方差。适合循环神经网络(RNN)和 Transformer 等批量大小较小或动态性强的场景。样本归一化