欢迎访问我的个人博客:zengzeyu.com
前言
当你进入深度学习领域,准备好深度神经网络,开始进行训练时,遇到这样一个大部分新手都会遇到的问题:你的神经网络没法正常工作,而你不知道该如何去修正它。你去问你的老板或者导师,他们也不知道该如何处理,因为在深度神经网络面前,他们和你一样也是新手。那么现在该如何来处理呢?
幸运的是我来啦!我列出了几乎所有新手都会犯的错误,以及我自己和身边一些学生在同样情况下遇到过的问题:
- 没有对数据进行标准化处理(Normalize)
- 没有检查结果(Results)
- 没有对数据进行预处理(Preprocess)
- 没有使用正则化方法(Regularlization)
- Batch Size 取值过大
- 学习率(Learning Rate)设置有误
- 最后一层 Layer 使用了错误的激活函数(Activation Function)
- 网络结构中包含了有害的梯度(Bad Gradient)
- 初始化网络权重(Network Weights)有误
- 神经网络结构过深(Too Deep)
使用了错误数目的隐藏单元(Hidden Units)
正则化(Regularlization)
What?
正则化(regularlization)—通常以丢弃信息、噪声或某种形式的随机过程注入网络中,是另外一个训练当前神经网络不可或缺的步骤。即使你的数据量远远超过参数数目,或者有一些地方过度拟合情况而没有太大影响或者根本不可能发生,你仍然需要添加丢失信息或者其他形式的噪声。
How?
对一个神经网络进行正则化的最基本方法是在每个线性层(卷积层或密集层)之前添加信息丢失。从中等到高的保留率(例如 0.75 或 0.9)。轻微调整基于的原则是:网络过拟合的可能性或你能找到一些过拟合的证据。如果你依然认为过拟合是不可能发生的,那么将保留率设置的非常高也是有好处的,比如 0.99。
Why?
正则化不仅仅是为了控制过拟合。通过在训练过程中引入一些随机过程,在某种意义上对输出cost 进行了“平滑”处理。这中方式可加速训练过程,对处理数据中的异常值也有好处,同时防止了网络中极端权值的产生。
And?
数据增强或者其他形式的噪声可以像丢弃信息一样充当正则化的手段。虽然丢弃信息最常见的方式,是将许多随机子网络的预测相结合的技术,但也可以将其视为,在训练期间输入相似的训练数据,来作为动态扩展训练集大小的一种方式。正如我们所知道的是,避免过度拟合,提高网络精度的最好的方法是,输入大量的没有重复的数据集。