深度学习与流形学习(一)

什么是流形

流形学习的观点:认为我们所观察到的数据实际上是由一个低维流形映射到高维空间的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度的维度就能唯一的表示。所以直观上来讲,一个流形好比是一个d维的空间,在一个m维的空间中(m>d)被扭曲之后的结果。需要注意的是流形不是一个形状,而是一个空间。举个例子,比如说一块布,可以把它看成一个二维的平面,这是一个二维的空间,现在我们把它扭一扭(三维空间),它就变成了一个流形,当然不扭的时候,它也是一个流形,欧氏空间是流形的一种特殊情况。
manifold_1
再比如对于一个球面上的一点(其实是三维欧氏空间上的点),可以用一个三元组来表示其坐标:

其中$0≤\psi≤2\pi$ and $0≤\theta≤\pi$.
但事实上这三维的坐标只由两个变量$\theta和\psi$生成的,也可以说它的自由度为2.也正好对应了它是一个二维的流形。

流形具有在局部和欧氏空间同胚的空间,也就是局部具有欧氏空间的性质,能用欧式距离来进行距离计算。这就给降维带来了很大的启发,若低维流形嵌入到了高维空间,此时样本在高维空间的分布虽然复杂,但在局部上仍具有欧氏空间的性质,因此可以在局部建立降维映射关系。然后再设法将局部映射推广到全局。而且当数据被降维到二维和三维时可以进行可视化,因此流形学习也可以被用于可视化。

流形学习有什么用?

考虑两个方面:

第一方面

第一个方面:高维空间有冗余,低维空间没冗余。也就是说,流形可以作为一种数据降维的方式。传统很多算法都是用欧氏距离作为评价两个点之间的距离函数的。举个例子,在地球仪上从北京到上海需要一个能够弯曲的软软的尺子来测量两个点的距离。显然对于“从北京到上海”的距离这件事,我们关注的是把三维地球展开成二维空间,然后测量地表距离,而不是三维空间中的球面上两点的欧氏距离。

从上面可以看出,流形空间上的可以用欧氏距离,不代表低维流形所展成的高维空间中可以使用欧氏距离进行衡量。但实际上很多时候,尽管是高维空间,但出于简便,我们仍然近似使用欧氏距离。但通常来说效果都不会太好。不过我们通过一些变换,将原始的高维空间的数据映射到低维流形空间然后再使用欧式距离衡量,或者干脆用一种能够在高维空间更准确地度量距离的距离函数来替代欧氏距离。这样能取得更加合理的距离度量结果。

第二方面

流形能够刻画数据的本质。也就是说,既然学习到了”将数据从高维空间降维到低维空间,还能不损失信息”的映射,那这个映射能够输入原始数据,输出数据更本质的特征(就像压缩一样,用更少的数据尽可能地表示原始数据)。这一方面和深度学习很像,深度学习的主要特点就是“特征学习”。所谓的特征就是能够表示数据本质的内容。

流形结构

流形是拓扑和微分几何中最为基本的概念。一个流形(manifold)是一个拓扑空间S,被一簇开集所覆盖$S\subset\bigcup_αU_α$,对于每个开集$U_α$存在一个同胚映射$\psi_α:U_α\rightarrow R^n$,$\psi_α$被称为坐标映射,$R^n$被称为是参数域。$(U_α,\psi_α)$构成一个局部坐标卡(local chart),所有的局部坐标卡构成流形的图册(atlas),$A:={U_α,\psi_α}$.在交集$U_α∩U_β$上,每个点都可以有多个局部坐标,在局部坐标间存在变换$\psi_{αβ}=\psi_β·\psi_α^{-1}$.从流形到坐标域的变换$\psi_α:U_α\rightarrow R^n$被称为是参数化,其逆变换,从局部坐标到流形的变换$\psi_α^{-1}:\psi_α(U_α)\rightarrow U_α$被称为是流形的局部参数表示。如果流形S嵌入到欧氏空间$R^d$中,则欧氏空间$R^d$被称为背景空间。

如前面所举的球面的例子来说,嵌入在三维欧氏空间中的单位球面是最为简单的二维流形,其局部参数表示为$(\theta,\psi)\rightarrow (x,y,z)$.这里球面是流形,三维欧氏空间是背景空间,$(\theta,\psi)$是局部坐标。参数化映射可以写成

在深度学习里,有关流形的这些概念都有相应的术语,流形上的一个点p∈S被称为是一个样本;参数域$R^n$被称为隐空间或特征空间。参数化映射:$\psi_α:U_α\rightarrow R^n$被称为编码映射;流形局部参数表示$\psi_α^{-1}:\psi_α^{-1}(R^n)\rightarrow U_α$被称为是解码映射;点的局部坐标$\psi_α(p)$被称为是样本的编码或者特征。

编码与解码器

auto_1
自动编码器(autoencoder)是非常基本的深度学习模型,用来学习流形结构。自动编码器是一个前馈网络,输入和输出维数相等,输入输出都是背景空间X.中间有一个瓶颈层,瓶颈层的输出空间为特征空间F.网络关于瓶颈层对称,左侧网络用于表示编码映射,记为$\psi_{theta}:X\rightarrow F$;右侧网络用于表示解码映射,记为:$\phi_{theta}:F\rightarrow X$。损失函数等于输入、输出图像的L^2范数。我们在流形上稠密采样,得到训练样本集$X={x_1,x_2,….,x_k}$,训练网络,

由此我们得到了编码映射和解码映射,解码映射就是流形的一个参数表示。我们用重建流形$S:=\phi·\psi(S)$来逼近数据流形S.
一旦我们掌握了流形在手,我们可以完成很多传统方法无法想象的应用,也可以革新很多传统方法所涉猎的经典应用。

