Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

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

  • 摘要
  • 1.介绍
  • 2.相关工作
    • 异常检测
    • Memory networks
  • 3. Memory-augmented Autoencoder
    • 3.1概述
    • 3.2. Encoder and Decoder
    • 3.3. Memory Module with Attention-based Sparse Addressing
      • 3.3.1 Memory-based Representation
      • 3.3.2 Attention for Memory Addressing
      • 3.3.3 Hard Shrinkage for Sparse Addressing
    • 3.4. Training
  • 4.实验
    • 4.1. Experiments on Image Data
    • 4.2. Experiments on Video Anomaly Detection
    • 4.3. Experiments on Cybersecurity Data
    • 4.4. Ablation Studies
  • 5.总结
  • 6.阅读总结

文章信息:
在这里插入图片描述

发表于ICCV 2019
原文链接:https://openaccess.thecvf.com/content_ICCV_2019/papers/Gong_Memorizing_Normality_to_Detect_Anomaly_Memory-Augmented_Deep_Autoencoder_for_Unsupervised_ICCV_2019_paper.pdf
源码链接:https://github.com/donggong1/memae-anomaly-detection

摘要

提出了一种改进的自编码器(Memory-Augmented Autoencoder,MemAE),用于异常检测。传统的深度自编码器在正常数据上训练,期望对于异常输入产生更高的重构误差,以此作为鉴别异常的标准。然而,在实践中,这个假设并不总是成立,有时自编码器的“泛化”效果很好,甚至可以很好地重构异常数据,导致漏检。为了克服这一自编码器异常检测方法的缺陷,文章提出了将自编码器与内存模块相结合的MemAE

MemAE的基本思想是在训练阶段通过memory来存储和表示正常数据的原型元素,从而引入了对正常数据的更深层次的学习。具体而言,对于给定的输入,MemAE首先通过编码器获取编码,然后将其用作查询以检索用于重构的最相关的memory项。在训练阶段,memory内容会被更新,并被鼓励表示正常数据的原型元素。在测试阶段,学到的memory将保持固定,重构将从少数选择的正常数据的memory记录中获得。因此,重构将倾向于接近正常样本,从而增强了对异常的检测。

MemAE摆脱了对数据类型的假设,因此具有广泛适用性,可应用于不同的任务。实验证明了MemAE在各种数据集上的出色泛化能力和高效性。通过引入内存模块,MemAE在异常检测中取得了更好的性能,克服了传统自编码器在某些情况下过度泛化的问题。

1.介绍

异常检测是一项具有关键应用的重要任务,例如在视频监控领域。在无监督异常检测中,任务是仅根据正常数据示例学习正常模式,然后识别不符合正常模式的样本作为异常。这是一项具有挑战性的任务,因为缺乏人为监督。特别是当数据点位于高维空间(例如视频)时,问题变得更加困难,因为对高维数据建模通常非常具有挑战性。

深度自编码器(AE)是在无监督设置中对高维数据进行建模的强大工具。它包括一个编码器,用于从输入中获取压缩编码,以及一个解码器,可以从编码中重构数据。编码实质上充当了信息瓶颈,迫使网络提取高维数据的典型模式。在异常检测的背景下,AE通常通过最小化正常数据上的重构误差进行训练,然后使用重构误差作为异常的指标。通常假设重构误差对于正常输入会更低,因为它们接近训练数据,而对于异常输入则会更高。然而,这个假设并不总是成立,有时AE的“泛化”效果很好,甚至可以很好地重构异常输入。

为了缓解AE的缺点,文章提出了通过memory模块增强深度自编码器的方法,并引入了一种新模型,即Memory-Augmented Autoencoder(MemAE)。在MemAE中,给定一个输入,不直接将其编码馈送到解码器,而是将其用作查询以检索memory中最相关的项目。这些项目然后被聚合并传递给解码器。具体来说,这个过程通过使用基于注意力的memory寻址实现。作者进一步提出使用可微分的硬收缩运算符来引入memory寻址权重的稀疏性,这隐含地鼓励memory项在特征空间中接近查询。在MemAE的训练阶段,memory内容将与编码器和解码器一起进行更新。由于稀疏寻址策略,MemAE模型被鼓励以最优和高效的方式使用有限数量的内存槽,使memory记录充当正常训练数据中原型正常模式的记录,从而获得低平均重构误差。在测试阶段,学到的memory内容是固定的,重构将使用少数选择的正常内存项进行,这些项被选为输入编码的邻域。由于重构是从memory中的正常模式获得的,因此它倾向于接近正常数据。因此,如果输入与正常数据不相似,即异常,重构误差趋于突出。

