Table of Contents
BPNN 模型 Link to BPNN 模型
首先从组内最常用的 BPNN(Back Propagation Neural Network,反向传播神经网络)模型来说明。
本工作选择反向传输神经网络算法训练多变量模型。由于在后续工作中均采用 3 层网络结构建立 BPNN 模型,因此这里以 3 层网络结构为例介绍 BPNN 算法。
网络结构 Link to 网络结构
3 层网络结构通常包括:
- 输入层:具有与选定光谱特征相同个数的 个神经元(如添加附加特征,则为 个神经元)。
- 隐藏层:具有 个神经元。
- 输出层:具有 个神经元。
其中:
- 为输入层第 个神经元与隐层第 个神经元间的连接权重。
- 为隐层第 个神经元与输出层第 个神经元间的连接权重。
- 隐层第 个神经元的阈值记为 。
- 输出层第 个神经元的阈值记为 。
在后续工作中,均使用 tanh 函数作为隐层和输出层的激活函数。
误差计算 Link to 误差计算
对于训练集中任一数据 ,假设神经网络的输出为 ,则网络的均方根误差(RMSE)可表示为预测值与真实值之间的差异。
BPNN 算法首先随机初始化网络中所有的连接权重和阈值,然后基于随机梯度下降算法(Stochastic Gradient Descent, SGD),以目标负梯度方向并通过多次迭代对参数进行更新,从而构建最优化的 BPNN 网络。
交叉验证优化 Link to 交叉验证优化
本工作采用 折交叉验证(k-fold Cross Validation)来优化神经网络。以 10 折交叉验证为例:
- 数据划分:将训练集样本(假设所有光谱数据集为 )随机分为 10 份子集 。
- 循环训练:
- 每次选择 9 个子集的并集作为训练集。
- 剩下的 1 个子集作为测试集。
- 重复 10 次,直到所有子集都做过一次测试集。
- 结果汇总:最终返回结果为 10 次测试结果的平均值。
为了减少由于划分方式不同导致的误差,通常会随机使用不同的 折交叉验证划分数据多次(例如 次),最终模型返回的结果是这 次 折交叉验证结果的均值。通过此过程可以生成模型性能评估参数,如 、RMSE 等。
适用场景 Link to 适用场景
- 光谱特征数量有限,且非线性关系明显
- 需要建立多变量回归或分类模型
- 希望通过交叉验证提高泛化能力
建模流程 Link to 建模流程
- 数据预处理与特征选择
- 设定网络结构与激活函数
- 随机初始化参数并进行训练
- 交叉验证评估与参数调整
注意事项 Link to 注意事项
- 训练集与测试集划分必须严格独立,避免数据泄漏
- 隐层规模过大易过拟合,过小则表达能力不足
- 评价指标建议同时关注 与 RMSE
小结 Link to 小结
- BPNN 适合处理非线性谱线与浓度关系
- 交叉验证可稳定评估模型性能
- 模型结构与数据规模需同步调整
参考资料 Link to 参考资料
- https://en.wikipedia.org/wiki/Backpropagation
- https://en.wikipedia.org/wiki/Cross-validation_(statistics)
Thanks for reading!