深度学习基础

机器学习的本质就是寻找最优模型。

而深度学习是机器学习的一个大分支,深度学习的概念源于对人工神经网络的研究,深度学习的基本结构(也即模型)是深度神经网络。

感知机是最简单的一种人工神经网络,是一种二元线性分类器。感知机抽象于生物神经细胞,为了模拟神经细胞行为,与之对应的感知机基础概念被提出,如权重(突触)、偏置(阈值)及激活函数(细胞体)。

感知机:

不同的输入a与其对应的权重w相乘后全部加和,再与偏置值相加后送入激活函数,经激活函数后得到该感知机的输出。在人工神经网络中,规定神经元函数只能对输入变量(指向它的节点的值)线性组合后的结果进行一次非线性变换(激活函数)。这里的激活函数可以采用Sigmoid函数,Sigmoid函数的输出值在0到1之间:

感知机也被用来特指单层人工神经网络,以区别于多层感知机。感知机无法处理线性不可分问题。什么叫线性不可分?举个例子,二维平面上有两类点,无法用一条一维直线将其完全分开;N维空间中有两类点,用N-1维的分隔超平面无法将两类点完全分开,就叫做线性不可分。

感知机(神经元)之间采用不同的连接方式,也就构成了不同的网络结构。每个神经元都拥有自己的权重值和偏置值。权重值和偏置值构成了这个网络的参数。

简单的前馈神经网络:

给定参数值可以定义一个神经元,也即定义一个函数;再给定网络结构,就可以定义一个神经网络,也即一组函数。

深度神经网络中的深度意味着神经网络的层数很多,神经网络中第一层是输入层,最后一层是输出层,中间数层是隐藏层,每一层都由若干神经元构成。

我们可以选择应用Softmax层作为输出层,Softmax层可以将输出层神经元的输出值进行处理,使其总和为1。这在分类场景,判定属于哪类的概率最大时,提供了方便,也使得数据更容易被理解。

已经选定了深度学习的基本结构,也就是深度神经网络,接下来要谈的是对神经网络输出结果好坏的量化评估以及如何找到最佳的参数值。

在初始参数条件,一般神经网络的输出结果并不完全正确,我们需要对其参数进行优化,要优化参数,首先要度量误差,误差来源于预测结果与实际结果的距离,比如对于手写数字识别,给定一张写着『2』的图片,最理想的输出是,只有2对应的那个神经元输出为1,其它输出均应该为0。我们可以选择计算每个神经元的输出与理论结果的误差,然后将其加和,由此得到了我们对神经网络的优化目标,也即通过调整参数让整个损失函数的函数值最小。

那我们该如何确定最佳参数值呢?遍历肯定不行,如果D层,每层N个神经元,那复杂度就是N的D次方。终究还是要选择梯度下降方法。

梯度下降法参数迭代公式

η是学习速率,η后面的式子是损失函数对该参数变量的偏导数。

深度学习网络分类

如前所述,深度学习指的是一类广泛的机器学习技术和架构,其特点是采用多层的非线性信息处理方法,这种方法在本质上是分层的。根据这些结构和技术不同的应用领域,如合成/生成或识别/分类,我们可以大致把这些结构分为三类:

  • 无监督的或生成式学习的深度网络:针对模式分析和合成任务,用于在没有目标类标签信息的情况下捕捉观测到的或可见数据的高阶相关性。各种文献中的无监督特征或表达学习指的就是这一类深度网络。当用于生成模式时,它也可以用来描述可见数据和其相关分类的联合分布概率,此时它具有可以利用的类别标签,而且这些类别标签被看做是可见数据的一部分。在后一种情况中,利用贝叶斯准则可以把生成学习网络转换为判别式学习网络。

  • 有监督学习的深度网络:直接提供用于模式分类目的的判别能力,它的特点是描述了可见数据条件下的后验分布(条件概率分布)。这种有监督的学习,目标类别标签总是以直接或间接形式给出,所以它们也被称作判别式深度网络。

  • 混合深度网络:目标是判别式模型,往往以生成式或无监督深度网络的结果作为重要辅助,可以通过更好地优化和正则化上个类别中的深度网络来实现,也可以通过对第一个类别所述的深度生成式或无监督深度网络的参数进行估计时,使用判别式准则来实现。

