DNN前向、反向传播及正则化

1.损失函数和激活函数的选择

1.1 均方差损失函数+sigmoid激活函数

s i g m o i d ( z ) = 1 1 + e z sigmoid(z)=\frac{1}{1+e^{-z}}
s i g m o i d ( z ) = s i g m o i d ( z ) ( 1 s i g m o i d ( z ) ) sigmoid^{'}(z)=sigmoid(z)(1-sigmoid(z))
假设输出是连续可导的值
算法收敛速度慢

1.2 交叉熵损失函数+sigmoid激活函数

假设输出是连续可导的值
交叉熵损失函数代替均方差损失函数,改进DNN算法收敛速度

1.3 对数似然损失函数+softmax激活函数

处理多分类问题

1.4 梯度爆炸梯度消失+ReLU激活函数

在反向传播的过程中,由于我们使用矩阵求导的链式法则,有一连串连乘。

  • 如果连乘的数字都是小于1,则梯度越来越小,直到消失
    解决:调整初始化参数
  • 如果连乘的数字都是大于1,则梯度越来越大,导致爆炸
    解决:使用ReLU激活函数 R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x)

2.DNN前向传播

DNN的前向传播算法就是利用若干个权重系数矩阵W,偏倚向量b和输入向量x进行一系列线性运算和激活运算,从输入层开始,一层层向后计算,直到输出层,得到输出结果
在这里插入图片描述

3.DNN反向传播

DNN的反向传播算法就是对DNN的损失函数用梯度下降法进行迭代优化求极小值的过程。

4.DNN的正则化

4.1. L1,L2正则化

范数规则化的两个作用:

  • 保证模型尽可能的简单,避免过拟合
    参数值大小和模型复杂度是成正比的。参数过多会导致模型复杂度上升,越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点。
  • 约束模型特性,加入一些先验知识,例如稀疏、低秩​等。

L0范数

L0是指向量中非0的元素的个数。

如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。即让参数W是稀疏的。稀疏的好处:

  • 简化模型,避免过拟合;
  • 参数变少可以提高可解释性

但是,L0范数的最优化问题是一个NP hard问题,理论证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替。

L1范数

L1范数是指向量中各个元素绝对值之和。

L1正则化之所以可以防止过拟合,是因为它能产生等于0的权值,即产生稀疏的效果。参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。

L2范数

L2范数即欧式距离。

L2正则化之所以可以防止过拟合,是因为它是让各个参数接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

L1稀疏、L2平滑

  • 假定 w i > 0 w_i>0 ,L1的权值每次更新都固定减少一个特定的值,那么经过若干次迭代之后,权值就有可能减少到0。 w i = w i η w_i=w_i-\eta 。( w i < 0 0 w_i<0时则是增加到0 )。

  • L2的权值更新公式为 w i = w i η w i wi= wi- η * w_i ,假设 η = 0.5 \eta=0.5 ,也就是说权值每次都等于上一次的1/2,那么,虽然权值不断变小,但是因为每次都等于上一次的一半,所以很快会收敛到较小的值但不为0。

因此

  • L1能产生等于0的权值,即产生稀疏的效果
  • L2能迅速得到比较小的权值,但是难以收敛到0,即产生平滑的效果 。

4.2. 集成学习

类似随机森林,用若干个DNN网络

4.3. dropout正则化

在训练模型时,随机去掉一部分隐藏层的神经元

4.4. 数据增强

增加训练数据
交叉验证法

  • 用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
  • 从有限的数据中获取尽可能多的有效信息。

猜你喜欢

转载自blog.csdn.net/weixin_38493025/article/details/84234977
今日推荐