深度网络的层次组件:Perceptron、Auto-Encoder、Restricted Boltzmann Machine、Convolutional Neural Networks


前两天老大突然问了一个ladder network的问题,发现读文章时很多神经网络中的名词对应不上了,还是自己总结一下吧。


Perceptron:

要说起Perceptron,我们无疑要从线性分类器说起,它的特点就是简单和可计算性。对于那些线性可分得训练数据,我们当然能够找到一个线性分类器将所有数据正确分类。而对于非线性可分的数据,可以通过优化规则,设计出最优的线性分类器。

线性分类器在数学上被理解为线性判别函数(Linear Discriminant Functions),在几何上可以理解为决策超平面(Decision Hyperplanes)感知器算法的诞生也就是为了确定线性判别函数中的未知参数向量w

这是一个经典的感知器模型,包括n个输入、n个权值,被称作突触权(synaptic weights),还有阈值(threshold)w0,在他们相加就和后,进入方块所示的非线性部分–激活函数,通常使用硬限幅器(Hard Limiter)来实现,他们都是阶跃函数,其输出一般为两个电平值0和1。我们称带有Hard Limiter的神经元为McCulloch-Pitts神经元。它是神经网络的基础,我们模型都是由这种MP神经元构成。





Auto-Encoder:

一种常见的深层模型是由自编码器(Auto-Encoder)构造的[15]。自编码器可以利用一组无标签的训练数据{x(1), x(2), … }(其中x(i)是一个n维向量)进行无监督的模型训练。它采用反向传播算法,让目标值接近输入值。下图是一个自编码器的示例:

 

 

图8 自编码器

 

自编码器尝试训练一个恒等函数,让输出接近等于输入值,恒等函数看似没有学习的意义,但考虑到隐藏层神经元的数目(本例中为3个)小于输入向量的维数(本例中为6维),事实上隐藏层就变成了输入数据的一种压缩的表示,或说是抽象的简化表示。如果网络的输入是完全随机的,将高维向量压缩成低维向量会难以实现。但训练数据往往隐含着特定的结构,自编码器就会学到这些数据的相关性,从而得到有效的压缩表示。实际训练后,如果代价函数越小,就说明输入和输出越接近,也就说明这个编码器越靠谱。当然,自编码器训练完成后,实际使用时只需要它的前一层,即编码部分,解码部分就没用了


sparse AE:

稀疏自编码器(Sparse Auto-Encoder)是自编码器的一个变体,它在自编码器的基础上加入正则化(Regularity)。正则化是在代价函数中加入抑制项,希望隐藏层节点的平均激活值接近于0,有了正则化的约束,输入数据可以用少数隐藏节点表达。之所以采用稀疏自编码器,是因为稀疏的表达往往比稠密的表达更有效,人脑神经系统也是稀疏连接,每个神经元只与少数神经元连接。



denoising AE:

降噪自编码器是另一种自编码器的变体。通过在训练数据中加入噪声,可训练出对输入信号更加鲁棒的表达,从而提升模型的泛化能力,可以更好地应对实际预测时夹杂在数据中的噪声。


Restricted Boltzmann Machine:

深度玻尔兹曼机(Deep Boltzmann Machine,DBM)

深度信念网络(Deep Belief Networks,DBN)

受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一个二部图,一层是输入层(v),另一层是隐藏层(h),假设所有节点都是随机二值变量节点,只能取值0或1,同时假设全概率分布p(v, h)满足Boltzmann分布。

 

 

图10受限玻尔兹曼机(RBM)

 

由于同层节点之间没有连接,因此已知输入层的情况下,隐藏层的各节点是条件独立的;反之,已知隐藏层的情况下,输入层各节点也是条件独立的。同时,可以根据Boltzmann分布,当输入v时通过p(h|v)生成隐藏层,得到隐藏层之后再通过p(v|h)生成输入层。相信很多读者已经猜到了,可以按照训练其他网络类似的思路,通过调整参数,希望通过输入v生成的h,再生成的v’与v尽可能接近,则说明隐藏层h是输入层v的另外一种表示。这样就可以作为深层模型的基本层次组件了。全部用RBM形成的深层模型为深度玻尔兹曼机(Deep Boltzmann Machine,DBM)。如果将靠近输入层的部分替换为贝叶斯信念网络,即有向图模型,而在远离输入层的部分仍然使用RBM,则称为深度信念网络(Deep Belief Networks,DBN)


