Representation Learning: A Review and New Perspect

  • 作者:sdau20171754
  • 分类: 深度学习
  • 发表日期:2020-07-24 15:20:58
  • 阅读:(90)
  • 评论(0)

一、内容总结

机器学习算法的成功通常取决于数据表示。这篇文章分为11个部分,详细讨论了表示学习的动机和优势,指导原则,并且重点介绍了表示学习的三类方法:概率模型(有向图模型,无向图模型),自编码器和流形学习。文章论述了三种算法的原理,进展,以及它们之间的联系。下面我将对每部分的要点进行总结。

1 INTRODUCTION

这部分主要介绍了表示学习的背景和动机。机器学习方法的性能在很大程度上取决于应用它们的数据表示形式的选择。出于这个原因,部署机器学习算法的大部分实际工作都花在了特征工程上。特征工程很重要,但也突出了现在学习算法的短板,无法从数据中提取和组织有区别的信息。特征工程是一种借助人类和先验知识来弥补这种短板的手段。为了让机器学习更好的应用,我们需要减少对特征工程的依赖,因此我们用到表示学习,学习数据的转换使得提取有用的信息更加容易。

2 WHY SHOULD WE CARE ABOUT LEARNING REPRESENTATIONS?

这一部分主要讲了表示学习在工业界和学术界的成功应用和重大进展,包括语音识别领域,目标检测领域,自然语言领域,多任务学习和迁移学习领域。语音识别方面,微软推出的MAVIS 显著的减少了错误率,表示学习也开始用于音乐。目标检测方面,手写数字的误差变得很小,开始转向自然图像的目标识别,在ImageNet数据集上取得了很好的效果。自然语言方面,开始使用卷积神经网络结构和词向量,代表成果有SENNA系统。机器翻译领域也开始使用同样的模型,BLEU得分显著提高。同时,递归的自编码器等也应用到自然语言处理中,比如全句意译检测,情感分类等。多任务学习和迁移学习方面,迁移学习是利用不同学习任务之间的共性,来共享统计强度,来跨任务的转移知识。表示学习有利于这些任务的完成,并赢得了迁移学习领域的两个挑战。

3 WHAT MAKES A REPRESENTATION GOOD?

这部分介绍了一些可以使表示变得更好的思想和方法。包括各类先验,平滑的思想,分布式表示,深层次架构,分离变化因子等等。 3.1 各类先验

表示学习可以方便的表达很多普遍的先验,即那些不针对特定任务但是可能会对用机器学习算法解决AI任务有用的先验。比如平滑先验,多解释因素,解释因素的层级组织,半监督学习,跨任务共享因素,流形方法,自然聚类,时空相干性,稀疏性等。可以用这些先验来帮助我们优化学习器。

3.2 平滑

机器学习研究者们在无参数学习器中寻求灵活性,例如具有固定通用局部响应核的内核机器。这些算法大多只利用了局部泛化的原则,假设目标函数足够平滑,因此他们依赖样例来明确地映射出目标函数的波动。泛化主要是通过在相邻的训练样例之间进行局部插值来实现的。平滑不足以处理维度灾难问题,当用原始输入表示数据时目标函数的波动(wrinkle)可能指数式增长。

3.3 分布式表示

好的表示有很好的表达能力,这意味着一个合理大小的学习过的表示可以捕获大量可能的输入配置,比如RBMS,稀疏编码,自编码器等可以用O(n)的参数来表达O(2^k)的输入空间。这些都是稀疏表示或者分布式表示。在分布式表示中,大量的特征或隐藏单元的的可能子集可以被激活以响应给定的输入。

3.4深层次架构

深层次架构有两个优点,一方面可以促进特征的重用,另一方面,有可能在更高层次的表示中产生更抽象的特性。重用是深层次架构优点的核心。如果,函数族可以用更少的参数表示,那么它可以用更少的样例学习,在计算效率和统计效率上都得到改进。深层架构可以导致抽象表示,因为更抽象的概念通常可以用不太抽象的概念来构造。一般上,更抽象的概念对于输入的大多数局部改变是不变的。

3.5 分离变化的因子

复杂数据来自于许多源的丰富交互。特征学习最健壮的方法是分离尽可能多的因素,在实际情况下丢弃尽可能少的数据信息。如果某种形式的降维是可取的,那么我们假设首先应该删去在训练数据中表示最少的局部变化方向。

4 BUILDING DEEP REPRESENTATIONS

