自编码器简要介绍
文章目录
自编码器的定义
自编码器(Auto Encoders)是深度学习中常见的一种模型。人类在理解复杂事物的时候,总是先总结初级的特征,然后从初级特征中总结出高级的特征。如下图1所示,以识别手写数字为例,通过学习总结,发现可以把手写数字表示为几个非常简单的子图案的组合。
对大量黑白风景照片提取 16 × 16 16\times 16 16×16 的图像碎片,分析研究后发现几乎所有的图像碎片都可以由 64 64 64 种正交组合的边组合得到。声音也存在同样的情况,大量未标注的音频种可以得到20种基本结构,绝大多数声音都可以由这些基本的结构线性组合得到。这就是特征的稀疏表达,通过少量的基本特征组合、拼装得到更高层抽象的特征2。自编码器模型正好可以用于自动化地完成这种特征提取和表达的过程,而且整个过程是无监督的。基本的自编码器是一个简单的三层神经网络结构,由一个输入层、一个隐藏层和一个输出层组成,其中输出层具有相同的维数。以下给出一个自编码器结构的基于PyTorch的代码。
class AutoEncoder(nn.Module):
def __init__(self):
super(AutoEncoder, self).__init__()
self.encoder = nn.Sequential(
nn.Conv2d(1,64,kernel_size=3,stride=1,padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2