惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
C
Check Point Blog
D
Docker
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
量子位
有赞技术团队
有赞技术团队
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
M
MIT News - Artificial intelligence
B
Blog
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
月光博客
月光博客

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
记忆自编码器 MemAE (Memory AutoEncoder)
Yiwei Zhang · 2023-12-19 · via 又见苍岚

记忆自编码器是对深度自编码器的改进,提高对异常数据的敏感程度,即两极分化正常样本和异常样本的重构误差,本文记录相关内容。

简介

是在 AE 上的改进,主要目的:

  • 异常检测(检测图像异常区域)
  • 特征提取(提取指定的特征)

基本原理是运用记忆模块调整模型的编码行为,在不过度影响模型拟合正常数据的同时限制其拟合能力。

原始论文

模型

  1. 编码器(Encoder)

$$
z=f_e(x;\theta_e)
$$

$\theta_e$表示 Encoder 网络的权重,$f_e(x;\theta_e)$表示对输入变量 x 进行编码操作,降维输入图像张量

  1. 记忆模块(Memory Module)
  2. 解码器(Decoder)

$$
\hat{x}=f_d(\hat{z};\theta_d)
$$

$\theta_d$表示 Decoder 网络的权重,$f_d(\hat{z};\theta_d)$表示对输入变量$\hat{z}$进行解码操作,将数据还原成图像

记忆模块

memory 为一个包含 N 个行向量的矩阵$M\in R^{N\times C}$, 每个行向量$m_i$表示 M 记忆模块的行。

记忆模块的计算流程如下:

  1. 编码器输出张量 z 和记忆矩阵 M 内积和 softmax 归一化,输出 $\omega$

$$ \omega=\frac{exp(z*m_i)}{\sum_{i=1}^Nz*m_i} $$

说明: 论文公布的源代码里面没有使用论文描述的余弦相似度,而是输入值和记忆模块内积,再进行 softmax。作者的回答是使用余弦相似度,导致权重全都趋近 0,所以作者认为余弦相似度不适合该模型,所以改用矩阵内积。所以这里把计算公式修改成与源代码一致。 https://github.com/donggong1/memae-anomaly-detection/issues/12#issuecomment-659951371

  1. 利用设定阈值入,对$\omega$进行稀疏化,低于阈值入的元素置 0

$$
\hat{\omega}_i=\frac{max(\omega_i-\lambda,0)\omega_i}{|\omega_i-\lambda|+\varepsilon}
$$

记忆模块的损失函数:

$$ E(\hat{\omega^t})=\sum_{i=1}^T-\hat{\omega}*log(\hat{\omega_i}) $$

损失函数是个针对记忆模块 1 的计算结果权重的信息熵,增加$\omega$的稀疏性,限制特征的个数,实现降维的同时,避免不重要信息的影响。

损失函数

熵函数取最小,提高记忆模块的稀疏性,增加模型的约束条件,避免过拟合,类似正则化项

$$ L(\theta_e,\theta_d,\mathbf{M})=\frac1T\sum_{t=1}^T\left(R\Big(\mathbf{x}^t,\mathbf{\hat{x}}^t\Big)+\alpha E\Big(\mathbf{\hat{w}}^t\Big)\right) $$

其中$R= |$x$- $x$|_2^2$表示重构误差,超参数$\alpha$原文作者选择的是 0.0002

参考资料

文章链接:
https://www.zywvvd.com/notes/study/deep-learning/anomaly-detection/memae/memae/