这一部分主要介绍了深层次架构的表示学习的构建方法。深度学习取得突破,中心思想是贪心的逐层的无监督的预训练。一层一层地学习一个特征层次,使用无监督特征学习在每一层学习一个新的转换,与之前学习的转换组合。本质上,每一次无监督特征学习的迭代都会给深度神经网络增加一层权值,最后所有层结合来初始化深度的监督预测器。特征提取的分层叠加通常能得到更好的表征。这里介绍了几种方法可以把无监督训练的层合成一个更好的无监督模型。一种方法是DBN,顶层是RBM,低层是sigmoid信念网络,可以用wake-sleep算法进一步优化。第二种方法是组合RBM参数得到深层玻尔兹曼机DBM,只需要把RBM的权重减半就得到深层RBM的权重。第三种方法是堆叠RBMS或者自编码器得到深度自编码器,有很多的编码器-解码器对。最近的一种训练深层次架构的方法是考虑一个深层架构的自由能函数的迭代构造,作为与较低层相关联的变换的组合,然后是顶层隐藏单元。问题是如何训练由任意参数化(自由)能量函数定义的模型,现在比较好的方法有混合蒙特卡罗,对比散度等。

5 SINGLE-LAYER LEARNING MODULES

这一部分介绍了单层的学习模型,并尝试从概率模型,自编码器,流形学习等角度来看待这些模型。关于表示学习,有两条主线,一条是概率图模型,另一条是神经网络。区别在于隐藏单元是考虑潜在的随机变量还是计算节点。概率图方面主要是玻尔兹曼机,神经网络方面主要是自编码器的变体。当我们考虑更深层的模型时,这两种模式之间的联系变得更加脆弱,单层训练模型主要有三种形式,概率图模型,自编码器模型和流形学习。这里作者举了一个PCA的例子,可以从上述三个角度来表达PCA模型。线性特征的表达能力有限,不能堆叠形成更深,更抽象的表示。最近的算法致力于提取非线性特征,这些算法可以堆积成一个更深层的网络

6 PROBABILISTIC MODELS

这一部分主要介绍了概率模型。从概率建模的角度来看,特征学习的问题可以解释为试图重新获得一组潜在的随机变量,这些变量描述了观测数据的分布,我们可以用隐变量h和观测变量x的联合分布表达概率模型。特征值被认为是一个推断过程的结果,以确定潜在变量在给定数据下的概率分布,即p(h|x),通常称为后验概率。学习是通过估计一组模型参数来构想的,这些模型参数(局部)最大化了训练数据相对于这些潜在变量的分布的可能性。概率模型有两种形式,有向图和无向图模型。

6.1有向图模型

有向图模型通过联合分布的分解进行参数化,。可以用这种分解表示的无监督特征学习模型有PCA,sigmoid信念网络,稀疏编码等。有向图有一个重要属性,解释相消。给定事件的观察,事件的独立的先验可以变得非独立。这使得h的后验分布p(h|x)变的不可解。解释相消使我们对观察中未见的或潜在的事件作出了简单的预测。如果有人认为一个表示是由各种特征检测器观察到的输入的估计的属性组成的,允许不同的特性相互竞争和协作来解释输入是很有用的。

这里重点介绍了稀疏编码算法。稀疏编码也涉及一个潜在的表示h,通过一个线性映射W映射到x,W称为字典。稀疏编码和PCA区别是稀疏编码包含一个惩罚项来保证h的稀疏激活可以用于编码每个输入x。从非概率的角度来看,稀疏编码可以看作是通过这个公式来恢复与新输入的x相关的编码或特征向量,1,W的训练通过优化进行。从概率模型角度看,稀疏编码表示为这样两个公式:。与PCA不同,这里把高斯先验换成了拉普拉斯先验。在稀疏编码中,我们希望重新获得MAP(最大化h的一个后验,)。字典的学习是在给定h*的MAP下的最大化数据的似然。稀疏编码有一种变种,Spike-and-Slab 稀疏编码(S3C)。该模型有一组潜在的spike变量和一组潜在的实值slab变量。

6.2 无向图模型

无向图模型通过非正规化非负势函数的因子分解来参数化联合分布p(x,h),,势函数定义了可见变量间,隐藏变量间,可见变量和隐藏变量之间的相互作用。

有一种特殊形式的无向图模型称为玻尔兹曼机,定义为由对称耦合的二元随机变量或单元构成的网络。联合分布为为能量函数,也代表了变量之间的相互作用。玻尔兹曼机分为两部分,可见单元和隐藏单元,能量函数 。玻尔兹曼机的联合分布一般不可解。于是又产生了一些可解的变形,比如RBM。

