神经网络训练完,会出现网络训练不稳定、网络不收敛、梯度消失或爆炸、网络过拟合、不准或准确率低,可考虑以下方面:
一、数据处理
数据增强(随机采样、数据翻转,随机改变数据亮度、饱和度、对比度等)
二、神经网络拓扑结构
神经网络结构一般由输入层、隐层、输出层构成。输入层的神经元个数是特征维度,隐层是提取输入特征中隐藏的规律,输出层的神经元个数是分类类别数。一般,给定训练样本后,输入层和输出层的神经元个数是已知的,我们只需要考虑的是隐层的个数及隐层神经元个数。如果隐层神经元个数太少,学习效果差,不易找出输入特征规律,如果隐层神经元个数太多,网络拟合能力太强,把噪声数据都学会,导致泛化能力低。
1、增加网络深度
如:ResNet网络
2、增加网络宽度
如:Inception网络
3、改进网络结构
如:一阶段目标检测(Yolo、SSD)、二阶段目标检测网络(Fast-CNN、Faster-CNN)等。
三、激活函数
1、激活函数需具备特性
可微:当优化方法基于梯度,需使用链式求导,这个性质是必须的。
输出值范围:神经网络中,上一层输出决定下一层输入,输出值需有限。
2、激活函数类型
常见的激活函数,有sigmoid、tanh、Relu等函数。