\chapter{多时间尺度预警模型设计}

本章详细阐述LSTM-Attention深度学习模型和XGBoost基线模型的设计细节、训练策略和评估框架。

\section{模型总体架构}

本研究设计的LSTM-Attention模型采用「编码器-注意力-多任务输出」的架构范式，整体分为四个功能模块：

\begin{enumerate}
    \item \textbf{输入投影层}：将19维气象特征向量线性映射至128维隐藏空间
    \item \textbf{双向LSTM编码层}：2层BiLSTM（隐藏维度128），从输入序列中提取时序模式
    \item \textbf{多头自注意力层}：4头自注意力机制，捕捉序列中不同时间步之间的依赖关系
    \item \textbf{多任务输出层}：3个独立的全连接头，分别输出短期、中期和长期风险等级预测
\end{enumerate}

模型总参数量为983,628，其中LSTM层约占75\%（740K参数），注意力层约占8\%（79K参数），输出头约占17\%。模型实现基于PyTorch 2.12.0框架，在NVIDIA GeForce RTX 4060 Laptop GPU（8GB VRAM）上进行训练。

\section{输入投影层}

输入投影层将19维原始气象特征通过一个全连接层映射至128维隐藏空间：

\begin{equation}
\mathbf{X}' = \mathbf{X}\mathbf{W}_{\text{proj}} + \mathbf{b}_{\text{proj}}
\end{equation}

其中$\mathbf{X} \in \mathbb{R}^{B \times 14 \times 19}$为输入批次（$B$为batch size），$\mathbf{W}_{\text{proj}} \in \mathbb{R}^{19 \times 128}$为投影矩阵。投影层的作用是在LSTM处理之前将特征维度提升至与隐藏状态维度一致，避免LSTM在低维输入上的信息瓶颈。

\section{双向LSTM编码层}

\subsection{层结构与参数}

LSTM编码器由2层堆叠的双向LSTM组成：

\begin{itemize}
    \item 输入维度：128（经投影层的特征向量）
    \item 隐藏维度：128
    \item 层数：2（堆叠式，第一层的输出作为第二层的输入）
    \item 方向：双向（bidirectional），每层前向和后向LSTM各128维隐藏状态
    \item Dropout：0.3（层间dropout，防止过拟合）
\end{itemize}

由于是双向LSTM，每个时间步的输出维度为$2 \times 128 = 256$（前向+后向拼接）。经过LSTM编码后，输入序列$\mathbf{X}' \in \mathbb{R}^{B \times 14 \times 128}$被转换为时序特征$\mathbf{H} \in \mathbb{R}^{B \times 14 \times 256}$。

\subsection{LSTM投影层}

在LSTM输出之后、注意力层之前，插入一个线性投影层将256维双向输出映射回128维：

\begin{equation}
\mathbf{H}' = \mathbf{H}\mathbf{W}_{\text{lstm\_proj}} + \mathbf{b}_{\text{lstm\_proj}}
\end{equation}

投影至128维是为了匹配后续多头注意力层的输入期望，同时降低计算量。

\section{多头自注意力层}

\subsection{层配置}

多头自注意力机制在时序维度上操作，允许模型动态地关注14天窗口中的关键时间步：

\begin{itemize}
    \item 头数（$h$）：4
    \item 每个头的维度（$d_k$）：32（总嵌入维度128 / 4个头）
    \item 位置编码：无需显式位置编码，LSTM的输出已包含时序位置信息
\end{itemize}

\subsection{残差连接与层归一化}

参照Transformer的后归一化（post-norm）架构，在多注意力子层后加入残差连接和层归一化：

\begin{equation}
\mathbf{Z} = \text{LayerNorm}(\mathbf{H}' + \text{MultiHead}(\mathbf{H}', \mathbf{H}', \mathbf{H}'))
\end{equation}

残差连接确保梯度可以绕过注意力层直接回传至LSTM，缓解深层网络的梯度消失问题。层归一化稳定了训练过程中的激活分布。

\subsection{全局平均池化}

对注意力输出沿时间维度进行全局平均池化，得到固定长度的序列级特征表示：

\begin{equation}
\mathbf{z} = \frac{1}{14}\sum_{t=1}^{14} \mathbf{Z}_{t,:}
\end{equation}

池化后的向量$\mathbf{z} \in \mathbb{R}^{128}$作为三个输出头的共享输入。

\section{多任务输出层}

考虑到短期、中期和长期预警任务之间的内在关联（都依赖于相同的底层天气-健康关联机制），采用多任务学习（Multi-Task Learning）架构。三个输出头共享LSTM和注意力层的特征表示，通过参数共享实现知识迁移和正则化。

