Page 155 - 《软件学报》2026年第7期
P. 155
2840 软件学报 2026 年第 37 卷第 7 期
表 2 数据集信息
数据集名称 大小 采集时间跨度 日志条数
HDFS 1.55 GB 38.7 h 11 175 629
BGL 708 MB 7 m 4 747 963
OpenStack 58.5 MB 29.5 h 207 820
4.1.2 评估指标
预测结果分为 4 类: 真正例 (TP)、真反例 (TN)、假正例 (FP) 和假反例 (FN). 基于上述 4 类预测结果, 本文采
用精确率 (Precision)、召回率 (Recall) 和 F1 值 (F1-score) 这 3 个指标来评估 PCLog 的性能. 其计算公式如下:
TP
Precision = (12)
TP+FP
TP
Recall = (13)
TP+FN
2×Precision×Recall
F1-score = (14)
Precision+Recall
4.1.3 基线方法
在基线方法的选择上, 本文力求覆盖不同类别的代表性技术, 以保证对比的全面性与公平性. 具体而言, 选择
PCA [58] 、IM (invariant mining) [19] 、LogCluster [18] 作为传统方法的代表, 其中 PCA 通过降维方式挖掘日志特征的主
要成分, IM 基于不变量约束规则检测异常, LogCluster 则利用日志模板聚类方法进行异常模式识别. 这 3 类方法
实现简单、可解释性较好, 是传统日志分析的重要代表.
在深度学习方法方面, 本文采用 DeepLog [26] 与 LogAnomaly [59] 作为基线. DeepLog 基于 LSTM 模型进行序列
建模, 是较早应用深度学习于日志异常检测的工作, 代表了时间序列预测范式; LogAnomaly 则结合了注意力机制
与上下文特征建模, 在异常检测准确性和鲁棒性方面均达到较高水平, 两者均属于近年来该领域的代表性甚至是
SOTA 方法.
而在强化学习方法方面, 本文则选取 QLLog [49] 作为对照. QLLog 是少数将强化学习范式引入日志异常检测的
工作之一, 其思想与本文方法最为相关, 为对比不同 RL 框架的性能提供了直接参考.
基于上述基线方法, 我们在 HDFS、BGL 和 OpenStack 数据集上, 使用相同的实验参数、训练集和测试集进
行了对比实验. 所有实验均选取并记录最佳结果.
4.1.4 实验环境
我们基于 Python 3.8 和 PyTorch 1.10.1 实现了 PCLog. 语义向量与状态向量的维度均为 100. 策略网络和价值
网络结构相同, 均由 3 层全连接层组成, 层维度依次为 256、128 和 64. 动作数量设置为数据集中唯一日志事件的
数量, 分组窗口大小设为 20. 超参数的具体设置见表 3. 所有实验均在配置为 64 核 Intel(R) Xeon(R) E5-2640 CPU、
256 GB 内存及 16 GB 显存 GPU 的 Linux 服务器上进行.
表 3 训练超参数设置
参数名 数值 说明
actor_lr 0.000 3 策略网络学习率
critic_lr 0.001 价值网络学习率
ε 0.2 剪切比例
γ 0.99 折扣因子
Epochs 100 优化迭代次数
4.2 RQ1: 与基线方法相比, PCLog 在异常检测中的表现如何?
● 动机: 现有方法 (如 DeepLog、QLLog) 在动态日志模式下精度低、泛化弱, 需验证 PCLog 的整体优势.
● 评估方法: 采用 HDFS、BGL、OpenStack 这 3 个数据集, 训练集为 80% 正常日志, 测试集为 20% 正常日志+

