使用自动编码器的内部表示进行异常检测

时间:2018-11-24 20:28:09

标签: keras neural-network artificial-intelligence autoencoder anomaly-detection

我训练了一个自动编码器来识别“正”时间序列(该网络是一个简单的完全连接的网络,没有递归层)。问题是,从我的顾问的意见出发,我应该尝试使用潜在空间上的一些统计信息来检测异常(例如,良好数据和离群数据之间的潜在空间直方图之间的差异),但是当我预测离群值的时间序列时,我会得到相同的结果内部表示以及良好的数据。我认为这是由于我的网络只能复制正常数据。 你有什么提示吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我想您正在尝试通过使用网络的重构错误来检测异常,即在某些正常时间序列上进行训练,然后在包含异常值的时间序列上进行检测。如果我进一步猜对了,您的顾问建议内部表示会告诉您有关异常性质的更多信息,即输入数据的哪些特征最异常。

首先要注意的是,您的网络仅使用合法数据构建的中间功能在检测模式下不会更改,因此在处理新的网络时,内部表示(中间层每个神经元的权重)不会更改此模式下的数据点。

如果您对中间特征代表哪些原始特征有一个很好的了解,那么您将只能推理出异常值的根本原因(哪个维度对重建误差的影响最大)。如果您具有一个完全连接的自动编码器和几个隐藏层,其中每个特征对每个神经元的贡献与其他特征的交织越来越多,这可能会很难。一种技巧是为每组功能构建一个自动编码器,并将它们用作异常预测的整体。这样,已知合奏中的每个自动编码器都负责一组功能,并且可以更轻松地知道每组功能如何导致异常。请参见示例here