生成模型GAN

GAN_1
生成模型是深度学习的一个典型应用。输入一张低维的白噪声,输出一张逼真的人脸图像。这在传统框架下是匪夷所思的:我们平白无故地变出一张人脸。但在流形框架下非常简单。

我们已经训练好了网络,得到了流形地参数表示$\phi_{theta}:F\rightarrow S’$,一张白噪声图像就是一个局部参数(编码)z∈F,其解码后的像$\phi_{theta}(z)∈S$在人脸图像的重建模型上,因而是一张人脸图像。我们并非空手得到这个人脸,而是拥有丰富的先验知识:所有人脸图像构成的流形,这一流形被其参数化映射表示,而这一映射被神经网络的权重所编码。
当然,生成图像的质量由许多因素所决定,最为重要的有两个:1.重建流形S’对数据流形S的逼近精度;白噪声图像是否在参数域中,即是否在编码映射的像集$\phi_{theta}(S)$内。后面,我们会对这两个问题进行深入讨论。

图像去噪(denoising)

图像去噪是图像处理的经典问题。基于信息论,我们将带有噪声的图像进行傅里叶变换,在频域滤波,去除高频分量,然后再进行傅里叶逆变换得到去噪图像。因为噪声往往分布在高频部分,因此这一方法比较奏效。这种经典方法比较普适,和图像内容无关。
denoise_1
那么用流形框架如何解释图像去噪?假设所有清晰人脸图像构成一个流形S。一张带有噪声的人脸图片p’不在清晰人脸图像流形上,但是在其附近。我们将p’向流形投影,垂足为p∈S,即清晰人脸图像流形距离p’最近的点。那么,我们将p作为去噪后的结果。换言之,我们将图像去噪理解成几何投影。
denoise_2
上图显示了基于几何投影思路的图像去噪效果。给定一张带有噪音的人脸图像p’,其编码为$\psi_{theta}(p’)$,然后再解码$\phi_{theta}·\psi_{theta}(p’)$,得到重建流形上的一点p,即为去噪后的图像。
这种方法不问噪声的形成机制,适用于各种噪声,但是这种方法严重依赖于图片的内容。这里我们进行人脸图像去噪,因此需要清晰人脸图像流形。如果我们将带噪声的人脸图像向清晰猫脸图像流投影,所得结果不再具有任何实际意义。

这显示了用深度学习方法去噪的某种局限性,首先我们必须拥有相应的流形,其次不同类型的图像,需要不同的流形。猫脸流形无法应用于人脸图像,反之亦然。这种局限诠释了深度学习仍属于弱人工智能范畴。

深度学习有效性的几何解释

流形结构:根据数据科学的流形分布定律,自然数据背后隐藏着流形结构,深度学习方法可提取这些流形结构,并用神经网络来表达流形间的映射,给出流形本身的参数化和参数表示。这些流形结构和其上的特定概率分布是整体先验知识的有效表示,正是因为具备这些先验知识,很多视觉和机器学习的问题能够被有效解决。流形能够表达一类数据的整体先验知识,传统方法只能利用局部较少的先验知识。

方法论的灵活性:传统方法依赖于严格的因果关系,往往用偏微分方程来表达自然规律。很多相关性可以用概率分布来表述,用深度学习可以习得。传统方法需要自变量和因变量之间精确的数学关系,流形框架下的深度学习只需要猜测流形的存在性和大致维数就可以学出流形结构。

非线性拟合能力:我们可以看到很多计算机视觉、机器学习层次(high level)的问题可以用流形、流形间的映射来描述。后面我们可以看到,概率分布之间的变换可以归结为流形间的映射。流形的局部参数表示,流形的参数化,流形间的局部映射都归结为欧氏空间之间的非线性映射$h:R^n\rightarrow R^m$.深度学习的成功也依赖于深度神经网络拟合这种非线性映射的能力。

学习能力的观察

那么,深度神经网络学习流形的能力究竟如何?我们考察一个低维流形的简单例子。
learning_1
learning_2
learning_3
我们假设背景空间是三维欧氏空间,流形是米勒佛曲面。我们再米勒佛表明稠密采样,然后训练一个自动编码器,得到编码映射和解码映射。编码映射将曲面映射到隐空间即二维欧氏空间。解码映射将隐空间表示映射回背景空间,得到重建流形。我们采用RELU作为激活函数,编码解码映射为分片线性映射。编码映射将背景空间分解为许多胞腔,在每个胞腔内编码映射为线性映射。我们从图中可以看到重建流形比较精确地逼近了原始地输入流形,几乎保留了所有地几何细节。为了达到这一理想效果,艰苦地调参不可避免。而这正是深度学习的困难所在:缺乏理论指导的实验性调节超参数。

小结

我们认为,深度学习的成功应该归功于数据自身具有的内在规律:高维数据分布在低维流形附近,流形上具有特定概率分布,同时归功于深度学习网络强大的逼近非线性映射的能力。深度学习计数可以从一类数据中提取流形结构,将整体先验知识用流形来表达,具体而言就是编码解码映射,隐含在神经元的权重中。

深度学习的强大能力来源于某类知识的整体表达,而传统算法只能利用同一类别的局部有限知识。同时深度学习基于底层流形的选择,很多算法移植性依赖于底层流形的替换。

-------------本文结束感谢您的阅读-------------

本文标题:深度学习与流形学习(一)

文章作者:Yif Du

发布时间:2018年11月25日 - 13:11

最后更新:2018年12月04日 - 19:12

原始链接:http://yifdu.github.io/2018/11/25/深度学习与流形学习(一)/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。