AE(AutoEncoder) 学习笔记


Auto-Encoder, AE

传统的自动编码器是一种数据的压缩算法
其算法包括编码阶段解码阶段,且拥有对称的结构。

AE的应用:

  • 第一是数据去噪
  • 第二是为进行可视化而降维

公式描述为:

\[h_1 = \sigma _e (W_1 x + b_1)\\
y = \sigma_d(W_2h_1 + b_2) \\
\]

\(e\rightarrow encoder\), \(d \rightarrow decoder\)

损失函数:

\[J(W,b) = \sum(L(x, y)) = \sum \lVert y-x \rVert_2^2
\]

我们真正关心的是隐层表达,而不是实际输出。因此,针对自编码器的很多改进方法都是对隐层表达增加一定的约束,迫使隐层表达与输入不同。

Denosing Auto-Encoders, DAE

一个好的表达能够捕获输入信号的稳定结构,以该目的为出发出现了降噪自动编码器(DAE)。

首先对干净的输入信号加入噪声产生一个受损的信号(主动)。然后将受损信号送入传统的自动编码器中,使其重建回原来的无损信号。

过程可用公式描述:

\[\begin{gathered}
\hat{x} \sim q_D(\hat{x} \mid x) \\
h_1=\sigma_e\left(W_1 \hat{x}+b_1\right) \\
y=\sigma_d\left(W_2 h_1+b_3\right)
\end{gathered}
\]

\(q_D(\hat{x} \mid x)\)是噪声的分布,\(\hat{x}\) 是加入噪声后的输入。

DAE的目标是最小化损失函数:

\[J_{DAE}(W) = \sum E_{\hat{x}\sim q_D(\hat{x}|x)[L(x,y)]}
\]

DAE与传统的AE的主要区别在于:

  1. 降噪自编码器通过人为的增加噪声使模型获得鲁棒性的特征表达
  2. 避免使隐层单元学习一个传统自编码器中没有意义的恒等函数

最大的缺陷在于每次进行网络训练之前,都需要对干净输入信号人为地添加噪声,以获得它的损坏信号,这无形中就增加了该模型的处理时间

Stacked Denoising Auto-Encoders, SAE

SAE和DAE区别主要在于:SAE是有监督学习,DAE是无监督学习。所以SAE是DAE的一种应用方法。

Convolution Auto-Encoders, CAE

????实战链接????卷机自编码器图像去噪 PyTorch练习(五)卷积自编码器图像去噪 - 锦恢的文章 - 知乎

STL-10 数据集下载链接:

CAE其实就是用常规的CNN的处理流程,卷积+池化,然后上采样(反卷积)这样可以恢复到一个和输入图像相同的维度,这样可以用于图像去噪

上采样的两种方法:

Variational Auto-Encoders, VAE

阅读链接:

Reference