什么是表示学习(representation learning)表征学习 表达学习

机器学习算法的成功与否不仅仅取决于算法本身,也取决于数据的表示。数据的不同表示可能会导致有效信息的隐藏或是曝露,这也决定了算法是不是能直截了当地解决问题。表征学习的目的是对复杂的原始数据化繁为简,把原始数据的无效信息剔除,把有效信息更有效地进行提炼,形成特征,这也应和了机器学习的一大任务——可解释性。 也正是因为特征的有效提取,使得今后的机器学习任务简单并且精确许多。在我们接触机器学习、深度学习之初,我们就知道有一类任务也是提炼数据的,那就是特征工程。与表征学习不同的是,特征工程是人为地处理数据,也是我们常听的“洗数据”。 而表示学习是借助算法让机器自动地学习有用的数据和其特征。 不过这两个思路都在尝试解决机器学习的一个主要问题——如何更合理高效地将特征表示出来。

即稍微入门一点机器学习的都知道传统地做法都人为地设计特征或者说使用已经完全标记好的数据来试图接近最好的分类效果。但实际上很多未标记的或者说标记相对较少的训练数据,我们当然可以人为标记,但也可以自动地筛选出比较重要的特征,有点类似于PCA(主成分分析)的思路,这就是表示学习或者说特征学习。

表示学习虽然从结构上讲只是数据的一个预处理手段,但是正如“工欲善其事,必先利其器”一样,它的出现提供了进行无监督学习和半监督学习的一种方法。其重要性不言而喻,以至于在花书中被单独列出来作为一章。表示学习一个比较典型的方法就是自编码器,有兴趣的可以自查。

什么是表示学习(representation learning)表征学习 表达学习_第1张图片

表征学习的自动化算法

我们定义了表示学习的自动化,那么这个自动化发展得如何呢?让我们来看看有哪些已有的算法和它们背后的意义。无监督学习算法中例如PCA/auto-encoder的自动化体现在它们可以对输入数据转化而使得输入数据更有意义;树模型可以自动地学习到数据中的特征并同时做出预测;深度学习的CNN/RNN/DBN/GCN则更加灵活,CNN大量地用在图像的研究上,RNN是时间序列数据学习的摇篮,而GCN可以用在图网的数据学习中。回想特征工程则是极度依赖人的判断的,人们会根据自己的理解来筛选数据或者做数据变换。

1) 无监督学习

在深度学习大幅发展之前,无监督学习是很好的表征学习的工具。无监督学习中的自动编码器可以用来对数据进行含义转换。举个单词表征的例子,单词有很多表示的方法,最简单的就是one-hot encoding, 这种方法是在一个庞大的词库向量中对要标注的目标单词用1来表示,而其余的用0。这样一来所有的单词都是相互独立的,即它们之间的距离都是一样的,非常地浪费空间。而如果我们用RBM, 中文叫作单层自编码器,来做word embedding, 将词库矩阵映射到新的矩阵空间,令词义更相近的单词靠得更近,这样节约了空间,同时新的表达还定义了相近词。这种自编码过程使用的一般是无标签数据,输入数据经过编码会有一定的抽象,然后这种抽象可以通过解码得到一个近似于输入的输出数据,所以它是一种稳定的转换。其实无监督的表征学习算法的精髓是学习从高维观察到低维表征空间的映射,使得可通过地位的表征(近似地)重建出原来的观察,比如PCA的映射空间就保证了原空间的多样性。尽管自动编码器与 PCA 很相似,但我们可以看出来自动编码器比 PCA 灵活得多。在编码过程中,自动编码器既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络。

2) 树模型

树模型的一大优势在于算法本身的高度可解释性,因此树模型在表征学习应用上是很有潜力的。前几章我们提到过当模型是可微分模型时,反向传播的效果非常好,又精确又高效,但是当使用的模型是非可微分的时候,我们该怎么解决这类问题呢?这里有个可替代模型——基于树的集成。这种模型可以为离散或表格类数据建模,使用树的集成可以获得分层分布式表征。但此时,我们不能再用链式法则来传播误差,反向传播也不再可行。所以决策树模型很难整合深度神经网络的表征学习能力,但是多层GBDT森林可以使用层见目标传播的变体进行联合训练,这样就无需推导反向传播和可微性。

3) 深度学习

深度学习是最灵活的表征学习。要理解深度神经网络为什么可以做表征学习很简单,其实一般深度神经网络的最后一层都是一个线性分类器,其他层则可看成是在给这个线性分类器提供特征,所以最后一层之前的隐藏层都可被理解为是表征学习。而在这之前,深度学习在CNN图像识别的任务上大获成功,却在实际被诟病为黑箱,让很多搞理论的专家百思不得其解。所以从表征学习这点上看,深度学习的黑箱或许是可以被一窥究竟的。其实就单隐层神经网络已经很好用了,它有个普适性的特点,意思就是给足了隐节点,它就能够估算任何函数来适应你给它的训练数据,也就是单隐层就可以很好地学习表征。近期的研究已经开始为深度学习的表征建立信息论基础,比如观察到的信息瓶颈损失可以被用于计算最佳表征。

表征学习vs. 特征工程

说完表征学习典型的算法,那么问题来了,我们什么时候用表示学习,什么时候又用特征工程呢?第一个需要考虑的是数据的大小,如果数据量很大的时候,我们比较依赖于自动化的表示学习,如果数据量很小,其实目前特征工程的表现更加好。这是什么原因呢?因为数据小,我们根据自己的数据经验和先验知识,就可以判断用什么模型更好,但是数据一旦多了,我们对数据的理解就相对比较浅薄,先验知识所占的分量急剧下降,此时就需要依靠极其强大的计算力去弥补我们自身知识的不足。不管是全自动化的表征学习也好,人为经验的特征工程也好,都是基于数据和经验选择模型,这个过程其实是一个贝叶斯模型。在中小数据集上的机器学习往往使用的就是强假设模型(人类知识先验)+一个简单线性分类器。当数据愈发复杂,数据量逐渐加大后,我们对于数据的理解越来越肤浅,做出的假设也越来越倾向于随机,那么此时人工特征工程往往是有害的,而需要使用摆脱了人类先验的模型,比如深度学习或者集成模型。

不管是特征工程还是特征学习,我们衡量它们作用的一个标准就是看后续的学习任务是否能够得益于这种表示。这是机器学习的一个核心问题——到底是什么因素决定了一种表示比另一种表示更好呢?大概有三个方面的解释:

1.是否能提供解离性的线索。假设数据是基于互相独立的因素(这些因素内部也存在一定的变化范围)生成的,比如目标图像中的目标方向和光照条件,作为一个元先验,解离性更倾向于用表征中不同的独立变量表示这些因素。这样应该就能得到数据的简洁的抽象表示,从而可用于各种下游任务并有望提升样本效率。因此,某种方法更能得到数据的简介的抽象的表示就更占据优势;

2. 是否有分布式表示的优势。分布式表示可以组合许多特征来表达指数级别的概念特征。有很多分布式表示的算法比如聚类算法,KNN算法,决策树等等,同时分布式表示也是深度学习的最重要的性质之一,深度学习的分布式实现了参数共享,即非局部繁华的目的,可以有效应对curse of dimensionality。

3. 深度可以带来指数级别的增益。

这篇文章写得很好,可以参考:https://blog.csdn.net/weixin_40449300/article/details/89941348

你可能感兴趣的:(深度学习,DeepLearning,算法,大数据,神经网络,机器学习)