RBM去掉相同层之间的相互作用(可以理解为图上的边),只保留不同层之间的相互作用。形成一个二分图,条件概率分布可以写成因子分解的形式,公式如下所示。通过因子分解计算后,后验分布变得可解,但配分函数依然不可计算。

     

有很多科学家们尝试发展实值数据的RBM模型,最直接方法是在RBM框架下对实值的观测数据建模,也就是所谓的高斯RBM。但是GRBM不能很好的捕获自然图像的统计学结构,于是又产生了mcRBM,mPoT,ssRBM等变形,这些模型的隐藏单元不仅编码数据的条件均值,还编码其条件协方差,取得更好的效果。

6.3 RBM模型的训练

训练概率模型一般用最大似然估计方法,,最直接的方法是不断计算似然梯度,得到局部最大值,计算梯度公式如下:

前半部分称为正相,代表数据分布,后半部分为负相,代表模型分布,梯度的作用就是把模型分布向着数据分布的方向局部的移动。这个过程通过减少模型分布的能量,增加数据分布的能量进行直到两者达到平衡。

RBM的独立的特性使正相可以直接求解,而负相无法直接求解。要近似负相的期望,可以考虑利用RBM的独立性来指定期望的蒙特卡罗近似, ,样本可以通过块状吉布斯采样得到。一般的,在梯度更新的每一步,都需要开始一个吉布斯链采样,直到链收敛到平衡分布。取足够数量的样本来近似模型分布的期望梯度,然后重新启动过程,进行下一步的近似梯度上升。这个算法效率太低,可以使用对比散度算法,SML算法等改进。对比散度算法利用一个很短的吉布斯链近似,并且用正相中的训练数据初始化。虽然用短的吉布斯链采集的样本可能和模型分布的表示有很大偏差,但对于正相训练数据所代表的数据分布,它们至少朝着模型分布的方向移动。因此,它们可以组合起来得到好的梯度估计。而SML算法(随机最大似然算法) 与对比散度算法不同,在每次梯度更新时,在用于上次更新的链的最后状态初始化链。这些算法可能存在潜在的混合问题,于是又产生了FPCD算法,从模型的局部扰动中抽取样本,而不是从当前模型分布中取样。

 

7 DIRECT ENCODING: LEARNING A PARAMETRIC MAP FROM INPUT TO REPRESENTATION

这一部分主要介绍了直接编码,即学习从输入到输出的参数化映射,重点介绍了自编码器模型及正则化自编码器变体。概率模型的联合分布经常和隐变量联合在一起,但是隐变量的后验的计算非常复杂,并且这种后验分布还不是一个简单的可用的特征向量。可以用一种无概率的特征学习模式代替,特点是学习一个直接的编码,即输入到表示的参数化映射。代表模型有自编码器。在自编码器中,以特定的参数化闭合形式显式定义特征提取函数fθ,称为编码器,是由x计算出的特征向量,类似的可以定义解码器,从特征空间映射回输出空间。自编码器通过编码器和解码器参数化,编码器和解码器在重建的任务中同时学习,尝试在训练集上让重建错误(reconstruction error) L(x,y)尽量小。公式表示为  ,学习一般通过梯度下降法进行。编码器和解码器的一般形式可以写作),s代表激活函数,sg和L的选择取决于输入域的范围。参数化方面,自编码器和RBMS有一个显著的不同,RBMS使用单个权重矩阵,自编码器允许编码器和解码器使用不同的矩阵。在学习自编码器时,要注意避免学习identity(即对输入的复制,会造成重建错误全是0),可以通过正则化的自编码器实现这一点。

可以将正则化应用于自动编码器的目标看作是使表示对于输入的变化尽可能的“恒定”(不敏感)。几种常用的正则化自编码器包括稀疏自编吗器,去噪的自编码器,收缩的自编码器(CAE),预测稀疏分解(PSD)等。稀疏自编码器的常用方法有惩罚隐藏单元的偏置,惩罚隐藏单元激活的输出,虽然L1正则项最自然,但是使用的很少,一般常用的是 Student-t惩罚。去噪自编码器(DAE)的目标转变为去除人为损坏的输入,即从有损坏的版本中学习清楚的输入。学习者必须捕捉出输入分布的结构,以便最优地撤销破坏过程的影响。收缩的自编码器(CAE)在基本自编码器上加了一个分析的收缩惩罚项,惩罚已学习特征对输入的无穷小变化的敏感性。与DAE有三点不同:直接惩罚特征的敏感性而不是重建的敏感性;惩罚项是分析化的而不是随机的;有一个超参数λ使得重建和鲁棒性平衡。CAE的效果比DAE更好。PSD模型是稀疏编码的一种近似,用快速的非迭代逼近代替了昂贵的和高度非线性的编码步骤。

