自编码器算法属于自监督学习范畴,如果算法把x作为监督信号来学习,这里算法称为自监督学习(Self-supervised Learning)
在监督学习中神经网络的功能:。是输入的特征向量长度,是网络输出的向量长度。对于分类问题,网络模型通过把长度为输入特征向量变换到长度为的输出向量,这个过程可以看成是特征降维的过程,把原始的高维输入向量变换到低维的变量。
特征降维(Dimensionality Reduction)在机器学习中有广泛的应用, 比如文件压缩(Compression)、 数据预处理(Preprocessing)等。 最常见的降维算法有主成分分析法(Principal components analysis, 简称 PCA),通过对协方差矩阵进行特征分解而得到数据的主要成分,但是 PCA 本质上是一种线性变换,提取特征的能力极为有限
利用神经网络的强大非线性表达能力去学习到低维的数据表示,但是训练神经网络一般需要一个显式的标签数据(或监督信号),但是无监督的数据没有额外的标注信息,只有数据本身
利用数据本身作为监督信号来指导神经网络的训练,即希望神经网络能够学习到映射: → 。
把网络切分为两个部分,前面的子网络尝试学习映射关系:: → ,后面的子网络尝试学习映射关系: → 。 把看成一个数据编码(Encode)的过程,把高维度的输入编码成低维度的隐变量(Latent Variable,或隐藏变量),称为 Encoder 网络(编码器); 看成数据解码(Decode)的过程,把编码过后的输入解码为高维度的, 称为 Decoder 网络(解码器)
编码器和解码器共同完成了输入数据的编码和解码过程,把整个网络模型叫做自动编码器(Auto-Encoder),简称自编码器。 如果使用深层神经网络来参数化和函数, 则称为深度自编码器(Deep Auto-encoder)
自编码器能够将输入变换到隐藏向量,并通过解码器重建(Reconstruct,或恢复)出。解码器的输出能够完美地或者近似恢复出原来的输入,即 ≈ , 自编码器的优化目标:, dist(, )表示 和的距离度量,称为重建误差函数。 常见的度量方法有欧氏距离的平方,计算方法如下:ℒ = ∑( - ̅)2
它和均方误差原理上是等价的。 自编码器网络和普通的神经网络并没有本质的区别, 只是训练的监督信号由标签变成了自身。 借助于深层神经网络的非线性特征提取能力, 自编码器可以获得良好的数据表示,相对于 PCA 等线性方法,自编码器性能更加优秀, 甚至可以更加完美的恢复出输入
自编码器网络的训练较为稳定,但是由于损失函数是直接度量重建样本与真实样本的底层特征之间的距离,而不是评价重建样本的逼真度和多样性等抽象指标, 因此在某些任务上效果一般,如图片重建,容易出现重建图片边缘模糊,逼真度相对真实图片仍有不小差距。为了尝试让自编码器学习到数据的真实分布,产生了一系列的自编码器变种网络
为了防止神经网络记忆住输入数据的底层特征, Denoising Auto-Encoders 给输入数据添加随机的噪声扰动,如给输入添加采样自高斯分布的噪声:,添加噪声后,网络需要从学习到数据的真实隐藏变量 z,并还原出原始的输入
Dropout Auto-Encoder 通过随机断开网络的连接来减少网络的表达能力,防止过拟合,通过在网络层,中插入 Dropout 层即可实现网络连接的随机断开
为了能够方便地从某个已知的先验分布中()采样隐藏变量,利用()来重建输入, 对抗自编码器(Adversarial Auto-Encoder)利用额外的判别器网络(Discriminator, 简称 D网络)来判定降维的隐藏变量是否采样自先验分布(), 判别器网络的输出为一个属于[0,1]区间的变量,表征隐藏向量是否采样自先验分布():所有采样自先验分布()的标注为真, 采样自编码器的条件概率(|)的标注为假。通过这种方式训练,除了可以重建样本,还可以约束条件概率分布(|)逼近先验分布()。
对抗自编码器由生成对抗网络算法衍生而来
基本的自编码器本质上是学习输入和隐藏变量之间映射关系, 它是一个判别模型(Discriminative model),并不是生成模型(Generative model)。
变分自编码器(Variational AutoEncoders,VAE):给定隐藏变量的分布P(), 如果可以学习到条件概率分布P(|), 则通过对联合概率分布P(, ) = P(|)P()进行采样, 生成不同的样本
从神经网络的角度来看, VAE 相对于自编码器模型,同样具有编码器和解码器两个子网络。解码器接受输入, 输出为隐变量;解码器负责将隐变量解码为重建的。 不同的是, VAE 模型对隐变量的分布有显式地约束,希望隐变量符合预设的先验分布P()。在损失函数的设计上,除了原有的重建误差项外,还添加了隐变量分布的约束项
从概率的角度,假设数据集都采样自某个分布(|), 是隐藏变量,代表了某种内部特征, 比如手写数字的图片, 可以表示字体的大小、 书写风格、 加粗、斜体等设定,它符合某个先验分布(),在给定具体隐藏变量的情况下,可以从学到了分布(|)中采样一系列的生成样本,这些样本都具有所表示的共性
通常假设()符合已知的分布(0,1)。 在()已知的条件下, 希望能学会生成概率模型(|)。这里可以采用最大似然估计(Maximum Likelihood Estimation)方法: 一个好的模型,应该拥有很大的概率生成真实的样本 ∈ 。 如果生成模型(|)是用来参数化, 那么的神经网络的优化目标是:,由于z是连续变量,这个积分不能转换为离散形式,不能直接优化。
利用变分推断,再经过一系列化简VAE模型优化目标:,可以用编码器网络参数化 (|)函数,解码器网络参数化(|)函数,通过计算解码器的输出分布 (|)与先验分布()之间的 KL 散度,以及解码器的似然概率log (|)构成的损失函数,即可优化ℒ(, )目标。
优化函数转换为:和,该项可以基于自编码器中的重建误差函数实现
其中,当 (z |)和(z )都假设为正态分布时:
当 ( |)为正态分布(1, 1), ( )为正态分布(0,1)时,即2 = 0, 2 =1,此时
第一项优化目标可以理解为约束隐变量的分布,第二项优化目标理解为提高网络的重建效果
隐变量采样自编码器的输出 ( |),当(z|)和(z )都假设为正态分布时, 编码器输出正态分布的均值和方差2,解码器的输入采样自(, 2)。由于采样操作的存在,导致梯度传播是不连续的,无法通过梯度下降算法端到端式地训练 VAE 网络
Reparameterization Trick(重新参数化技巧):
它通过方式采样隐变量z,和是连续可导的,从而将梯度传播连接起来