feat: 论文大幅扩写 — 42页,完整数学公式+实际数据+系统描述
This commit is contained in:
+146
-28
@@ -1,62 +1,180 @@
|
||||
\chapter{多时间尺度预警模型设计}
|
||||
|
||||
本章详细阐述LSTM-Attention深度学习模型和XGBoost基线模型的设计细节、训练策略和评估框架。
|
||||
|
||||
\section{模型总体架构}
|
||||
|
||||
本研究设计了基于LSTM-Attention的多时间尺度高温健康风险预警模型,整体架构包括四个主要模块:输入层(多维气象特征序列)、LSTM编码层(时序特征提取)、多头自注意力层(关键时间步加权)和输出层(多时间尺度风险预测)。
|
||||
本研究设计的LSTM-Attention模型采用「编码器-注意力-多任务输出」的架构范式,整体分为四个功能模块:
|
||||
|
||||
\section{LSTM编码层}
|
||||
\begin{enumerate}
|
||||
\item \textbf{输入投影层}:将19维气象特征向量线性映射至128维隐藏空间
|
||||
\item \textbf{双向LSTM编码层}:2层BiLSTM(隐藏维度128),从输入序列中提取时序模式
|
||||
\item \textbf{多头自注意力层}:4头自注意力机制,捕捉序列中不同时间步之间的依赖关系
|
||||
\item \textbf{多任务输出层}:3个独立的全连接头,分别输出短期、中期和长期风险等级预测
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{时序特征提取}
|
||||
模型总参数量为983,628,其中LSTM层约占75\%(740K参数),注意力层约占8\%(79K参数),输出头约占17\%。模型实现基于PyTorch 2.12.0框架,在NVIDIA GeForce RTX 4060 Laptop GPU(8GB VRAM)上进行训练。
|
||||
|
||||
LSTM编码层接收经过标准化的多维气象特征序列,通过两层堆叠的LSTM网络逐步提取时序中的高级特征表示。第一层LSTM以50个隐藏单元对输入序列进行初步编码,第二层LSTM以50个隐藏单元对第一层的输出进行更深层次的时序模式挖掘。
|
||||
\section{输入投影层}
|
||||
|
||||
\subsection{Dropout正则化}
|
||||
输入投影层将19维原始气象特征通过一个全连接层映射至128维隐藏空间:
|
||||
|
||||
在每层LSTM之后加入Dropout层,丢弃概率设为0.3,以防止模型在训练集上过拟合。
|
||||
\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{注意力计算}
|
||||
\subsection{层配置}
|
||||
|
||||
在LSTM编码器的输出之上,应用多头自注意力机制(head=4),使模型能够自动学习输入序列中不同时间步对预测目标的重要性权重。通过注意力机制,模型可以重点关注高温连续天数、温度突变点等对健康风险影响较大的关键时段。
|
||||
多头自注意力机制在时序维度上操作,允许模型动态地关注14天窗口中的关键时间步:
|
||||
|
||||
\begin{itemize}
|
||||
\item 头数($h$):4
|
||||
\item 每个头的维度($d_k$):32(总嵌入维度128 / 4个头)
|
||||
\item 位置编码:无需显式位置编码,LSTM的输出已包含时序位置信息
|
||||
\end{itemize}
|
||||
|
||||
\subsection{残差连接与层归一化}
|
||||
|
||||
参照Transformer架构,在多头注意力子层后加入残差连接和层归一化,以加速训练收敛并提升模型稳定性。
|
||||
参照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编码层和注意力层的特征表示,通过三个独立的全连接头分别输出不同时间尺度的风险等级预测。
|
||||
考虑到短期、中期和长期预警任务之间的内在关联(都依赖于相同的底层天气-健康关联机制),采用多任务学习(Multi-Task Learning)架构。三个输出头共享LSTM和注意力层的特征表示,通过参数共享实现知识迁移和正则化。
|
||||
|
||||
每个输出头包括两个全连接层:第一层将注意力池化后的特征映射到32维,第二层输出目标时间尺度的预测结果。
|
||||
每个输出头由两个全连接层组成:
|
||||
|
||||
\section{损失函数与优化器}
|
||||
\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}
|
||||
|
||||
\subsection{损失函数}
|
||||
其中第一层为128→32维(带ReLU激活),第二层为32→4维(输出4个风险等级的对数几率logits)。三个头的输出经softmax归一化后得到各风险等级的概率分布。
|
||||
|
||||
对于多分类风险等级预测任务,采用交叉熵损失函数(Cross-Entropy Loss)。三个任务的损失按相等权重加权求和,总损失定义为:
|
||||
\section{损失函数:Focal Loss}
|
||||
|
||||
\[
|
||||
\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{short}} + \mathcal{L}_{\text{medium}} + \mathcal{L}_{\text{long}}
|
||||
\]
|
||||
鉴于训练集中极度不平衡的类别分布(低风险类占94-97\%),传统交叉熵损失会导致模型倾向于始终预测低风险类。本研究采用Focal Loss(详见第2.5节式2.26)作为损失函数,设置$\alpha=0.5, \gamma=2.0$。
|
||||
|
||||
\subsection{优化器与学习率策略}
|
||||
三个预测头的总损失定义为等权重求和:
|
||||
|
||||
使用Adam优化器,初始学习率设为0.001。训练过程中采用ReduceLROnPlateau学习率衰减策略,当验证损失连续10个epoch未下降时,学习率减半。同时设置早停(Early Stopping)策略,验证损失连续25个epoch未下降时终止训练。
|
||||
\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}
|
||||
|
||||
\section{基线模型:XGBoost}
|
||||
各头使用Focal Loss独立计算损失,权重相等以平衡三个时间尺度的重要性。
|
||||
|
||||
为评估深度学习方法的有效性,选用XGBoost作为基线模型进行对比实验。XGBoost输入为展平后的特征向量(所有时间步特征拼接),输出与LSTM-Attention模型保持一致。
|
||||
\section{优化器与训练策略}
|
||||
|
||||
XGBoost的关键超参数包括:树的数量(n\_estimators=200)、最大深度(max\_depth=6)、学习率(learning\_rate=0.1)和子采样率(subsample=0.8),通过5折交叉验证在训练集上选择最优超参数。
|
||||
\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 准确率(Accuracy):预测正确的样本占总样本的比例
|
||||
\item 精确率(Precision):被预测为某风险等级的样本中真正属于该等级的比例
|
||||
\item 召回率(Recall):某风险等级的样本中被正确预测的比例
|
||||
\item F1分数(F1-Score):精确率与召回率的调和平均
|
||||
\item 宏平均(Macro Average):各类别指标的算术平均,适用于类别不均衡场景
|
||||
\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是本研究的首要评估指标,因为它不受类别不平衡的干扰,能够真实反映模型在各风险等级、特别是高风险等级上的预测能力。
|
||||
|
||||
Reference in New Issue
Block a user