自动编码器-ML


  1. 定义与基本原理
  2. 自动编码器(Auto - Encoder)是一种无监督学习的神经网络架构。它主要由两部分组成:编码器(Encoder)和解码器(Decoder)。
  3. 基本原理是,编码器将输入数据进行压缩,把高维的输入数据映射到一个低维的潜在空间(Latent Space),得到一个紧凑的表示,这个表示被称为编码(Code)。然后解码器将这个编码再映射回原始数据空间,尝试重构出与原始输入相似的输出。例如,对于一张图像,编码器会把图像的像素信息等转换为一个低维的向量,解码器再根据这个向量生成一张新的图像,目标是让这张新图像尽可能接近原始图像。

  4. 网络结构

  5. 编码器:通常是一个由多个全连接层或卷积层(针对图像等具有空间结构的数据)组成的神经网络。随着网络层数的增加,数据的维度逐渐降低。例如,在一个简单的全连接自动编码器中,输入是一个高维向量(如(1000)维),经过几个全连接层后,可能会被压缩到一个(10)维的潜在向量。在这个过程中,编码器学习到如何提取数据的关键特征,将其转换为潜在空间的表示。
  6. 解码器:与编码器的结构相反,它将低维的潜在向量逐步恢复到原始数据的维度。如果编码器使用了卷积层进行降维,解码器通常会使用反卷积层(转置卷积层)来进行升维。例如,对于图像数据,解码器会把从潜在空间得到的向量通过反卷积操作逐步构建出与原始图像大小相同的图像。

  7. 损失函数与训练

  8. 损失函数:自动编码器通常使用重建损失(Reconstruction Loss)来进行训练。对于连续数据(如图像的像素值),常用均方误差(Mean - Squared Error,MSE)作为重建损失函数。即计算原始输入数据与解码器重构输出数据之间的像素差值的平方和,并求平均值。对于离散数据(如文本中的单词),可以使用交叉熵(Cross - Entropy)损失函数。
  9. 训练过程:在训练过程中,将大量的无标签数据输入到自动编码器中。通过反向传播算法,根据重建损失来调整编码器和解码器的参数。例如,在训练图像自动编码器时,一批图像作为输入,经过编码器得到编码,再经过解码器得到重构图像,计算重构图像与原始图像的MSE损失,然后利用这个损失对网络参数进行更新,使得重构图像越来越接近原始图像。

  10. 应用场景

  11. 数据降维与特征提取:自动编码器可以作为一种有效的数据降维工具。它能够学习到数据的内在结构,将高维数据压缩到低维空间,同时保留数据的主要特征。例如,在处理高维的基因数据时,通过自动编码器将基因数据压缩到一个低维的潜在空间,提取出对基因分类等任务有价值的特征。
  12. 数据去噪:在有噪声的数据中,自动编码器可以学习去除噪声。训练时使用含噪声的数据作为输入,让解码器重构出无噪声的数据。例如,在图像去噪任务中,将带有噪声的图像输入自动编码器,经过训练后,解码器能够输出相对干净的图像,因为它学习到了如何从噪声中恢复出原始数据的特征。
  13. 生成模型的基础:自动编码器的结构可以作为生成模型的基础进行扩展。例如,变分自编码器(VAE)是在自动编码器的基础上,对潜在空间进行概率建模,从而可以生成新的数据。通过在潜在空间中采样,然后使用解码器生成新的样本,这些样本在一定程度上能够模仿原始数据的分布。