第十四章 自编码器
2020-3-8 深度学习笔记14 - 自编码器 1(欠完备自编码器)
2020-3-8 深度学习笔记14 - 自编码器 2(正则自编码器 - 稀疏自编码器(增加惩罚项) / 去噪自编码器(改变重构误差项)/ 惩罚导数作为正则)
2020-3-14 深度学习笔记14 - 自编码器 3( 表示能力、层的大小和深度,随机编码器和解码器)
2020-3-15 深度学习笔记14 - 自编码器 4(去噪自编码器(前馈网络)详解)
使用自编码器学习流形
关于流形,可以参见https://blog.youkuaiyun.com/weixin_30820077/article/details/95525474,写的通俗易懂。
流形是指连接在一起的区域。数学上,它是指一组点,且每个点都有其领域。
流形,百度百科中解释,是局部具有欧几里得空间性质的空间,在数学中用于描述几何形体。物理上,经典力学的相空间和构造广义相对论的时空模型的四维伪黎曼流形都是流形的实例。
由上面的定义可知,(欧式空间是直线、平面等概念的推广),而流形是欧式空间中曲线、曲面等概念的推广,那么两者有什么关系呢?因为直线、平面等概念可以看成对应维度的曲线、曲面等的特例,所以欧式空间相应地可以看成流形的一个特例,叫线性流形
。
一般大家研究流形是为了解决非线性问题,所说的流形也都默认是非线性流形
。
非线性流形可以看成欧式空间被扭曲的结果,而用来描述欧式空间的直角坐标系中的轴也相应地被掰弯了。举一个二维的例子,展平的一块抹布,可以看成二维欧式空间,当抹布被扭一扭后,它就变成了一个非线性流形。
就像曲线无限放大后,局部是直线一样,流形无限小的局部也可以看成欧式空间,因此流形局部具有欧式空间性质。例如地球,从太空看,地球表面近似一个球面,但从地球上的我们来看(局部),地球表面是一个平面。
测地线距离
是用来度量流形中的距离的。
当所在的空间是欧式空间(线性流形)时,测地线距离也就是我们常用的欧式距离;但当空间是非线性流形时,测地线距离不再是欧式距离。例如地球,假如限定在表面(一个非线性流形)去衡量南北极的距离,我们是不可能直接拉一根直线穿过地心去测量的,只能贴着表面去找最短距离,找出来的这个距离就叫测地线距离。
简单来说,欧式距离不能满足非线性流形的约束,所以有了测地线距离。就像地球表面上南北极的欧式距离不满足球面约束,越出了球面这个空间。
为什么要学习流形?-降维
因为流形分布定律,即高维数据往往位于一个低维流形上或附近。
为了机器学习中的维度灾难问题,以往在低维度适用的算法都效果很差或者计算代价过高。如果我们能学习到数据位于的那个低维流形,那么我们就可以在这个流形或其嵌入的参数空间里去运用原先的低维学习算法了。
当下比较火的深度学习在高维数据中的表现优异,其很大程度上都是可以用流形来解释的。
总的来说,我们去学习流形可以减少计算机的内存负担和计算复杂度,并且可以使学习效果提升,特别是图像识别,手写体识别等。简而言之,流形学习是用来进行降维和帮助我们进行数据可视化。
学习流形的算法一般有两种学习方式:局部线性嵌入和等度量映射
- 直接学习训练样本在流形上的嵌入,也就是计算出训练样本在参数空间的坐标表示。流形学习这个邻域就是基于这种学习的。
- 学习高维空间到参数空间的映射,典型代表是自编码器。
自编码器可以依据两种动力去学习非线性流形:
- 一种动力是对自身的重构误差要小,即解码器能恢复输入;
- 第二种是通过约束(正则项)去学习对流形切平面上输入不敏感的函数。
两种结合成一个目标函数,这样自编码器就可以学习非线性流形了。
能学习自编码器的有两种:
- 去噪自编码器:通过约束重构函数的梯度在数据点周围很小可