一. 开发有监督神经网络系统的步骤
1. 数据收集
训练数据通常由输入–输出成对组成,根据任务需求可能涵盖不同情境(如白天或夜晚的车辆识别),其类型可以是数值、图像、音频等多种形式;数据规模越大、越多样,模型就越有机会学习到有效规律并具备更好的泛化能力。
2. 选择合适的ANN模型
- 线性问题:使用线性模型,如感知机(Perceptron)、ADALINE。
- 非线性问题:使用多层感知机(MLP)等非线性网络。
3. 决定输入与输出神经元的数量
输入层:与输入特征数一致。
输出层:
i.优化任务:与目标参数数目一致。
ii.分类任务:与类别数相关(如2类用1或2个输出节点;3类可用2或3个节点)。
iii.逼近问题:与拟合参数数量一致。
4. 确定最佳输入维度
确定输入维度时,如果输入特征过少,模型获取的信息不足,容易导致学习能力受限、无法有效解决问题;而特征过多则可能引入较强的共线性,使模型在训练集上表现很好但在新数据上泛化能力差。为了在保留关键信息的同时降低冗余与相关性,可采用主成分分析(PCA)、判别分析(DA)等降维与去相关方法,从而提升模型的稳健性和泛化性能。
5. 选择合适的训练算法
算法 | 特点 |
GD(梯度下降) | 学习慢,收敛稳 |
GD + 动量 | 学习快,但可能不收敛 |
Levenberg-Marquardt (LM) | 分类效果好,收敛稳 |
Bayesian Regularization (BR) | 非常慢,但性能优于 LM |
Scaled Conjugate Gradient (SCG) | 快,但稳定性差 |
Resilient BP | 效果依问题而定 |
6. 选择激活函数
在人工神经网络中,不同层通常选用不同的激活函数以适应各自的功能需求:输入层一般使用线性激活函数,以便直接传递原始特征信息;隐藏层常采用连续且可微的非线性函数(如 sigmoid 函数),以增强模型对复杂模式的表达能力;输出层的激活函数则取决于任务类型:1)在分类任务中常用 sigmoid、阶跃(step)或符号(sign)函数来实现类别判定,2)在回归或函数逼近任务中则多使用线性函数,以便直接输出连续数值结果。
二、ANN的训练过程(TRAINING PROCESS)
i.核心目标:
- 优化权重:通过训练不断调整权重,直到输出误差达到满意程度。
- 确定网络结构:合理配置输入/隐藏/输出层的神经元数量。
ii.如何确定最佳隐藏神经元数量?
隐藏层神经元数量的选择直接影响神经网络的学习能力与泛化性能:如果隐藏层神经元过少,模型表达能力不足,难以有效学习复杂模式;而隐藏层神经元过多则容易导致过拟合,使模型在新数据上的泛化能力下降。为了找到最佳配置,可采用网络生长法(growing),从较少的神经元开始逐步增加,直到性能不再提升;或使用网络修剪法(pruning),先设定较多神经元再逐步减少,保留最优结构。在多层感知机(MLP)中,还可以通过引入多个隐藏层来分层提取特征,从而更高效地处理复杂任务。
iii.局部最小陷阱 vs 全局最小的概念
在神经网络训练中,我们的目标是通过调整权重找到全局最小点,即误差曲面上最低的位置,从而使模型在训练和新数据上都能有最佳表现;然而,复杂的误差曲面往往存在多个局部最小点,训练过程可能会被困在这些位置,导致性能不佳。可以将其比作一次从起点 A 出发前往终点 B 的旅程,全局最小点是目的地,而局部最小点则像途中因车辆故障、疾病等被迫停留的地方,看似到达了低谷,但并非最终的最佳位置。
三、停止训练的条件(WHEN TO STOP TRAINING)
i. Epoch 数:当训练迭代次数达到预先设定的最大值时停止。
ii. 误差目标:当训练误差达到或低于设定的阈值时停止。
iii. 梯度值:当梯度下降到小于设定值时停止,表示权重更新已趋于平稳。
iv. 验证误差:当验证集误差连续多次迭代不再改善时停止,以防止过拟合。