表示学习内容摘录 《深入浅出神经网络:GNN原理解析》

4.1.1 表示学习的意义

机器学习算法的性能严重依赖于数据的特征,因此在传统机器学习中,大部分的工作都在于数据的处理和转换上,以期得到好的特征使得机器学习算法更有效。

这样的特征工程是十分费时费力的,这也暴露了传统机器学习方法中存在的问题,这些方法没有能力从数据中去获得有用的知识,而特征工程的目的则是将人的先验知识转化为可以被机器学习算法识别的特征,以弥补其自身的缺点。

如果存在一种可以从数据中得到有判别性特征的方法,就会减少机器学习算法对特征工程的依赖,从而更快更好地将机器学习应用到更多的领域,这就是表示学习的价值。那么对于表示学习来说,要回答以下3个问题:

(1)如何判断一个表示比另一个表示更好?
(2)如何去挖掘这些表示?
(3)使用什么样的目标去得到一个好的表示?

什么是好的表示?这个问题没有固定的标准。通常来说,一个好的表示首先要尽可能地包含更多数据的本质信息,并且这个表示能直接服务于后续的具体任务。

计算机看到的事物与人眼里看到的事物是不一样的。
比如对于图像来说,计算机看到的是一个个像素点,这是最原始的数据,单独去关注这些像素点本身能获得的信息是很少的,而人在判断图像内容的时候,会通过一些高层的抽象语义特征来判断,这之间的差距称为语义鸿沟,它指的是低层次特征与高层次抽象特征之间的差异,如图4-1所示。

而一个好的表示需要尽可能地描述一些高层次的抽象特征,以便后续的模型可以高效地利用这个特征,减小后续模型的“压力”,否则,以原始数据或者偏低层次的特征作为后续模型的输入,对于后续模型来说运行起来就会非常困难。因此一个好的表示应该尽可能地减小这个语义鸿沟,提供一些高层次的有价值的特征。

4.1.2 离散表示与分布式表示

在机器学习中,对一个对象的表示有两种常见的方式。最简单且不需要学习的方式就是独热向量编码(one-hot),它将研究的对象表示为向量,这个向量只在某个维度上值是1,其余维度上值全为0,可以想象有多少种类型,这个向量的长度就有多长。比如要用这种方式去将中文汉字向量化,假设所有的中文汉字有N个,要想通过这种方式去表示这些汉字,那么每个字都需要一个N维的向量,总共需要N×N大小的矩阵才能覆盖所有的汉字。在自然语言处理中,词袋模型就是以此为基础构建的。

分布式表示则不同,它是通过某种方式得到一个低维稠密的向量来表示研究对象,最典型的例子就是颜色。我们知道任何一种颜色都可以通过红、黄、蓝3种颜色混合得到,在计算机中也通常使用RGB方式将颜色表示为一个三元组,RGB构成的色彩空间可以用图4-2表示,比如用RGB表示粉色、浅粉色、深粉色分别为(255,182,193)(255,192,203)(255,20,147)。而如果要用独热向量来表示这些颜色,对于256级的RGB来说,总共有约1678万种色彩(2563=16777216),那么独热向量就需要16777216维,其中只有某个位置上值为1,数据是非常高维且稀疏的

独热向量非常简单,只需要列出所有可能的值就可以得到,不需要学习过程。但是它的缺点也是非常明显的,它假设所有对象都是相互独立的。在向量空间中,所有对象的向量都是相互正交的,那么它们两两之间的相似度为0,也就是说,这些对象之间没有任何关系。但现实生活中却不是这样,比如上面提到粉色和浅粉色,它们都属于粉色系,那么它们之间的相似度应该比粉色与黑色之间的相似度更高,但是独热向量并不能表现出这一点,它丢失了大量的语义信息。此外,独热向量的维度可能会非常高并且非常稀疏,直接使用的话也非常困难。

分布式表示则表现出很好的性质。一方面,分布式表示的维度可以很低,用三维就可以表示1678万种颜色,能有效**解决数据稀疏问题。另一方面,它能保留一些语义信息,**比如可以计算出粉色与浅粉色和深粉色之间的余弦相似度分别为99.97%和89.39%,而与黑色[RGB为(0,0,0)]的相似度为0,这与我们的认知是一致的,也就是说分布式表示可以包含语义的特征,这也是分布式表示在很多领域都有应用的原因所在。

4.1.3 端到端学习是一种强大的表示学习方法

深度学习的模型不同于传统的机器学习模型,比如对于图像分类任务来说,传统机器学习需要人工提取一些描述性的特征,比如SIFT特征,即前面提到的特征工程,然后使用分类器进行图像类别的判断,模型性能的好坏很大程度上取决于所提取特征的好坏。而使用卷积神经网络可以解决这个问题,比如AlexNet,它以原始图像作为输入,而不是特征工程得到的特征,而输出直接是预测的类别,这种学习方式称为端到端学习(end-to-end learning)

对于上述的例子,我们可以这么理解,卷积网络的前面部分主要是完成自动特征提取,然后将提取的特征送入到分类器中进行分类,换句话说,卷积网络的前面部分可以看作是在进行表示学习,即端到端学习可以看作是表示学习与任务学习的组合,但它们不是完全分裂的。具体来说,它们是联合优化的,反向传播算法将误差从输出层向前传递直到输入层,优化算法动态地调节模型参数,使得模型可以自动提取到与任务相关的判别性特征,这显示出了深度学习模型相比于其他方法的优越性。

深度学习模型的另一个优势是能够学习到数据的层次化表达,这也是一个好的表示需要具备的性质。如3.2节介绍的卷积网络神经不同深度的层可以提取到不同层次的表示,低层的卷积主要提取低层次的特征,高层的卷积主要提取抽象的、与任务相关的特征。深度学习模型是层与层的堆叠,每一层都是可训练的,它将输入的特征变换为更抽象的特征,位于低层的变换得到基础的特征,是构成高层抽象特征的基础,这与字、句子、文章之间的关系类似,字构成词,词构成句,句构成文章。因此对于低层次的特征来说,它们更加通用(general feature),而高层次的特征则与具体的任务相关。可以基于深度学习的这个特性进行迁移学习。迁移学习指的是将已经学习过的知识迁移到新的问题中去,深度学习在该方面的一个典型应用是微调,即以在其他数据集上训练好的模型为基础,在新的数据集上再进行调整。比如很多视觉相关的任务都是采用在ImageNet上预训练的模型,固定住一些卷积层,不对它们进行梯度更新,因为它们提取的都是通用的特征,只对高层的结构进行一些修改,比如改变输出层的维度以适应不同类别数的分类问题,然后使用新的数据调整模型。

表示学习的任务通常是学习这样一个映射:f:X→Rd,即将输入映射到一个稠密的低维向量空间中。在接下来的两节我们将介绍两种典型的表示学习方法,一种是基于重构损失的方法;一种是基于对比损失的方法。

你可能感兴趣的:(【茂森】脑机接口算法)