\chapter{多时间尺度预警模型设计} 本章详细阐述LSTM-Attention深度学习模型和XGBoost基线模型的设计细节、训练策略、超参数配置和评估框架。 \section{模型选型论证} 本研究选择LSTM-Attention和XGBoost作为对比模型组,基于以下考量: \begin{itemize} \item \textbf{LSTM}:作为时序建模的经典深度学习方法,擅长捕捉序列中的长距离依赖模式。气象数据天然具有时序自相关结构(今天的气温与昨天和前天高度相关),LSTM的门控机制设计使其成为此类数据的自然选择。 \item \textbf{注意力机制}:高温健康风险的关键时间点(如温度急剧升高的日期)在14天窗口中的位置是不固定的。自注意力机制无位置偏置的特性,使其能自适应地关注窗口内任意位置的关键信号。 \item \textbf{XGBoost}:作为结构化/表格数据上的SOTA方法,在许多Kaggle竞赛和工业应用中已证明其优于深度学习方法。其树结构天然适合类别不平衡数据——每棵树可学习特定的类别划分规则,多样性集成有助于覆盖少数类。 \item \textbf{对比价值}:「序列Deep Learning vs 展平Tree Ensemble」是环境健康预测中的典型技术路线分歧。通过在同一数据集上进行严格对比,本研究为该领域的方法选择提供实证参考。 \end{itemize} \section{LSTM-Attention模型设计} \subsection{总体架构} 模型采用「输入投影$\rightarrow$BiLSTM编码$\rightarrow$多头自注意力$\rightarrow$全局池化$\rightarrow$多任务输出」的架构范式: \begin{enumerate} \item 输入投影层:19维$\rightarrow$128维线性映射 \item 2层双向LSTM:隐藏维128,时间维14$\rightarrow$256(双向拼接) \item LSTM投影层:256$\rightarrow$128维,衔接注意力 \item 4头自注意力:头维32,捕捉关键时间步 \item 全局平均池化:时间维压缩至128维固定向量 \item 3个独立输出头:128$\rightarrow$32$\rightarrow$4(对应三级风险+正常) \end{enumerate} \subsection{参数量计算} 模型总参数量为983,628,按模块分布如下: \begin{table}[H] \centering \caption{LSTM-Attention模型参数分布} \begin{tabular}{lcr} \toprule \textbf{模块} & \textbf{参数量} & \textbf{占比} \\ \midrule Input Projection (19$\rightarrow$128) & 2,432 + 128 = 2,560 & 0.3\% \\ BiLSTM Layer 1 & 4 × [(128+128)×128 + 128] × 2 & 65.9\% \\ BiLSTM Layer 2 & 4 × [(256+128)×128 + 128] × 2 & \\ LSTM Projection (256$\rightarrow$128) & 32,896 + 128 = 33,024 & 3.4\% \\ MHA (4 heads, d\_k=32) & 4 × 3 × (128×32) + (128×128) & 6.6\% \\ 3 Output Heads (128$\rightarrow$32$\rightarrow$4) & 3 × [(128×32+32) + (32×4+4)] & 1.3\% \\ \bottomrule \textbf{总计} & \textbf{983,628} & 100.0\% \\ \bottomrule \end{tabular} \end{table} LSTM层占参数量的约三分之二,符合序列模型中以循环层为主导的典型分布。注意力层仅占6.6\%的参数,但其在决定模型行为方面起关键作用——它决定了哪些时间步的信息被传递到输出头。 \subsection{输入投影层} 将19维气象特征通过全连接映射至128维: \begin{equation} \mathbf{X}' = \mathbf{X}\mathbf{W}_{\text{proj}} + \mathbf{b}_{\text{proj}}, \quad \mathbf{X} \in \mathbb{R}^{B \times 14 \times 19} \end{equation} 投影至128维是性能与效率的折中——更高维度(256/512)会显著增加LSTM的计算量,更低维度(64)可能导致信息瓶颈。 \subsection{BiLSTM编码层} 使用2层堆叠双向LSTM: \begin{itemize} \item 输入维:128(经投影层) \item 隐藏维:128(每方向) \item 双向输出维:256(前向128 + 后向128连接) \item 层间Dropout:0.3 \item 激活函数:tanh(LSTM标准) \end{itemize} 2层堆叠使低层LSTM捕获局部时序模式(如日际温度波动),高层LSTM整合这些模式为更抽象的序列表示。Dropout作用于层间而非时间步内,避免破坏LSTM的时序连续性。 \subsection{多头自注意力层} 在LSTM输出的14个时间步上施加4头自注意力: \begin{itemize} \item 头数$h=4$:提供4个不同的「视角」审视序列 \item 每头维度$d_k=32$:128/4,平衡表达能力与计算量 \item 无位置编码:LSTM输出已编码时序位置信息 \end{itemize} 注意力层后接残差连接和层归一化(LayerNorm),前者提供恒等映射路径缓解深层网络的优化难度,后者稳定训练过程中的激活统计特性。 \subsection{多任务输出层} 三个输出头共享LSTM和注意力层的表示,各自通过2层FC(128$\rightarrow$32$\rightarrow$4)输出对应时间尺度的4类logits。 多任务共享表示的理论依据是:三个时间尺度的风险预测都依赖于同一底层物理机制(温度-湿度-健康的关联),共享特征提取有助于知识复用和正则化,减少各任务的过拟合风险。 \section{训练策略与超参数配置} \subsection{损失函数:Focal Loss} 采用Focal Loss($\alpha=0.5, \gamma=2.0$),详见第2.5节。三任务总损失为等权重平均: \begin{equation} \mathcal{L}_{\text{total}} = \frac{1}{3}\left(\mathcal{L}_{\text{short}} + \mathcal{L}_{\text{medium}} + \mathcal{L}_{\text{long}}\right) \end{equation} \subsection{优化器与调度器} \begin{itemize} \item 优化器:AdamW(lr=$1\times10^{-3}$, weight\_decay=$1\times10^{-4}$, $\beta_1=0.9$, $\beta_2=0.999$) \item 学习率调度:ReduceLROnPlateau(mode='min', factor=0.5, patience=5) \item 梯度裁剪:全局范数上限1.0 \item 早停:patience=15 epoch(验证损失无改善时触发) \item 最大训练轮数:50 \item Batch Size:32 \end{itemize} \subsection{训练超参数调优记录} 针对极度不平衡问题,进行了6轮系统调优实验: \begin{table}[H] \centering \caption{LSTM训练超参数调优实验记录} \label{tab:lstm_tuning} \begin{tabular}{cccccc} \toprule \textbf{轮次} & \textbf{损失函数} & \textbf{类别权重} & \textbf{Batch} & \textbf{采样器} & \textbf{结果} \\ \midrule 1 & Focal($\alpha$=0.5,$\gamma$=2) & 无 & 32 & 无 & Acc=0.940, 全预测0类 \\ 2 & Focal($\alpha$=0.5,$\gamma$=3) & [1,3,5,8] & 32 & 无 & Acc=0.940, 全预测0类 \\ 3 & Focal($\alpha$=0.75,$\gamma$=3) & 1/count 反比 & 16 & 无 & Acc=0.025, 全预测3类 \\ 4 & Focal($\alpha$=0.5,$\gamma$=2) & 1/√count & 64 & 无 & Acc=0.025, 全预测3类 \\ 5 & Focal($\alpha$=0.5,$\gamma$=2) & 无 & 32 & 1/√count 采样 & Acc=0.940, 全预测0类 \\ 6 & Focal($\alpha$=0.5,$\gamma$=2) & 1/√count & 16 & 1/√count 采样 & Acc=0.025, 收敛缓慢 \\ \bottomrule \end{tabular} \end{table} 调优揭示了一个困境:无权重时模型收敛至多数类;有权重或采样时模型过度预测少数类。两头极端之间的「中间地带」极窄——一旦权重超过阈值,优化轨迹迅速跳变至对端。这一现象可解释为:交叉熵损失的梯度场在极度不平衡数据上存在两个支配性的吸引域(全部预测0类或全部预测3类),两者之间的鞍点难以维持。 \section{XGBoost基线模型} \subsection{模型配置} \begin{itemize} \item 估计器数量(n\_estimators):200 \item 最大深度(max\_depth):6 \item 学习率(learning\_rate):0.05 \item 子采样率(subsample):1.0(使用全部样本) \item 列采样率(colsample\_bytree):1.0 \item 正则化:$\lambda=1$(L2),$\gamma=0$(最小分裂增益) \item 目标函数:multi:softmax(4类多分类) \item 评估指标:mlogloss + merror \item 设备:CUDA(GPU加速) \item 分类器数量:3个独立模型(short/medium/long) \end{itemize} \subsection{输入特征处理} XGBoost不原生处理三维时序数据,将(N, 14, 19)的序列展平为(N, 266)的扁平特征矩阵。这种展平策略保留了全部特征信息但丢失了时序的序关系(order relationship)。XGBoost通过树的分裂规则间接捕获特征交互,不依赖时序顺序。 \section{评估指标设计} \subsection{宏平均F1(Macro F1)——首要指标} 宏平均F1对每个类别独立计算F1后取算术平均,给予所有类别同等权重: \begin{equation} \text{F1}_c = \frac{2 \times \text{Precision}_c \times \text{Recall}_c}{\text{Precision}_c + \text{Recall}_c}, \quad c \in \{0, 1, 2, 3\} \end{equation} \begin{equation} \text{Macro F1} = \frac{1}{4}\sum_{c=0}^{3} \text{F1}_c \end{equation} 选择Macro F1而非准确率的原因:在95\%-5\%的类别分布下,准确率高度偏向多数类(全预测0类可获95\%准确率但F1≈0.25)。Macro F1通过等权平均消除了这一偏差。 \subsection{辅助指标} \begin{itemize} \item \textbf{混淆矩阵}:$\mathbf{C} \in \mathbb{N}^{4\times 4}$,元素$C_{ij}$为真实类$i$被预测为类$j$的样本数。提供模型在各风险等级的详细诊断信息 \item \textbf{准确率}:作为参考指标报告,但不作为模型选择依据(因其在不平衡数据上的欺骗性) \end{itemize} \subsection{评估流程} \begin{enumerate} \item 加载训练时的最佳checkpoint(基于验证损失) \item 在测试集(164,365条样本)上进行推理 \item 分别计算三个时间尺度的混淆矩阵和指标 \item 生成LSTM vs XGBoost的对比图表 \end{enumerate} 评估代码实现于\texttt{src/models/evaluate.py},使用matplotlib生成300dpi的PNG图表,中文标注通过SimHei字体配置实现。