提出的MemAE不受数据类型的假设限制,因此可以广泛应用于解决不同任务。在各种来自不同应用领域的公共异常检测数据集上,作者进行了广泛的实验证明了MemAE的出色泛化能力和高效性。

总结:通过memory模块自编码器,同时memory使用稀疏寻址的方式,简单来说就弱化一些特征,只取强的特征。
在这里插入图片描述
图1:MemAE架构(在训练完之后,memory记录了正常视频的正常模式)

2.相关工作

异常检测

这个不多说了

Memory networks

记忆增强网络已经引起了越来越多的关注,用于解决不同的问题[8, 38, 32]。Graves等人[8]使用外部memory扩展神经网络的能力,其中使用基于内容的注意力来寻址内存。考虑到memory可以稳定地记录信息,Santoro等人[32]使用memory网络来处理一次性学习的问题。外部memory还被用于多模态数据生成[14, 20],以规避模式崩溃问题并保留详细的数据结构。

3. Memory-augmented Autoencoder

3.1概述

提出的MemAE模型由三个主要组件组成 - 编码器(用于对输入进行编码和生成查询),解码器(用于重构)和memory模块(带有内存和相关内存寻址运算符)。如图2所示,给定一个输入,编码器首先获取输入的编码。通过使用编码表示作为查询,memory模块通过基于注意力的寻址运算符检索memory中最相关的项目,然后将它们传递给解码器进行重构。在训练期间,编码器和解码器被优化以最小化重构误差。同时更新memory内容以记录编码正常数据的原型元素。给定一个测试样本,模型仅使用memory中记录的有限数量的正常模式进行重构。因此,重构倾向于接近正常样本,导致正常样本的重构误差较小,而异常样本的误差较大,这将被用作检测异常的标准。

在这里插入图片描述

图2:拟建MemAE示意图。存储器寻址单元以编码z作为查询,得到软寻址权值。内存槽可以用于对整个编码或编码的一个像素上的特征进行建模(如图所示)。请注意 w ^ \widehat{w} w 在硬收缩操作之后被归一化。

3.2. Encoder and Decoder

在这里插入图片描述
结合图2: f e ( ⋅ ) f_e(·) fe()表示编码器, f d ( ⋅ ) f_d(·) fd()表示解码器。x为输入, z ^ \widehat{z} z 为z经过memory处理过后的结果, θ e θ_e θe θ d θ_d θd分别为编码器和解码器的参数。

3.3. Memory Module with Attention-based Sparse Addressing

所提出的存储器模块由一个用于记录原型编码模式的存储器和一个用于访问存储器的基于注意力的寻址算子组成。
在这里插入图片描述

3.3.1 Memory-based Representation

在这里插入图片描述
给定一个查询),经过存储器网络得到 z ^ \widehat{z} z
其中w是具有和为1的非负条目的行向量, w i w_i wi表示w的第i个条目。根据z计算权重向量w。如等式(3)所示,访问存储器需要寻址权重w。超参数N定义了存储器的最大容量。作者的实验表明,MemAE对N,也就是memory的存储大小并不是很敏感。

3.3.2 Attention for Memory Addressing

在MemAE中,存储器M被设计为明确记录训练期间的原型正常模式。我们将存储器定义为具有寻址方案的内容可寻址存储器[38,29],该寻址方案基于存储器项和查询z的相似性来计算注意力权重w。如图1所示,我们通过softmax运算来计算每个权重 w i w_i wi
在这里插入图片描述
d ( ⋅ , ⋅ ) d(·,·) d是余弦相似度,定义如下:
在这里插入图片描述
在训练阶段,MemAE中的解码器被限制为仅使用极少数被寻址的存储器项来执行重构,从而满足了对存储器项的有效利用的要求。因此,重建监督迫使存储器记录输入正常模式中最具代表性的原型模式
在测试阶段,给定训练过的存储器,只能检索存储器中的正常模式进行重建。因此,正常样本自然可以很好地重建。相反,异常输入的编码将被检索到的正常模式所取代,从而导致异常的显著重建错误。

