DL-深度学习基础
目录
过拟合与欠拟合
- 欠拟合指模型不能在训练集上获得足够低的训练误差
- 过拟合指模型的训练误差与测试误差(泛化误差)之间差距过大
- 反应在评价指标上,就是模型在训练集上表现良好,但是在测试集和新数据集上表现一般呢(泛化能力差)
降低过拟合风险的方法
所有为了减少测试误差的策略统称为正则化方法,这些方法可能以增大训练误差为代价
- 数据增强
- 图像:平移、旋转、缩放
- 利用生成对抗网络(GAN)生成新数据
- NLP:利用机器翻译生成新数据
- 降低模型复杂度
- 神经网络:减少网络层、神经元个数
- 决策树:降低树的深度、剪枝
- 权值约束(添加正则化项)
- L1正则化
- L2正则化
- 集成学习
- 神经网络:Dropout
- 决策树:随机森林、GBDT
- 提前终止
数据集扩增
我们在使用训练数据训练模型,通过这个模型对将来的数据进行拟合,而在这之间又一个假设便是,训练数据与将来的数据是独立同分布的。即使用当前的训练数据来对将来的数据进行估计与模拟,而更多的数据往往估计与模拟地更准确
一般的方法:1、重采样
2、根据当前数据集估计数据分布参数,使用该分布产生更多数据等更多详细参考机器学习中防止过拟合的处理方法
正则化
首先看详解正则
L1正则化可以产生稀疏权值矩阵,让特征的权重等于0,用于特征选择
L2正则化可以防止模型过拟合,一定程度上,L1也可以防止过拟合在这篇文章中,在解释为什么L1正则化会产生稀疏权值矩阵时,把w1 w2在二维平面上化成了正菱形,原因是L=|w1|+|w2|或者写为f(w1,w2)=|w1|+|w2|。无论是|w1|+|w2|=1,还是|w1|+|w2|=2,对应的图像都是一个正菱形,从1到2,菱形由小变大。我们要最小化损失函数,也就是要最小化L,那就是菱形越来越小,把最优值往原点方向拉,努力让w都变小。
![]()
![]()
降低欠拟合风险的方法
-
加入新的特
-
交叉特征、多项式特征
-
深度学习:因式分解机、Deep-Crossing、自编码器
-
-
增加模型复杂度
-
线性模型:添加高次项
-
神经网络:增加网络层数、神经元个数
-
-
减小正则化项的系数
-
添加正则化项是为了限制模型的学习能力,减小正则化项的系数则可以放宽这个限制
-
模型通常更倾向于更大的权重,更大的权重可以使模型更好的拟合数据
-
反向传播公式推导
详细步骤参考一问弄懂神经网络反向传播法BP
- 可以用四个公式总结反向传播的过程
商标(l)表示网络的层,(L)表示输出层(最后一层),下标j和k指示神经元的位置,
w_jk表示l层第j个神经元与(l-1)层第k个神经元连线的权重
公式一:C代表总的损失函数
公式二:加和符号上是
,nl表示第l层神经元的个数
**函数
**函数的作用-为什么要使用非线性**函数
- 使用**函数的目的是为了向网络中加入非线性因素;加强网络的表示能力,解决线性模型不能解决的问题
为什么加入非线性因素能够加强网咯的表示能力?——神经网络的万能近似定理
- 神经网络万能近似定理认为主要神经网络具有至少一个非线性隐藏层,那么只要给予网络足够数量的隐藏单元,他就可以以任意的精度来近似从一个有限维空间到另一个有限纬空间的函数
- 如果不使用非线性**函数,那么每一层输出都是上一层的线性组合;那么无论网络有多少层,其整体也将是线性的,最终的效果跟只有一层网络的效果一样,导致失去万能近似的性质
- 但仅部分层是纯线性是可以接受的,这有助于减少网络中的参数
常见的**函数
整流线性单元 ReLU
- ReLU通常是**函数较好的默认选择
ReLU的拓展
- ReLU及其拓展都基于以下公式
当alpha = 0时,即标准的线性整流单元
- 绝对值整流
固定 alpha = -1 ,此时整流函数即绝对值函数 g(z) = |z|
- 渗漏整流线性单元
固定 alpha 为一个小值,比如0.001
- 参数化整流线性单元
将alpha作为一个可学习的参数
- maxout单元
maxout单元进一步扩展了ReLU,他是一个可学习的k段函数,参数数量是普通全联接层的k倍