1. 拟合
1.1 概述
1. 拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。拟合的曲线可以用函数表示,根据这个函数的不同有不同的拟合名字。拟合的方法包括回归、插值、和逼近。
2. 拟合是一种数据处理的方式,不特指哪种方法,简单的说就是你有一组数据,觉得这组数据和一个已知的函数(这个函数的参数未定)很相似,为了得到最能表示这组数据特征的这个函数,通过拟合这种方式(具体的数学方法很多)求得参数。
1.2 拟合问题
1. 拟合问题分为:过拟合、欠拟合。
2. 欠拟合:被提取的样本数据比较少、模型过于简单,导致训练出来的模型不能很好的匹配,无法较好地拟合数据。
过拟合:所选模型的复杂度比真实模型更高,学习时选择的模型所包含的参数过多,对已知数据预测得很好,但是对未知数据预测的很差。
3. 解决欠拟合:添加其他特征项,或者添加多项式特征,优化模型。
4. 解决过拟合:
(1) 获取更多数据:从数据源获得更多数据,或数据增强。
(2) 数据预处理:清洗数据、减少特征维度、类别平衡。
(3) 正则化:限制权重过大、网络层数过多,避免模型过于复杂。
(4) 多种模型结合:集成学习的思想。
(5) Dropout:随机从网络中去掉一部分隐神经元。
(6) 限制训练时间、次数,及早停止。
2. 梯度消失和爆炸
2.1 概述
1. 反向传播过程中,会利用链式法则求梯度,比如一个常见的式子如下:
2. 如果每一项 ∣ ζ ∣ < 1 |ζ|<1 ∣ζ∣<1,导数很容易逐渐变为 0 0 0,使得权重和偏差参数无法被更新,导致神经网络无法被优化,训练永远不会收敛到良好的解决方案。 这被称为梯度消失问题。
3. 如果每一项 ∣ ζ ∣ > 10 |ζ|>10 ∣ζ∣>10,当神经网络很深时,梯度呈指数级增长,最后到输入时,梯度将会非常大,我们会得到一个非常大的权重更新,这就是梯度爆炸的问题。
2.2 解决
1. 梯度消失的解决办法:
(1) 预训练+微调。
(2) 使用Relu Lrelu Prelu Rrelu激活函数来防止梯度消失问题。
(3) batchnorm。
(4) 使用残差网络。
2. 梯度爆炸的解决办法:
(1) 预训练+微调。
(2) 梯度裁剪:主要针对梯度爆炸问题,设置一个阈值,当梯度超过这个阈值之后将它限制在这个范围之内。
(3) 权重正则化,L1和L2正则化。
(4) 使用Relu Lrelu Prelu Rrelu激活函数来防止梯度爆炸问题。
(5) batchnorm。
(6) 使用残差网络。
3. 卷积神经网络的压缩
卷积神经网络压缩的基本思想:核的稀疏化,剪枝,模型量化,模型蒸馏。
(1) 核的稀疏化:是在训练过程中,对权重的更新加以正则化,使其更加稀疏,使大部分的权值为
0
0
0。
(2) 剪枝:神经网络中有些参数对最终输出结果贡献不大而显得冗余,剪枝就是要将这些冗余的参数剪掉。
(3) 模型量化:着眼于参数本身,直接减少每个参数的存储空间。
(4) 模型蒸馏:采用迁移学习,将复杂模型中的有用信息提取出来迁移到一个更小的模型上。