paddlets.models.anomaly.dl.anomaly_transformer

基于Anomaly Transformer论文复现模型,论文地址:”<https://arxiv.org/pdf/2110.02642.pdf>`_ .

模型基本特征。

模型基本结构: 一个堆积异常注意力机制的网络模型。

Anomaly Attention的两个分支:一个是自注意力机制,另一个是高斯核函数。

反向传播过程中: 同时计算局部关联损失差异和全局关联损失差异,这是用来区分正常数据和异常数据的方法。

class AnomalyTransformer(in_chunk_len: int, sampling_stride: int = 1, loss_fn: ~typing.Callable[[...], ~paddle.Tensor] = <function series_prior_loss>, optimizer_fn: ~typing.Callable[[...], ~paddle.optimizer.optimizer.Optimizer] = <class 'paddle.optimizer.adam.Adam'>, threshold_fn: ~typing.Callable[[...], float] = <function anomaly_get_threshold>, criterion: ~typing.Callable[[...], ~paddle.Tensor] = MSELoss(), threshold: ~typing.Optional[float] = None, threshold_coeff: float = 1.0, anomaly_score_fn: ~typing.Optional[~typing.Callable[[...], ~typing.List[float]]] = None, pred_adjust: bool = True, pred_adjust_fn: ~typing.Callable[[...], ~numpy.ndarray] = <function result_adjust>, optimizer_params: ~typing.Dict[str, ~typing.Any] = {'learning_rate': 0.0001}, eval_metrics: ~typing.List[str] = [], callbacks: ~typing.List[~paddlets.models.common.callbacks.callbacks.Callback] = [], batch_size: int = 32, max_epochs: int = 100, verbose: int = 1, patience: int = 10, seed: ~typing.Union[None, int] = None, temperature: int = 50, k: int = 3, anormly_ratio=1, d_model: int = 512, n_heads: int = 8, e_layers: int = 3, d_ff: int = 512, dropout: float = 0.0, activation: ~typing.Callable[[...], ~paddle.Tensor] = <function gelu>, output_attention=True)[源代码]

基类:AnomalyBaseModel

Anomaly Transformer神经网络用于计算异常检测。

参数
  • in_chunk_len (int) – 模型输入的时间序列长度。

  • sampling_stride (int) – 每两个相邻样本之间的采集间隔。

  • loss_fn (Callable[..., paddle.Tensor]) – 损失函数。

  • optimizer_fn (Callable[..., Optimizer]) – 优化方法。

  • threshold_fn (Callable[..., float]|None) – 计算阈值的方法。

  • criterion (Callable[..., paddle.Tensor]) – 计算重建损失的损失函数。

  • threshold (float|None) – 用于判别异常的阈值。

  • threshold_coeff (float) – 阈值的系数。

  • anomaly_score_fn (Callable[..., List[float]]|None) – 用于计算异常得分的方法。

  • pred_adjust (bool) – 是否根据实际标签调整预测结果。

  • pred_adjust_fn (Callable[..., np.ndarray]|None) – 调整预测结果的方法。

  • optimizer_params (Dict[str, Any]) – 优化器参数。

  • eval_metrics (List[str]) – 模型评估指标。

  • callbacks (List[Callback]) – 自定义回调函数。

  • batch_size (int) – 每个训练批次的样本数量。

  • max_epochs (int) – 训练过程的最大迭代次数。

  • verbose (int) – 详细模式。

  • patience (int) – 设置多少轮迭代没有提升后,则提前结束训练。

  • seed (int|None) – 全局随机数种子, 注: 保证每次模型参数初始化一致。

  • temperature (int|float) – 一个用于调整全局关联损失和局部关联损失的参数。

  • k (int) – 优化策略:放大关联差异。

  • anormly_ratio (int|float) – 训练集和测试集比例。

  • d_model (int) – anomaly transformer模型的输入维度大小。

  • n_heads (int) – 模型多头的数量。

  • e_layers (int) – 注意力层的堆积数量。

  • d_ff (int) – 前馈神经网络的通道数量。

  • dropout (float) – Dropout参数。

  • activation (Callable[..., paddle.Tensor]) – AnomalyAttention中的注意力函数。

  • output_attention (float) – 是否要输出全局向量,相邻向量,高斯核参数向量。

_in_chunk_len

模型输入的时间序列长度。

Type

int

_sampling_stride

每两个相邻样本之间的采集间隔。

Type

int

_loss_fn

损失函数。

Type

Callable[…, paddle.Tensor]

_optimizer_fn

优化方法。

Type

Callable[…, Optimizer]

_threshold_fn

计算阈值的方法。

Type

Callable[…, float]|None

_criterion

计算重建损失的损失函数。

Type

Callable[…, paddle.Tensor]

_threshold

用于判别异常的阈值。

Type

float|None

_threshold_coeff

阈值的系数。

Type

float

_anomaly_score_fn

用于计算异常得分的方法。

Type

Callable[…, List[float]]|None

_pred_adjust

是否根据实际标签调整预测结果。

Type

bool

_pred_adjust_fn

调整预测结果的方法。

Type

Callable[…, np.ndarray]|None

_optimizer_params

优化器参数。

Type

Dict[str, Any]

_eval_metrics

模型评估指标。

Type

List[str]

_callbacks

自定义回调函数。

Type

List[Callback]

_batch_size

每个训练批次的样本数量。

Type

int

_max_epochs

训练过程的最大迭代次数。

Type

int

_verbose

详细模式。

Type

int

_patience

设置多少轮迭代没有提升后,则提前结束训练。

Type

int

_seed

全局随机数种子, 注: 保证每次模型参数初始化一致。

Type

int|None

_temperature

一个用于调整全局关联损失和局部关联损失的参数。

Type

int|float

_k

优化策略:放大关联差异。

Type

int

_anormly_ratio

训练集和测试集比例。

Type

int|float

_d_model

anomaly transformer模型的输入维度大小。

Type

int

_n_heads

模型多头的数量。

Type

int

_e_layers

注意力层的堆积数量。

Type

int

_d_ff

前馈神经网络的通道数量。

Type

int

_dropout

Dropout参数。

Type

float

_activation

AnomalyAttention中的注意力函数。

Type

Callable[…, paddle.Tensor]

_output_attention

是否要输出全局向量,相邻向量,高斯核参数向量。

Type

float

_adjust_lr

动态调整学习率。

Type

功能。

predict(test_dataset: TSDataset, train_dataset: TSDataset = None) TSDataset[源代码]

得出每个批次的异常label,输出为tsdataset数据类型。

参数
  • train_dataset (TSDataset) – 训练集。

  • test_dataset (TSDataset) – 被预测的数据。

返回

TSDataset.

predict_score(tsdataset: TSDataset) TSDataset[源代码]

得出每个批次的异常得分,输出为tsdataset数据类型。

参数

tsdataset (TSDataset) – 被预测的数据。

返回

TSDataset.

fit(train_tsdataset: TSDataset, valid_tsdataset: Optional[TSDataset] = None)[源代码]
在self._network训练一个神经网络。

加载训练集用于训练,加载验证集用于验证。

参数
  • train_tsdataset (TSDataset) – 训练集。

  • valid_tsdataset (TSDataset|None) – 验证集,训练过程中模型早停参数。