3.3.3 Hard Shrinkage for Sparse Addressing

一些异常可能依旧会重构的非常好,对此作者对w采用了稀疏压缩策略,如公式所示:
在这里插入图片描述
就是将权重向量 w i w_i wi如果小于等于 λ \lambda λ,则置为。排除一些特征。如图,抹去一些相关性低的特征:
在这里插入图片描述
w ^ i \widehat{w}_i w i为压缩后的权重向量。
考虑到w都是非负的,使用RULE函数更简单,公式变成下面的了:
在这里插入图片描述
这种寻址方式只需要前向传播就可以更新了,而不需要反向传播。

3.4. Training

损失函数有两部分组成
重构误差
在这里插入图片描述
最小化 w ^ i \widehat{w}_i w i的熵
在这里插入图片描述
目的是:通过调整或优化 w ^ i \widehat{w}_i w i的值,使得相关的概率分布变得更加确定或不那么随机。

4.实验

作者做了三个实验,一个是在图像上异常检测,一个是在视频上的异常检测、还有一个实在网络安全方面的异常检测,这个不太了解。

4.1. Experiments on Image Data

分别在MNIST和CIFAR-10两个数据集上进行了测试。具体实验设置参考原论文,效果如下:
在这里插入图片描述

4.2. Experiments on Video Anomaly Detection

分别在Ped2、CUHK、SH.Tech三个数据集上进行了测试。效果如下
在这里插入图片描述

4.3. Experiments on Cybersecurity Data

4.4. Ablation Studies

作者对自己提出的模块进行了消融实验,分别对memory和稀疏压缩、熵loss进行了控制变量,结果如下:
在这里插入图片描述

5.总结

  • 提出了一个memory moudle模块
  • 提出了一个稀疏性压缩
  • 使用了熵减loss

6.阅读总结

这篇和前面的两篇思想都是有很大相似性的:引入memory moudle模块,在memory moudle所在的位置和更新策略上有不同的点,损失函数也有一些变化。
2020 cvpr Learning Memory-guided Normality for Anomaly Detection 论文阅读
2021 cvpr Learning Normal Dynamics in Videos with Meta Prototype Network 论文阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224120.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis中使用事务

事务是指一个执行过程,要么全部执行成功,要么失败什么都不改变。不会存在一部分成功一部分失败的情况,也就是事务的ACID四大特性(原子性、一致性、隔离性、持久性)。但是redis中的事务并不是严格意义上的事务&#xff…

论MYSQL注入的入门注解

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 📑什么是MySQL注入&…

AI模型平台Hugging Face存在API令牌漏洞;大型语言模型与任务模型

🦉 AI新闻 🚀 AI模型平台Hugging Face存在API令牌漏洞,黑客可窃取、修改模型 摘要:安全公司Lasso Security发现AI模型平台Hugging Face上存在API令牌漏洞,黑客可获取微软、谷歌等公司的令牌,并能够访问模…

【PyTorch】训练过程可视化

文章目录 1. 训练过程中的可视化1.1. alive_progress1.2. rich.progress 2. 训练结束后的可视化2.1. tensorboardX2.1.1. 安装2.1.2. 使用 1. 训练过程中的可视化 主要是监控训练的进度。 1.1. alive_progress 安装 pip install alive_progress使用 from alive_progress i…

持续集成交付CICD: Sonarqube REST API 查找与新增项目

目录 一、实验 1.SonarQube REST API 查找项目 2.SonarQube REST API 新增项目 一、实验 1.SonarQube REST API 查找项目 (1)Postman测试 转换成cURL代码 (2)Jenkins添加凭证 (3)修改流水线 pipeline…

HCIP考试实验

实验更新中,部分配置解析与分析正在完善中........... 实验拓扑图 实验要求 要求 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3…

SQL server 根据已有数据库创建相同的数据库

文章目录 用导出的脚本创建相同的数据库导出建表脚本再次建表 一些sql语句 用导出的脚本创建相同的数据库 导出建表脚本 首先,右击要导出的数据库名,依次选择任务-生成脚本。 简介(第一页)处选择下一步,然后来到选择…

MAMBA介绍:一种新的可能超过Transformer的AI架构