8 REPRESENTATION LEARNING AS MANIFOLD LEARNING

这一部分主要介绍了流形学习的观点。流形学习是一种几何概念,前提是流形假说,根据这一理论,在高维空间中呈现的真实数据应该集中在一个低维数的流形M附近,嵌入在高维输入空间中。无监督学习的主要任务可以看做是对支持数据的流形结构建模,所学习的相关表示对应于嵌入式流形上的一个内在坐标系。大多数基于这种几何视角的算法采用非参数方法,基于训练集的最近邻图,但是这些方法并没有直接学习一个参数化的特征提取函数用于新的测试点,这严重限制了它们作为特征提取器的使用。于是提出了一些非线性的流形学习算法来学习参数化的映射,从而可以直接计算新的点的表示。原理很简单:不再为每个训练点提供自由的低维嵌入坐标“参数”,这些坐标现在通过一个关于输入空间坐标的显式参数化函数获得,这些参数需要学习。学习过程和无参数的学习算法相似,都采用梯度下降法,不过现在不用梯度下降更新嵌入坐标,梯度被向后传播到那个映射函数的参数。

9 CONNECTIONS BETWEEN PROBABILISTIC AND DIRECT ENCODING MODELS

这一部分以PSD和正则化自编码器为例介绍了直接编码模型和概率模型,流形学习之间的联系,同时介绍了如何面对采样的挑战,如何评价和监控算法的表现等内容。

 

9.1 PSD

如果只考虑解码器,PSD和稀疏编码是一样的有向生成模型,编码器可以视为一种近似推理机制,来猜测P(h|x)和初始化一个MAP迭代接口。在PSD中,编码器和解码器一起训练。因此,PSD位于概率模型(具有潜在变量)和直接编码方法的交点处。

9.2 正则化自编码器

正则化的自编码器的训练法则不是标准的似然框架,它们的训练法则和分数匹配相关。正则化的效果要求学习的表示对输入尽可能的不敏感,同时最小化训练样例上的重建误差使得表示包含足够的信息来区分它们。这意味着重建函数在重建训练例子时应该尽可能保持常数,这也意味着重构函数应该将输入映射到最近的点流形。重构和输入之间的差值是一个与估计得分一致的向量。当分数为零时(在流形上),我们必须考虑对数密度或能量的二阶导数,对数密度的二阶导数最小的方向是密度保持较高的方向,对应于在流形上移动。

9.3 采样的挑战

随着训练的进行,采样变得非常低效(或不可靠),因为学习到的分布模型变得更尖锐,使得模型之间的混合非常缓慢。深度表示可以帮助两个分离的模型更好的融合。其思想是,如果更高层次的表示能更好地分离出潜在的抽象因素,那么MCMC可以很容易地在这个抽象空间中完成一些小步骤,然后,可以将高级表示映射回输入空间,来获得输入级的样本。

9.4 评价和监控表现

评价一个特征学习算法在一个特定任务上的有用性,可以用一个预测器,用学习到的特征去提供数据或初始化它。实际中,我们保存学习的特征然后在上面训练一个简单的分类器,但这样计算成本过高。我们需要方法来监控和评估纯粹的无监督表现,可以用自编码器的变种实现。

10 GLOBAL TRAINING OF DEEP MODELS

这一部分介绍了深层次架构训练面对的挑战以及如何对所有层进行联合训练。我们的期望是,对高级抽象和概念之间的联合分布建模应该更容易,因为需要学习的数据要少得多,困难的是学习表示。无监督的预训练可以更好的帮助监督学习有两方面原因,一方面是正则化效果,另一方面是优化效果。正则化效果使用无监督学习来偏差学习动态,并在“良好”的局部最小值的吸引域中初始化它,其中良好”是就泛化误差而言。深层次架构的优化非常困难,激发人们寻找一些好的方法,比如second-order 方法,无监督预训练方法,自然梯度方法,改进初始化,改进隐藏单元等等。几个最近的利用大量标记数据的结果表明,适当的初始化和非线性的选择,可以成功地训练非常深的纯监督网络,而不需要任何逐层的预先训练。这说明无监督预训练起到一个先验的作用,当可以得到到大量的标记数据时,就变的没有必要。

