前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记忆自编码器 MemAE (Memory AutoEncoder)

记忆自编码器 MemAE (Memory AutoEncoder)

作者头像
为为为什么
发布2023-12-26 10:24:58
3760
发布2023-12-26 10:24:58
举报
文章被收录于专栏:又见苍岚又见苍岚

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

简介

是在 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://cloud.tencent.com/developer/article/2374477

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 模型
  • 记忆模块
  • 损失函数
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档