文章目录
-
- [1. 针对训练结果](#1. 针对训练结果)
-
- [1.1 调整激活函数](#1.1 调整激活函数)
- [1.2 调整学习率](#1.2 调整学习率)
- [2. 针对测试结果](#2. 针对测试结果)
-
- [2.1 提前结束](#2.1 提前结束)
- [2.2 正则化](#2.2 正则化)
- [2.3 Dropout(随机失活)](#2.3 Dropout(随机失活))
- [2.4 Batch(分批训练)](#2.4 Batch(分批训练))
- [3. 监督学习所涉及的损失函数](#3. 监督学习所涉及的损失函数)
1. 针对训练结果
1.1 调整激活函数
激活函数作用
- 拟合非线性函数,能训练更复杂的模型
Sigmoid函数的缺点
-
梯度消失
- Sigmoid函数: σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1:把无穷大/无穷小的值压缩到0~1之间
- 梯度下降的数学意义:权重 w w w的变化对Loss的影响
- 经过Sigmoid函数后,权重变化在0~1之间,随着层数的增加,梯度逐渐消失,导致靠近输入层的参数更新极慢。
-
梯度爆炸
- 梯度爆炸和梯度消失相反,权重更新过快,导致训练不稳定。
ReLU(线性修正单元)
-
工作模式
- 输入为负数:输出为0
- 输入为正数:输出为输入值
- 取0的神经元相当于被去除,使神经网络变瘦
-
优点
- 剩下的神经元相当于线性函数,导数恒为1,能解决梯度消失问题
- 模仿生物神经元,产生正反馈
- 计算更快,去除了0的神经元
- 无穷多不同bias的sigmoid函数叠加近似ReLU,突出其在非线性拟合中的优势
Leaky ReLU
- 作用
- 解决ReLU的缺点:当输入<0时,导数为0,无法更新参数
- Leaky ReLU机制:当输入<0时,输出为0.01 \\cdot input
Parametric ReLU
- 类似Leaky ReLU,但在输入<0时,输出为 p ⋅ i n p u t p \cdot input p⋅input,其中 p p p可以通过梯度下降学习得到。
Maxout(可学习激活函数)
-
原理
- 同一层的多个神经元一组,取其中最大的 z z z作为输出,即取一组神经元中的最大值。
- z = ∑ w x + b z=\sum w x + b z=∑wx+b
-
特点
- 允许神经网络学习激活函数本身
- 结构由同组内的 w w w和 b b b决定
- 本质是分段函数,非线性且复杂,计算开销大
-
ReLU是Maxout的特殊情况
- 当一组神经元中两个神经元结构,其中一个神经元有非零 w w w和 b b b,另一个为零时,Maxout避免了ReLU的死神经元问题
1.2 调整学习率
Adagrad
- 本质:考虑了二次微分对梯度下降的影响
- 公式:
w t + 1 = w t − η ∑ ( g i ) 2 g t , i ∈ [ 1 , t ] w^{t + 1} = w^{t} - \frac{\eta}{\sqrt{\sum(g^i)^2}} g^t, \quad i \in [1,t] wt+1=wt−∑(gi)2 ηgt,i∈[1,t]
RMSProp
- 自适应学习率:陡峭的地方学习率小,平缓的地方学习率大
- 本质:RMSProp是Adagrad的改进版本,能够自适应调整当前梯度的权重
- 公式:
w t + 1 = w t − η t σ t g t w^{t + 1} = w^{t} - \frac{\eta^t}{\sigma^t} g^t wt+1=wt−σtηtgt
σ t = α ( σ t − 1 ) 2 + ( 1 − α ) ( g t ) 2 \sigma^t = \sqrt{\alpha (\sigma^{t-1})^2 + (1-\alpha)(g^t)^2} σt=α(σt−1)2+(1−α)(gt)2
Momentum(冲量)
-
原理:利用之前移动的"惯性"来帮助参数越过局部最优解
- 移动方向 = 前一步更新时的移动方向 - 当前梯度方向
-
公式:
v 1 = λ v 0 − η ∇ L ( θ 0 ) v^1 = \lambda v^0 - \eta \nabla L(\theta^0) v1=λv0−η∇L(θ0)
Adam
- 结合RMSProp和Momentum的梯度下降方法
什么是鞍点?如何脱离?
鞍点:在某些方向上是最小值,在其他方向上是最大值
脱离方法:
- 使用冲量
- 计算矩阵特征值,正定矩阵是最优解;若特征值有大于零和小于零的情况,则是鞍点,应朝着特征值为正的方向移动
2. 针对测试结果
2.1 提前结束
- 原理:防止模型为了贴合训练结果而过拟合
- 实施:划分训练集和验证集,将验证集作为测试集,观察梯度下降过程,达到最低点时停止训练
2.2 正则化
- 原理:在Loss中加入权重约束,促使权重接近0,减少过拟合
- 权重越小,函数越平滑,防止过拟合
L1正则化
- Loss Function:增加所有参数的绝对值之和
- 更新参数:通过减法进行权重衰减(sgn(w)为+1或-1)
- 优点:产生稀疏解,适用于特征选择
L2正则化
- Loss Function:增加所有参数的平方和
- 更新参数:通过乘法进行权重衰减(乘上小于1的数)
- 优点:保证特征平滑性,保持所有特征
- 缺点:不能进行特征选择
L1与L2的区别
- 权重较大时,L2会下降得更快,而L1只减去固定值,训练结束后权重仍较大
- 权重较小时,L2下降较慢,而L1能产生更多接近0的权重
2.3 Dropout(随机失活)
-
做法:
- 训练时:每次参数更新时以概率 p p p使神经元失活,改变网络结构
- 测试时:所有神经元都用,但每个神经元的权重乘以1-p
-
好处:
- 测试集效果更好,但训练集效果可能较差
- 减少神经网络的复杂度,避免过拟合
-
原理:
- 使神经网络更加稳定,通过减少训练较差的神经元的影响,确保训练更为彻底
和Maxout的区别
- Maxout是每个数据批次的不同结构,Dropout则是每次更新时改变网络结构
Dropout与ReLU、Maxout的联系
- 如果网络接近线性,Dropout的性能较好
- ReLU和Maxout的网络更接近线性,因此它们通常与Dropout一起使用
2.4 Batch(分批训练)
-
做法:
- 将训练集分成多个小批次
- 每个批次用于训练,得到不同的网络结构
- 最终将测试集输入不同的网络结构并平均结果
-
优点:
- 加速训练:分批次训练可并行计算
- 泛化能力强:避免过拟合
- 减少内存需求
-
实施:
- 并没有将测试集分批,而是将每个网络结构乘以1-p,然后一起测试
小Batch与大Batch的区别
-
小Batch:
- 更强的泛化能力
- 内存需求小
- 更快的收敛
-
大Batch:
- 一次处理更多数据
- 收敛慢
- 内存需求大
3. 监督学习所涉及的损失函数
平方误差
- 概念:预测值和真实值之间的平方差的均值
- 特点:对异常值敏感
平方绝对误差
- 概念:预测值与真实值的绝对差值的平均值
- 特点:抗噪能力强
对数损失
- 概念:常用于分类问题,衡量预测概率分布与真实标签的差异
- 特点:对概率分布的误差敏感,越接近真实标签的预测概率,损失越小
交叉熵
- 概念:描述两个概率分布之间的相似度
- 特点:反映分类问题的分类准确性,对预测概率不确定性更敏感
0-1误差
- 概念:用于二分类问题,直观刻画分类错误率
- 特点:非凸,非光滑,难以优化