Table of Contents

BPNN 模型 Link to BPNN 模型

首先从组内最常用的 BPNN(Back Propagation Neural Network,反向传播神经网络)模型来说明。

本工作选择反向传输神经网络算法训练多变量模型。由于在后续工作中均采用 3 层网络结构建立 BPNN 模型,因此这里以 3 层网络结构为例介绍 BPNN 算法。

网络结构 Link to 网络结构

3 层网络结构通常包括:

  1. 输入层:具有与选定光谱特征相同个数的 mm 个神经元(如添加附加特征,则为 m+1m+1 个神经元)。
  2. 隐藏层:具有 nn 个神经元。
  3. 输出层:具有 jj 个神经元。

其中:

  • wihw_{ih} 为输入层第 ii 个神经元与隐层第 hh 个神经元间的连接权重。
  • whow_{ho} 为隐层第 hh 个神经元与输出层第 oo 个神经元间的连接权重。
  • 隐层第 hh 个神经元的阈值记为 γh\gamma_h
  • 输出层第 oo 个神经元的阈值记为 θo\theta_o

在后续工作中,均使用 tanh 函数作为隐层和输出层的激活函数。

误差计算 Link to 误差计算

对于训练集中任一数据 (xk,yk)(x_k, y_k),假设神经网络的输出为 y^k\hat{y}_k,则网络的均方根误差(RMSE)可表示为预测值与真实值之间的差异。

BPNN 算法首先随机初始化网络中所有的连接权重和阈值,然后基于随机梯度下降算法(Stochastic Gradient Descent, SGD),以目标负梯度方向并通过多次迭代对参数进行更新,从而构建最优化的 BPNN 网络。

交叉验证优化 Link to 交叉验证优化

本工作采用 kk 折交叉验证(k-fold Cross Validation)来优化神经网络。以 10 折交叉验证为例:

  1. 数据划分:将训练集样本(假设所有光谱数据集为 SS)随机分为 10 份子集 {S1,S2,,S10}\{S_1, S_2, \dots, S_{10}\}
  2. 循环训练
    • 每次选择 9 个子集的并集作为训练集。
    • 剩下的 1 个子集作为测试集。
    • 重复 10 次,直到所有子集都做过一次测试集。
  3. 结果汇总:最终返回结果为 10 次测试结果的平均值。

为了减少由于划分方式不同导致的误差,通常会随机使用不同的 kk 折交叉验证划分数据多次(例如 ee 次),最终模型返回的结果是这 eekk 折交叉验证结果的均值。通过此过程可以生成模型性能评估参数,如 R2R^2、RMSE 等。

适用场景 Link to 适用场景

  • 光谱特征数量有限,且非线性关系明显
  • 需要建立多变量回归或分类模型
  • 希望通过交叉验证提高泛化能力

建模流程 Link to 建模流程

  1. 数据预处理与特征选择
  2. 设定网络结构与激活函数
  3. 随机初始化参数并进行训练
  4. 交叉验证评估与参数调整

注意事项 Link to 注意事项

  • 训练集与测试集划分必须严格独立,避免数据泄漏
  • 隐层规模过大易过拟合,过小则表达能力不足
  • 评价指标建议同时关注 R2R^2 与 RMSE

小结 Link to 小结

  • BPNN 适合处理非线性谱线与浓度关系
  • 交叉验证可稳定评估模型性能
  • 模型结构与数据规模需同步调整

参考资料 Link to 参考资料

Thanks for reading!

LIBS数据处理不同的机器学习方法

Tue Feb 18 2025
1079 words · 4 minutes