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



我训练了一个自动编码器来识别"正"时间序列(网络是一个简单的全连接网络,没有递归层(。问题是,根据我的顾问的说法,我应该尝试使用潜在空间的一些统计数据来检测异常(比如好数据和异常数据之间潜在空间的直方图之间的差异(,但当我预测具有异常值的时间序列时,我会得到与具有好数据相同的内部表示。我相信这是由于我的网络只能复制正常的数据。你有什么提示吗?感谢

我猜您正试图通过使用网络的重建误差来检测异常,即在一些正常时间序列上训练,然后在包括异常值的时间序列上检测。如果我进一步猜测正确的话,你的顾问建议内部表示会告诉你更多关于异常的性质,即输入数据的哪些特征最异常。

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

只有当你很清楚中间特征代表的是哪些原始特征时,你才能推断出异常值的根本原因(哪个维度对重建误差的贡献最大(。如果你有一个完全连接的自动编码器和几个隐藏层,其中每个特征对每个神经元的贡献越来越多地与其他特征交织在一起,这可能会非常困难。一个技巧是为每组特征构建一个自动编码器,并将其用作异常预测的集合。这样,已知集合中的每个自动编码器负责一组特征,并且更容易知道每组特征是如何导致异常的。请参阅此处的示例。

相关内容

  • 没有找到相关文章

最新更新