2019 ICCV Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised

异常检测 同时被 2 个专栏收录
5 篇文章 0 订阅
6 篇文章 0 订阅

源码地址:https://github.com/donggong1/memae-anomaly-detection

问题提出

''It has been observed that sometimes the autoencoder “generalizes” so well that it can also reconstruct anomalies well, leading to the miss detection of anomalies ‘’

“The assumption that anomaly incurs higher reconstruction error might be somehow questionable since there are no training samples for anomalies and the reconstruction behavior for anomaly inputs should be unpredictable."

当前基于reconstruction error的方法,因为ae存在的泛化性能,导致anomaly data也可能具有较小的重构损失,检测效果较差。

问题解决

  • 通过memory机制改善autoencoder

在训练过程中利用训练样本更新一个memory bank,该memory bank用来表示normal样本的prototype。测试过程中,memory bank固定,对某一个测试样本搜索一些prototypes并加权求和,代表该测试样本,并进行重构误差计算。(因为是利用normal prototype进行重构,因此对于异常样本,重构损失肯定会增加

  • attention based memory addressing来寻找most relevant items in memory bank
  • hard shrinkage operator to induce sparsity of memory addressing weights

模型结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-80zIWhcX-1631793091790)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916185940401.png)]

  • encoder
    f e : X → Z z = f e ( x ; θ e ) f_e : X \rightarrow Z \\ z = f_e(x;\theta_e) fe:XZz=fe(x;θe)
    z既是x的表征,同时也作为query,在memory bank中搜索最相关的prototype

  • decoder
    x ^ = f d ( z ^ ; θ d ) \hat{x}=f_d(\hat{z};\theta_d) x^=fd(z^;θd)
    其中 z ^ \hat{z} z^是相关prototype经过加权求和所得的表征。

  • memory module

    包含了memory bank用来存储prototype和一个attention-based addressing operator用来计算权重。

    M ∈ R N × C M \in R^{N \times C } MRN×C表示memory bank,也就是保留有N个prototypes,则
    z ^ = ∑ i N w i m i \hat{z} = \sum_i^Nw_im_i z^=iNwimi
    其中权重由encode z经过attention获得:

    利用memory item与query(z)的相似度求权重:
    w i = e x p ( d ( z , m i ) ) ∑ i N e x p ( d ( z , m j ) ) w_i = \frac{exp(d(z,m_i))}{\sum_i^Nexp(d(z,m_j))} wi=iNexp(d(z,mj))exp(d(z,mi))
    其中相似度度量是通过余弦相似度获得。

论文中提到这样的memory module带来的优势如下:

  • 在训练阶段,模型限制retrieve的memory items尽可能少,以此来有效利用memory items,使得prototype最具有代表性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKo3RVCi-1631793091792)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916192722800.png)]

论文展示了模型中的prototype解码之后的图片,可以看到较能代表训练数据

  • 在测试阶段,模型对normal样本可以正常reconstruct,但是对于异常样本,因为memory construct的表征 z ^ \hat{z} z^是正常数据的加权求和,因此重构得到的图片也会接近训练样本,导致重构误差较大。如下图,可以看到当输入一个异常样本,重构的图片在提出的模型下会很接近正常样本。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHUrIBB8-1631793091793)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916193046517.png)]

  • hard shrinkage for sparse addressing

    文章中提到,如果对memory的权重没有限制的话,一个较复杂的加权和仍然可能使得异常样本重构误差较小,因此期望限制所利用的memory items,利用hard shrinkage operation来增加w的稀疏性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MyMTJH1v-1631793091794)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916193938004.png)]

​ 这样的非连续操无法进行反向传播,因此考虑利用一个Relu激活函数:

在这里插入图片描述

​ 实际的操作将阈值设定为[1/N , 3/N]之间,再对操作后的权重进行归一化。

​ 在训练过程中,除了这样一个hard shrinkage操作,论文还提出可以最小化 w ^ i \hat{w}_i w^i的熵,以此来提升其稀疏性。
E ( w ^ ) = ∑ i T − w i ^ l o g ( w i ^ ) E(\hat{w}) = \sum_i^T-\hat{w_i}log(\hat{w_i}) E(w^)=iTwi^log(wi^)
​ 整体损失函数如下,前一部分为重构损失(L2范数)
L = 1 T ∑ t T ( R ( x , x ^ ) + α E ( w ^ ) ) L = \frac{1}{T}\sum_t^T(R(x,\hat{x})+\alpha E(\hat{w})) L=T1tT(R(x,x^)+αE(w^))

实验部分

论文的实验对图像、视频以及文本类数据进行了大量的实验,实验结果如下:

  • 图像

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7drcUZun-1631793091796)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916194843613.png)]

  • 视频

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTWJgi4y-1631793091796)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916194922229.png)]

  • 文本(KDDCUP)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JcscjCDT-1631793091797)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210916194957397.png)]

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

本程序是在python中完成,基于sklearn.cluster中的k-means聚类包来实现数据的聚类,对于里面使用的数据格式如下:(注意更改程序中的相关参数) 138 0 124 1 127 2 129 3 119 4 127 5 124 6 120 7 123 8 147 9 188 10 212 11 229 12 240 13 240 14 241 15 240 16 242 17 174 18 130 19 132 20 119 21 48 22 37 23 49 0 42 1 34 2 26 3 20 4 21 5 23 6 13 7 19 8 18 9 36 10 25 11 20 12 19 13 19 14 5 15 29 16 22 17 13 18 46 19 15 20 8 21 33 22 41 23 69 0 56 1 49 2 40 3 52 4 62 5 54 6 32 7 38 8 44 9 55 10 70 11 74 12 105 13 107 14 56 15 55 16 65 17 100 18 195 19 136 20 87 21 64 22 77 23 61 0 53 1 47 2 33 3 34 4 28 5 41 6 40 7 38 8 33 9 26 10 31 11 31 12 13 13 17 14 17 15 25 16 17 17 17 18 14 19 16 20 17 21 29 22 44 23 37 0 32 1 34 2 26 3 23 4 25 5 25 6 27 7 30 8 25 9 17 10 12 11 12 12 12 13 7 14 6 15 6 16 12 17 12 18 39 19 34 20 32 21 34 22 35 23 33 0 57 1 81 2 77 3 68 4 61 5 60 6 56 7 67 8 102 9 89 10 62 11 57 12 57 13 64 14 62 15 69 16 81 17 77 18 64 19 62 20 79 21 75 22 57 23 73 0 88 1 75 2 70 3 77 4 73 5 72 6 76 7 76 8 74 9 98 10 90 11 90 12 85 13 79 14 79 15 88 16 88 17 81 18 84 19 89 20 79 21 68 22 55 23 63 0 62 1 58 2 58 3 56 4 60 5 56 6 56 7 58 8 56 9 65 10 61 11 60 12 60 13 61 14 65 15 55 16 56 17 61 18 64 19 69 20 83 21 87 22 84 23 41 0 35 1 38 2 45 3 44 4 49 5 55 6 47 7 47 8 29 9 14 10 12 11 4 12 10 13 9 14 7 15 7 16 11 17 12 18 14 19 22 20 29 21 23 22 33 23 34 0 38 1 38 2 37 3 37 4 34 5 24 6 47 7 70 8 41 9 6 10 23 11 4 12 15 13 3 14 28 15 17 16 31 17 39 18 42 19 54 20 47 21 68 22
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值