在其他文献里,一般将深度机器学习技术分为深度判别式模型(深度神经网络DNN、递归神经网络RNN、卷积神经网络CNN等)和生成式/无监督模型(受限玻尔兹曼机RBM、深度信念网络DBN、深度玻尔兹曼机DBM、正则化的自编码器等),然而这种二元分类方法忽略了通过深度学习研究所获得的重要观点,即生成式和无监督学习如何通过更好地进行正则化与优化,来大幅提高DNN和其他深度判别式和监督学习模型的训练效果。同时,无监督学习的深度网络并不一定必须是概率模型,也不一定能从模型中得到有意义的采样。深度有监督的学习模型适合复杂系统的端到端学习;而深度无监督学习模型,尤其是概率生成模型,更容易理解,更容易嵌入领域知识,更容易组合,对不确定性进行处理。

下面先只讲无监督和生成式学习深度网络。

无监督学习是指在学习过程中不使用特定任务的监督信息(如目标类别标签)。这一类深度网络大多可以通过从网络中采样来有效生成样本,因此是生成式模型,例如RBM、DBN、DBM和广义除噪自编码器。然而这一类别中的有些网络采样并不容易,因而本质上并不是生成式的,例如稀疏编码网络和原始形式的深度自编码器。

生成式或无监督深度网络有多个子类:

一类是各种自编码器及其堆叠形式,具体的说,在除噪自编码器中,输入向量首先被『破坏』,例如,随机选择一定比例的输入并把它们设为零,或加入高斯噪声,然后调整参数,使隐层编码结点重构出原始的、未损坏的输入数据,调整参数所使用的准则包括原始输入与重建输入的最小均方误差和KL散度准则。将未损坏数据进行转换,获得编码表示,并将其作为下一层堆叠自编码器的输入。

另一类有生成能力的深度无监督模型是深度玻尔兹曼机(DBM),DBM包含很多隐变量层,并且同一层变量之间没有连接。DBM是玻尔兹曼机(BM)的一个特例。当DBM的隐层数为1时,我们就得到了受限玻尔兹曼机(RBM),RBM与DBM一样,没有隐层到隐层和显层到显层的连接。RBM的主要优点是,通过组合许多RBM,把上一层RBM的特征激励作为下一层的训练数据,可以高效的对隐层进行学习,这样组合也即得到了深度信念网络(DBN)。

还有两类,一种是和积网络(SPN),另一种是无监督学习模式下的RNN。

自编码器

深度自编码器是一类特殊的无分类标签的深度神经网络。其输出向量与输入向量同维,常按照输入向量的某种形式,通过隐层学习一个数据的表示或对原始数据进行有效编码。值得注意的是,这种自编码器是一种不利用类标签的非线性特征提取方法。就方法本身而言,这种特征提取的目的在于保留和获得更好的信息表示,而不是执行分类任务,尽管有时这两个目标是相关的。

一个典型的自编码器拥有一个表示原始数据或者输入特征向量的输入层;一个或多个表示特征转换的隐层;一个跟输入层匹配、用于信息重构的输出层。当隐层数目大于1时,这个自编码器就被视为深层结构。隐层的维度可以小于(当目标是特征压缩)或大于(当目标是映射特征匹配更高维的空间)输入层的维度。

如果我们在自动编码器的基础上加上L1的规则限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,稀疏约束项),我们就可以得到稀疏自动编码方法。也就是上面提到的特征压缩,如果隐藏节点比可视节点(输入、输出)少的话,被迫的降维,自编码器会自动习得训练样本的特征(变化最大,信息量最多的维度),所谓稀疏性,就是对一对输入,隐藏节点中被激活的节点数(输出接近1)远远小于被抑制的节点数目(输出接近0)。那么使神经元大部分的时间都是被抑制的限制被称作稀疏性限制。

另外提一下降噪自编码器,原理很简单,降噪自编码器与自编码器的区别在于,降噪自编码器在原本自编码器的输入上加上了噪声,然后希望通过训练输出去除噪声后的原数据。

栈式自编码器是一个由多层稀疏自编码器组成的神经网络,由于其隐层数目大于1,所以可被认定为是一种深度自编码器。