玻尔兹曼机(Boltzmann machine, BM)是一种随机的递归神经网络,由G. E.Hinton等提出,是能通过学习数据固有内在表示、解决复杂学习问题的最早的人工神经网络之一。玻尔兹曼机由二值神经元构成,每个神经元只取0或1两种状态,状态1代表该神经元处于激活状态,0表示该神经元处于抑制状态。然而,即使使用模拟退火算法,这个网络的学习过程也十分慢。Hinton等提出的受限玻尔兹曼机去掉了玻尔兹曼机同层之间的连接,从而大大提高了学习效率。受限玻尔兹曼机分为可见层v以及隐层h,可见层和隐层的节点通过权值w相连接,2层节点之间是全连接,同层节点间互不相连



Convolutional Neural Networks:


以上介绍的编码器都是全连通网络,可以完成10×10的图像识别,如手写体数字识别问题。然而对于更大的图像,如100×100的图像,如果要学习100个特征,则需要1,000,000个参数,计算时间会大大增加。解决这种尺寸图像识别的有效方法是利用图像的局部性,构造一个部分联通的网络。一种最常见的网络是卷积神经网络(Convolutional Neural Networks,CNN)[19][20],它利用图像固有的特性,即图像局部的统计特性与其他局部是一样的。因此从某个局部学习来的特征同样适用于另外的局部,对于这个图像上的所有位置,都能使用同样的特征

 

具体地说,假设有一幅100×100的图像,要从中学习一个10×10的局部图像特征的神经元,如果采用全连接的方式,100×100维的输入到这个神经元需要有10000个连接权重参数。而采用卷积核的方式,只有10×10=100个参数权重,卷积核可以看作一个10×10的小窗口,在图像上上下左右移动,走遍图像中每个10×10的位置(共有91×91个位置)。每移动到一个位置,则将该位置的输入与卷积核对应位置的参数相乘再累加,得到一个输出值(输出值是91×91的图像)。卷积核的特点是连接数虽然很多,有91×91×10×10个连接,但是参数只有10×10=100个,参数数目大大减小,训练也变得容易了,并且不容易产生过拟合。当然,一个神经元只能提取一个特征,要提取多个特征就要多个卷积核。

 

下图揭示了对一幅8×8维图像使用卷积方法提取特征的示意过程。其中使用了3×3的卷积核,走遍图像中每个3×3的位置后,最终得到6×6维的输出图像:

 

 

图11 8×8图像的卷积过程示意

 

 

图12 用户图像分类的卷积神经网络

 

如图所示是Hinton的研究小组在ImageNet竞赛中使用的卷积神经网络[3],共有5个卷积层,每层分别有96,256,384,384和256个卷积核,每层卷积核的大小分别为11×11,5×5,3×3,3×3和3×3。网络的最后两层是全连接层。



深度学习训练方法:

以堆栈自编码网络为例,深度结构神经网络的训练过程如下:

(1)、将第一层作为一个自编码模型,采用无监督训练,使原始输入的重建误差最小;

(2)、将自编码模型的隐单元输出作为另一层的输入;

(3)、按步骤(2)迭代初始化每一层的参数;

(4)、采用最后一个隐层的输出作为输入施加于一个有监督的层(通常为输出层),并初始化该层的参数;

(5)、根据监督准则调整深度结构神经网络的所有参数,堆栈所有自编码模型组成堆栈自编码网络。

基本的无监督学习方法在2006年被Hinton等人提出用于训练深度结构神经网络,该方法的学习步骤如下:

(1)、令h0(x)=x为可观察的原始输入x的最低阶表示;

(2)、对l=1,...,L,训练无监督学习模型,将可观察数据看做l-1阶上表示的训练样例hl-1(x),训练后产生下一阶的表示hl(x)=Rl(hl-1(x)).

随后出现了一些该算法的变形拓展,最常见的是有监督的微调方法,该方法的学习步骤如下所示:

(1)、初始化监督预测器:a、用参数表示函数hL(x);b、将hL(x)作为输入得到线性或非线性预测器;

(2)、基于已标记训练样本对(x,y)采用监督训练准则微调监督预测器,在表示阶段和预测器阶段优化参数。



ladder network:

做个首尾呼应,贴几张ladder network的图,关于该话题,还是看论文吧:

[ladder network]-From neural PCA to deep unsupervised learning

[short verson]-semi-supervised-learning-with-ladder-networks

[long verson]-semi-supervised-learning-with-ladder-networks






参考:

http://djt.qq.com/article/view/1245

http://blog.csdn.net/yuxiangyunei/article/details/50096383

http://www.cnblogs.com/moondark/archive/2012/10/15/2724492.html






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值