每个输出头由两个全连接层组成：

\begin{equation}
\mathbf{h}_{\text{head}}^{(k)} = \text{ReLU}(\mathbf{z}\mathbf{W}_1^{(k)} + \mathbf{b}_1^{(k)}), \quad k \in \{\text{short}, \text{medium}, \text{long}\}
\end{equation}
\begin{equation}
\hat{\mathbf{y}}^{(k)} = \mathbf{h}_{\text{head}}^{(k)}\mathbf{W}_2^{(k)} + \mathbf{b}_2^{(k)}
\end{equation}

其中第一层为128→32维（带ReLU激活），第二层为32→4维（输出4个风险等级的对数几率logits）。三个头的输出经softmax归一化后得到各风险等级的概率分布。

\section{损失函数：Focal Loss}

鉴于训练集中极度不平衡的类别分布（低风险类占94-97\%），传统交叉熵损失会导致模型倾向于始终预测低风险类。本研究采用Focal Loss（详见第2.5节式2.26）作为损失函数，设置$\alpha=0.5, \gamma=2.0$。

三个预测头的总损失定义为等权重求和：

\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}

各头使用Focal Loss独立计算损失，权重相等以平衡三个时间尺度的重要性。

\section{优化器与训练策略}

\subsection{优化器配置}

使用AdamW优化器（Adam的权重衰减修正版），参数设置如下：
\begin{itemize}
    \item 初始学习率（lr）：$1 \times 10^{-3}$
    \item 权重衰减（weight\_decay）：$1 \times 10^{-4}$
    \item $\beta_1 = 0.9, \beta_2 = 0.999$
\end{itemize}

\subsection{学习率调度}

采用ReduceLROnPlateau策略，当验证损失连续5个epoch未下降时，学习率乘以0.5：

\begin{equation}
lr_{\text{new}} = lr_{\text{old}} \times 0.5 \quad \text{if} \quad \Delta_{\text{val\_loss}} \leq 0 \text{ for 5 consecutive epochs}
\end{equation}

\subsection{早停与梯度裁剪}

\textbf{早停（Early Stopping）：}验证损失连续15个epoch未改善时终止训练，防止过拟合并节省计算资源。

\textbf{梯度裁剪（Gradient Clipping）：}将梯度的全局范数限制在1.0以内，防止梯度爆炸：

\begin{equation}
\|\mathbf{g}\|_{\text{new}} = \min\left(1.0 / \|\mathbf{g}\|, 1\right) \cdot \mathbf{g}
\end{equation}

\subsection{训练配置}

\begin{itemize}
    \item Batch size：32
    \item 最大训练轮数：50 epoch
    \item 数据加载：随机打乱（shuffle=True），不使用加权采样器
    \item 设备：NVIDIA RTX 4060 Laptop GPU（CUDA 12.6）
    \item 每轮训练时间：约2.5分钟（batch\_size=32时约24,000个batch/epoch）
\end{itemize}

\section{XGBoost基线模型}

为评估深度学习方法的有效性，选择XGBoost作为传统机器学习基线。XGBoost的核心优势在于其基于树的集成结构天然适合表格型数据，且对类别不平衡具有较好的鲁棒性。

\subsection{模型配置}

\begin{itemize}
    \item 估计器数量（n\_estimators）：200
    \item 最大树深度（max\_depth）：6
    \item 学习率（learning\_rate）：0.05
    \item 设备：CUDA（GPU加速）
    \item 分类器数量：3个（分别对应短期、中期、长期预测）
\end{itemize}

\subsection{输入处理}

XGBoost不直接处理三维时序数据，将(N, 14, 19)的输入序列展平为(N, 266)的二维特征矩阵（14×19=266维）。这种「时间展平」策略将时序信息转换为空间特征，适合基于树的模型处理。

\section{评估指标}

针对多分类任务和类别不平衡特性，采用以下指标：

\begin{itemize}
    \item \textbf{准确率（Accuracy）：}$\text{Acc} = \frac{TP + TN}{TP + TN + FP + FN}$
    \item \textbf{宏平均F1分数（Macro F1-Score）：}各类别F1分数的算术平均，给予少数类与多数类同等权重，是评估不平衡分类任务的核心指标
    \item \textbf{混淆矩阵（Confusion Matrix）：}$\mathbf{C} \in \mathbb{R}^{4 \times 4}$，$C_{ij}$为真实类别$i$被预测为类别$j$的样本数
\end{itemize}

宏平均F1是本研究的首要评估指标，因为它不受类别不平衡的干扰，能够真实反映模型在各风险等级、特别是高风险等级上的预测能力。
