深度学习:自编码器

论文中常常读到AE这一工具,很是好奇,近日了解了一番,学习了自编码器这一工具,在这里掰扯掰扯。

自编码器原理

自编码器干的事情说来蹊跷,即设计一个中间窄、两头宽的神经网络,这样输入的特征向量在隐藏层中间就会变短,到出口又会恢复,而训练的方向也是让出口向量尽可能类似入口向量。

倒腾半天,图个啥呢?

熟悉PCA压缩图片的哥们一定会有种莫名的熟悉感,没错,就是那个!

自编码器的前半部分称为编码器,后半部分称为解码器,中间最窄层即提取了输入向量关键特征的编码。我们使用前半段对特征进行提取,后半段对原始数据进行恢复。

好处:

  1. 压缩数据,便于保存
  2. 降低维度,便于训练
  3. ……

当然,自编码器相对于PCA是有所强化的,PCA仅通过选取特征向量作为主轴,旋转向量,映射到子空间来降维,仅仅是线性变换;而AE能够借助不同的激活函数,实现非线性变换,更为高效。

差分自编码器

AE之外,还有VAE的存在,我们需要进一步了解他。

朴素自编码器的弊端

前述的自编码器已然能够实现压缩数据,保存的功能,但是,对于降维训练还存在一些问题。

我们训练模型,其实一直是基于一种非混沌系统的假设的,即输入差不多,输出差距也小,这也符合自然世界的规律。

但是,一味追求还原原始向量的自编码器极其容易过拟合,在编码空间中,极有可能仅仅少数几个点能够还原出有意义的样本,其他点,哪怕仅仅离训练样本一点点距离,都将使输出变得极为不同,这样的情况下,利用编码空间的向量进行训练,往往是严重过拟合的,无法泛化,成为一个混沌系统。

差分原理

差分自编码器,其编码空间不为一个向量,而是一个分布,还原时进行采样,再解码。

由于采样的存在,解码器必须保证分布的方差小且多个分布均值差小,才能做到采样到有价值的点。

于是,我们加入正则项,使得优化目标包含还原与(分布与标准高斯分布的KL散度)。

…………略