181 lines
8.2 KiB
TeX
181 lines
8.2 KiB
TeX
\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是本研究的首要评估指标,因为它不受类别不平衡的干扰,能够真实反映模型在各风险等级、特别是高风险等级上的预测能力。
|