一、概述
目前在数据降维方面,传统的方法如PCA、LLE、ISOMAP、LE等等方法用于数据降维,PCA和LDA这类线性方法无法学习数据潜在的流形结构,而像LLE、ISOMAP这类非线性方法虽然可以学习数据的流形结构,但是这个流形结构往往是根据已有的数据集而固定的,很难去适应新的数据。而对于AutoEncoder用于数据降维,往往关注的都是数据本身的关系,仅关注如何重构数据本身,也无法学习数据潜在的流形结构。因此作者就提出了GAE,即能很好的学习数据潜在的流形结构,又可以适用于新数据。
GAE主要是从两方面对传统AE进行了改进。
- 通过学习单个数据到一组数据的重构关系来学习单个数据邻域的局部流形。这个一组数据可以看作是数据的近邻图,或者属于同一类别的数据等等。也即学习的结果并不仅仅使得到本身的重构距离最小,而是到其“邻域”空间内所有点的距离之和最小,就可以理解为其学习的是数据潜在的流形结构,对于单个数据点并不一定要严格的重构,只需要重构到同一个流形结构上即可。
- 对于单个数据样本到一组数据的重构损失还引入了权重的概念,表示从数据点到重构损失的权重。这个权重的引入可以使得在重构的同时还保持了原高维空间中各数据点之间的关系。
然后作者通过把激活函数由非线性的sigmoid函数用线性转换代替,证明其与linear graph embedding 有相同的目标函数,进一步说明了其用于降维的有效性。
通过以上两点改进的结合,就可以使得GAE在学习数据潜在的流形结构的同时还能很好的保持数据在流形上的关系,也即外部结构和内部结构。根据上述两个关键数据的构建方式不同,作者提出了GAE的六种实现方式,分别是PCA、LDA、LEE、ISOMAP、LE和MFA。
进一步为了更好的对复杂高维的数据进行降维,还介绍了deep GAE,就是通过叠加多个网络层,然后利用layer-wise pretraining 的方式进行预训练,之后再进行微调。
二、解决的问题
- 传统线性降维算法PCA、LDA等无法学习数据潜在的流形结构。
- 非线性降维算法ISOMAP、LLE、LE等学习到的流形结构固定于原始数据,难以适用于新数据。
- 传统的AE仅学习如何对数据本身进行重构,而无法学习数据潜在流形的重构。
三、算法理论
利用传统AE能够重构数据的特性,对目标函数进行改进,将非线性激活函数用线性函数替换后(实际还是适用的非线性激活函数,为了能够学习更复杂的结构特征),证明其于linear graph embedding的目标函数一致,进而证明其用于降维的有效性。
四、算法步骤
- 选择好适当的版本,即构建各样本数据点重构集的方式(例如K近邻图或者同一类别数据等等)以及如何设计重构权重。
- 计算每个样本点的重构集和重构权重。
- 利用随机梯度下降优化目标函数并且更新网络参数。
- 计算各数据的隐藏层表示并且更新重构集和重构权重。
- 重复上述步骤知道目标函数收敛。
五、优缺点分析
优点
将linear graph embedding很好的与AutoEncoder结合了起来,同时达到了学习数据潜在流形结构和适应新数据的目的。
缺点
- 要计算各数据点之间的重构权重是一个比较复杂的问题。
- 当将GAE用于监督学习时,利用先验信息给部分数据加上标签而其他数据没有分类会导致某些关系被过分强调而其他的被忽略。
- GAE关注与数据之间的关系而忽视了数据本身的重构会导致某些数据属性丢失。
六、未来工作
将Generalized AutoEncoder与Denosing AutoEncoder的优点结合起来用于特征学习和分类等工作。