有人说,“理解了人类的语言,就理解了世界”。一直以来,人工智能领域的学者和工程师们都试图让机器学习人类的语言和说话方式,但进展始终不大。因为人类的语言太复杂,太多样,而组成它背后的机制,…

MAC 系统在vs code中,如何实现自动换行

目录 问题描述: 问题解决: 问题描述: 在vscode中,有些时候,一行内容过多,如果不能自动换行,就需要拖动页面,才能看到完整的内容。如下图两行所示: 问题解决&#xff1a…

国标GB28181设备注册安防监控平台EasyCVR不上线是什么原因?

安防视频监控EasyCVR平台兼容性强,可支持的接入协议众多,包括国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台能将接入的视频…

【Python】Flask + MQTT 实现消息订阅发布

目录 Flask MQTT 实现消息订阅发布准备开始1.创建Flask项目2创建py文件:mqtt_demo.py3.代码实现4.项目运行5.测试5.1 测试消息接收5.2 测试消息发布6、扩展 Flask MQTT 实现消息订阅发布 准备 本次项目主要使用到的库:flask_mqtt pip install flask…

如何自定义负载均衡策略

参考官方资源 Home Netflix/ribbon Wiki (github.com)6. 客户端负载均衡器:功能区 (spring.io)负载均衡策略 内置负载均衡规则类规则描述RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。AvailabilityFilteringRule对以下两种服务器进…

10.Java程序设计-基于SSM框架的微信小程序家教信息管理系统的设计与实现

摘要是论文的开篇,用于简要概述研究的目的、方法、主要结果和结论。以下是一个简化的摘要示例,你可以根据实际情况进行修改和扩展: 摘要 随着社会的发展和教育需求的增长,家教服务作为一种个性化的学习方式受到了广泛关注。为了更…

STM32L051使用HAL库操作实例(13)- 读取IAQ-CORE-C传感器实例

目录 一、前言 二、传感器参数 三、STM32CubeMX配置(本文使用的STM32CubeMX版本为6.1.2)例程使用模拟I2C进行数据读取 1.MCU选型 2.使能时钟 3.时钟配置 4.GPIO口配置 四、配置STM32CubeMX生成工程文件 五、点击GENERATE CODE生成工程文件 六、…

系统设计-缓存介绍

该图说明了我们在典型架构中缓存数据的位置。 沿着流程有多个层次。 客户端应用程序:HTTP 响应可以由浏览器缓存。我们第一次通过 HTTP 请求数据,返回时在 HTTP 标头中包含过期策略;我们再次请求数据,客户端应用程序首先尝试从浏…

看图学源码之 Atomic 类源码浅析二(cas + 分治思想的原子累加器)

原子累加器 相较于上一节看图学源码 之 Atomic 类源码浅析一(cas 自旋操作的 AtomicXXX原子类)说的的原子类,原子累加器的效率会更高 XXXXAdder 和 XXXAccumulator 区别就是 Adder只有add 方法,Accumulator是可以进行自定义运算方…

工业4G路由器助力轨道交通城市地铁实现数字化转型

随着城市的科技不断发展,地铁系统的智能化程度也在不断提高。地铁闸机的网络部署已经成为地铁建设中必不可少环节。而4G路由器作为地铁闸机的网络通讯设备,助力轨道交通地铁闸机实现数字化转型。 工业4G路由器在地铁系统光纤宽带网络遇到故障或其他问题…

2023 金砖国家职业技能大赛网络安全省赛二三阶段样题(金砖国家未来技能挑战赛)

2023 金砖国家职业技能大赛网络安全省赛二三阶段样题(金砖国家未来技能挑战赛) 第二阶段: 安全运营 **背景:**作为信息安全技术人员必须能够掌握操作系统加固与安全管控、防火 墙一般配置、常见服务配置等相关技能,利…

java WebSocket带参数处理使用

1、webSocket实现代码 Component public class WebSocketStompConfig {//这个bean的注册,用于扫描带有ServerEndpoint的注解成为websocket// ,如果你使用外置的tomcat就不需要该配置文件Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpoi…

微信小程序 -- ios 底部小黑条样式问题

问题&#xff1a; 如图&#xff0c;ios有的机型底部伪home键会显示在按钮之上&#xff0c;导致点击按钮的时候误触 解决&#xff1a; App.vue <script>export default {wx.getSystemInfo({success: res > {let bottomHeight res.screenHeight - res.safeArea.bott…