06.04 深度学习之自编码器AutoEncoder

什么是自编码器(AutoEncoder)

深度学习之自编码器AutoEncoder

自编码器(AutoEncoder),顾名思义,使用自身的高阶特征来编码自己,它本质上也是一种神经网络,输入和输出一致,借助稀疏编码的思想,使用稀疏的高阶特征重新组合来重构自己。作为一种自监督的学习算法,主要用于数据的降维或者特征的抽取。

自编码器的种类

自编码器(autoencoder)是神经网络的一种,经过训练后能尝试将输入复制到输出。该网络可以看作由两部分组成:一个由函数 h = f(x) 表示的编码器和一个生成重构的解码器 r = g(h)。如果一个自编码器只是简单地学会将处处设置为 g(f(x)) = x,那么这个自编码器就没什么特别的用处。相反,我们不应该将自编码器设计成输入到输出完全相等。这通常需要向自编码器强加一些约束,使它只能近似地复制,并只能复制与训练数据相似的输入。这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。

降维限制

限制中间隐层的节点数量,使得其节点数量小于输入/输出节点的数量,这就相当于增加了一个降维的过程。由于隐层节点数小雨输入节点数,那只能学习数据中最重要的特征,将不太相关的特征去除。如果再给隐层的权重增加一个L1正则化,则可以根据惩罚系数控制隐含节点的稀疏程度,惩罚系数越大,学到的组合特征越稀疏,非零权重的特征数量越少。

加入噪声

由于数据加入了噪声,只有神经网络能够将噪声除去,才能复原数据,所以也达到了防止输入输出完全相同的情况。最常用的噪声是高斯噪声(Additive Gaussian Noise, AGN)。随机遮挡的噪声(Masking Noise)也可以,这种情况下,图像中的一部分像素被置0,模型需要从其他像素的结构推测出这些遮挡的像素是什么,因此依然可以提取出高阶特征。

自编码器在深度学习中的应用

在深度学习中,AutoEncoder可用于在训练阶段开始前,确定权重矩阵W的初始值。神经网络中的权重矩阵在对权重初始化时,并不知道初始的权重值在训练时会起到怎样的作用,也不知道在训练过程中权重会怎样的变化。因此一种较好的思路是,利用初始化生成的权重矩阵进行编码时,我们希望编码后的数据能够较好的保留原始数据的主要特征。那么,如何衡量码后的数据是否保留了较完整的信息呢?答案是:如果编码后的数据能够较为容易地通过解码恢复成原始数据,我们则认为W较好的保留了数据信息。

例如下图所示,将手写数字图片进行编码,编码后生成的 ϕ1,ϕ2,ϕ3,ϕ4,ϕ5,ϕ6较完整的保留了原始图像的典型特征,因此可较容易地通过解码恢复出原始图像。

深度学习之自编码器AutoEncoder

AutoEncoder自身也是一个神经网络,它的整个计算过程可以看作是对输入数据的压缩编码,将高维的原始数据用低维的向量表示,使压缩后的低维向量能保留输入数据的典型特征,从而能够较为方便的恢复原始数据。

深度学习之自编码器AutoEncoder

对于多层神经网络的参数初始化问题,我们可以依次对每一层进行AutoEncoder。如下图所示,具体做法是首先按照上述方法确定第一层的权重参数,然后固定第一层的参数,对第二层的参数进行训练,以此类推,直到得到所有权重值。

深度学习之自编码器AutoEncoder


分享到:


相關文章: