Files
elderly-heat-warning/thesis/chapters/ch4-model.tex
T

196 lines
9.5 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\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 层间Dropout0.3
\item 激活函数:tanhLSTM标准)
\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 优化器:AdamWlr=$1\times10^{-3}$, weight\_decay=$1\times10^{-4}$, $\beta_1=0.9$, $\beta_2=0.999$
\item 学习率调度:ReduceLROnPlateaumode='min', factor=0.5, patience=5
\item 梯度裁剪:全局范数上限1.0
\item 早停:patience=15 epoch(验证损失无改善时触发)
\item 最大训练轮数:50
\item Batch Size32
\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:softmax4类多分类)
\item 评估指标:mlogloss + merror
\item 设备:CUDAGPU加速)
\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字体配置实现。