在栈式自编码器中,前一层的自编码器的输出作为其后一层自编码器的输入。对于一个n层栈式自编码器的编码过程就是,按照从前向后的顺序执行每一层自编码器的编码步骤。

假设我们要训练一个4层的神经网络模型用于分类任务,网络结构如下:

 

栈式自编码器的训练

整个过程分为两个阶段,一个是无监督预训练阶段(pre-training),另一个是有监督微调阶段。预训练阶段实际上就是一层一层的按照原先训练稀疏自编码器的方法训练每一层的参数。

在预训练阶段,首先,我们要采用稀疏自编码网络,先训练从输入层到H1层的参数:

 

训练完毕后,我们去除解码层,只留下从输入层到隐藏层的编码阶段。

接着我们训练从H1到H2的参数,我们把无标签数据的H1层元素的激活值,作为H2层的输入层,然后再进行自编码训练:

 

最后训练完毕后,再去除H2的解码层,如此重复,可以训练更高层的网络,这就是逐层贪婪训练的思想。

训练完H2之后,我们就可以接分类层softmax,用于多分类任务:

 

以上的过程就是所谓的无监督预训练。后面接着就是利用上面的参数作为网络的初始值,继续进行神经网络的训练了。

玻尔兹曼机

首先是玻尔兹曼分布,其分布的概率公式如下:


玻尔兹曼分布概率公式

玻尔兹曼分布概率公式

pi为量子态i的几率,εi为量子态i的能量,k为玻尔兹曼常数,T为系统温度,M为系统可具有的量子态的总数。

可以看到,εi越大,pi越小,也即物理意义为,在保守力场作用下,低能量的状态比高能量的状态拥有更高的分布几率,举个例子,一个大盒子里放有若干个球,球总是倾向于先占据盒子的底部,即重力势能低的位置,也即处于稳态。

然后是BM,BM是玻尔兹曼机,玻尔兹曼机是一种随机神经网络(同时也是递归神经网络),描述一个随机网络主要需要确定两点。

第一个是这个随机网络的概率分布函数,由于网络节点的取值状态是随机的,从贝叶斯网络的观点来看,要描述整个网络,需要三种概率分布,分别是联合概率分布、边缘概率分布(边缘概率分布的边缘源于它是一组概率的加和,通常被放在表的边缘,P(A)=sum(P(B)*P(A|B)+P(C)*P(A|C)))和条件概率分布。

第二个是这个随机网络的能量函数,随机神经网络根植于统计力学,受统计力学的启发,引入了能量函数。能量函数是描述整个系统状态的一种测度,系统越有序或概率分布越集中,系统的能量越小。反之,系统越无序或者概率分布越趋向于均匀分布,则系统的能量越大(与前面讲过的熵类似)。能量函数的最小值,也就对应了系统的稳态,一般情况下,我们就是要找到系统的稳态,也就是能量函数的最小值。

没有特定限制连接方式的玻尔兹曼机目前为止并没有在机器学习的实际问题中起到什么作用,只是理论上显得有趣。

接下来是受限玻尔兹曼机,图示如下:


包含三个可见单元和四个隐单元的受限玻尔兹曼机示意图(不包含偏置节点)

包含三个可见单元和四个隐单元的受限玻尔兹曼机示意图(不包含偏置节点)

RBM与前馈神经网络不一样,RBM在可见层和隐层间的连接方向是不确定的,值可以进行双向传播;且可见层与隐层,层间完全连接,而层内没有连接,也即二分图(不受限玻尔兹曼机隐层单元间存在连接,使之成为递归神经网络)。

标准的受限玻尔兹曼机由二值(布尔/伯努利)隐层和可见层单元组成,权重矩阵W中的每个元素指定了隐层单元hj和可见层单元vi之间连接的权重值(受限玻尔兹曼机每条边必须连接一个隐单元和可见单元),此外对于每个可见层单元vi有偏置ai,对每个隐层单元hj有偏置bi。前面在讲述玻尔兹曼机时提到过,我们要确定两部分内容,一个是联合概率分布、边缘概率分布和条件概率分布,另一个是能量函数。给出了前面的定义,我们先给出受限玻尔兹曼机的能量函数:

更换其为矩阵表示:

根据能量函数,我们进一步给出受限玻尔兹曼机中隐层和可见层之间的联合概率分布:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值