然后我们考虑对深度玻尔兹曼机(DBM)的联合训练,DBM有多个隐藏单元层,奇数编号的层的单元条件独立于偶数编号的单元,反之亦然。能量函数为:

可以看成二分图,但与RBM不同,隐藏单元上的后验不再可解,可以用一种平均场(mean-field)近似来近似先验。我们用来近似),似然下界为,似然梯度写成下面的式子∂L(Qv)θ=-EQv[EθDBMv,h1,h2θ]+EP[EθDBMv,h1,h2θ].我们需要最大化似然下界,进行下面公式所示的平均场更新,迭代直到收敛,可以用Q来估计似然梯度的正相,负相可以用SML算法或对散度算法计算。

 

 

 11 BUILDING-IN INVARIANCE

这一部分介绍如何使用基本领域知识,特别是它们的拓扑结构来学习更好的特征。

第一种方法是提供更多的表示数据,可以对原始数据进行转换来产生更多的数据,比如对图片旋转,平移,倍增等。

第二种方法是利用卷积和池化,基于输入维度的拓扑结构。在拓扑上扫过一个局部特征提取器,将输入转换为一个类似形状的特征图。这可以看作是静态的但位置不同的重复的特征提取器,它们共享相同的参数。这也是卷积网络的核心。卷积架构的另一个特点是,在几个相邻的输入位置使用相同的特征检测器计算出的值,然后通过池化操作进行汇总,通常取它们的最大值或总和。池单元的输出将是相同的,而不考虑特定特性位于池区域的哪个位置。无监督角度来看最简单的学习卷积层的方法是基于patch的训练,给一个普通的无监督特征学习算法提供局部的从输入的随机位置提取的patch块。然后,可以将产生的特征提取器在输入上滑动,以生成卷积特征映射。也可以用散射操作代替池化操作,在每一层保存所有关于输入的信息,并自动生成一个非常稀疏的表示。过滤器不是学习的而是设置的。

第三种方法是利用时间的一致性和慢特征。时间一致性已经中被成功地应用到了深度架构对视频的建模中。时间一致性发现了与普通无监督特征学习方法相似的视觉特征,并且时间一致性惩罚与无监督特征学习的训练准则可以组合起来

第四种方法是分离变化的因素的算法。我们想要一个特定的特征集对不相关的特征是不变的,并且分离相关的特性。我们希望更高层次的特性更抽象,并表现出更大的不变性,但我们几乎无法控制通过特性池丢失了哪些信息。可以使用转换自动编码器等方法来利用数据中已知的一些变化。

总结与感悟:

这篇文章的作者也是Yoshua Bengio。相比之前那篇Learning Deep Architectures for AI,这篇文章应该更新一些,涉及到了图像处理,文本处理等新的领域。这篇文章的核心是表示学习,这也是自己第一次系统接触这个概念。通过这篇文章,我理解的表示学习是对特征工程的一种取代,减少对人工的依赖,让模型自动的去学习提取出合适的特征表示。之前自己做过kaggle上面的比赛,特征工程需要消耗大量的精力,而且需要很多的专业知识,有时不能取得很好的结果,表示学习就很有必要。通过这篇文章,我同时学习了概率图模型,自编码器模型,流形学习的有关知识。这篇文章让我对这些算法有了更深的认识和理解,同时也了解到了这些模型之间的联系。特别流形学习是自己第一次接触,这部分内容也没有特别看懂,但是了解了它的基本思想。此外,我还学习了很多优化和改进算法的思想,方法,包括利用各类先验,尝试深层次架构,稀疏编码,分离可变因素等等,对于自己以后的研究有指导意义。通过这两篇论文,给了我一个启示,要善于总结已有的算法,多利用比较,对比等方法,总结普遍规律和现有算法的不足,来进行算法的改进。这篇文章读完后,自己还有一些疑问,特别是自己还没有完全理解这些算法具体是如何学习出特征表示的,学习出的结果是什么样的。我希望能找到一些实际的图像或文本的例子去看一下,如何用这些模型去学习表示以及通过表示学习可以达到什么样的效果。

 


提交评论区域

您尚未登录登录后方可评论 登录 or 注册

评论列表

暂无评论
div>