196 lines
9.5 KiB
TeX
196 lines
9.5 KiB
TeX
\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字体配置实现。
|