1、首先快速搭建简单的网络模型能跑一下,看看项目难度,最好有个基线版本用来做对比
2、是否过拟合,比如训练集准确率是1,但是验证准确率是0.7,这样就过拟合
L2正则化更好,当然,也可以L1和L2正则化一起使用。y = M +入*求和(rate*|w|+(1-rate)*w*w)
L1正则化:1、会让参数变得更稀疏,也就是会有更多的参数变为0
2、不可导,但是在优化时又要计算损失函数的偏导数。
L2正则化:1、不会,因为当参数很小时,比如0.001,这个参数的平方基本就可以忽略了
2、可导
L1,L2小总结
那添加L1和L2正则化有什么用?下面是L1正则化和L2正则化的作用,这些表述可以在很多文章中找到。
- L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
- L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
L1的用处
详细:https://blog.csdn.net/jinping_shi/article/details/52433975
3、参数初始化方式
3、
4、学习率:指数衰减--->指数衰减法的核心思想是,先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型更加稳定。
5、大杀器-数据增强
使用数据增强技术(data augmentation):主要是在训练数据上增加微小的扰动或者变化
一方面可以增加训练数据,从而提升模型的泛化能力
另一方面可以增加噪声数据,从而增强模型的鲁棒性(稳定性)。
主要的数据增强方法有:
翻转变换 flip
随机修剪(random crop)
色彩抖动(color jittering)
平移变换(shift)
尺度变换(scale)
对比度变换(contrast)
噪声扰动(noise)
旋转变换 / 反射变换 (rotation/reflection)
可以参考 Keras 的官方文档 [2] 。获取一个 batch 的训练数据,进行数据增强步骤之后再送入网络进行训练
6、从模型入手
dropout详解:https://yq.aliyun.com/articles/68901
7、加深神经网络:因为梯度衰减等原因
结果分析:我们惊讶的发现,加深了网络层数之后,性能反而下降了,达不到原来的验证集准确率,网络层数从 8 层增加到 14 层,准确率有所上升,但从 14 层增加到 20 层再增加到 32 层,准确率不升反降,这说明如果网络层数过大,由于梯度衰减的原因,导致网络性能下降,因此,需要使用其他方法解决梯度衰减问题,使得深度神经网络能够正常 work。
8、终极神器:残差网络(很好的解决了梯度衰减问题)
详解:https://blog.csdn.net/diamonjoy_zone/article/details/70904212