近这两年里deep learning技术在图像识别和跟踪等方面有很大的突破,是一大研究热点,里面涉及的数学理论和应用技术很值得深入研究,这系列博客总结了深度学习的博客,原理等资料,供大家学习讨论。
1感知机
感知机是最早的监督式训练算法,是神经网络构建的基础。
新的数据标记、分类实现:通过数据平面上的一条线来将不同标记的数据点分开,并用这条线作为“分类器”来区分新数据点的标记。
缺点:只能学习 线性可分函数 。如 XOR函数,不能被线性分类器分类。 学习
多层感知机诞生:多层感知机——前馈神经网络(组合一群这样的感知机来创建出一个更强大的学习机器)
2前馈神经网络
神经网络实际上就是将大量之前讲到的感知机进行组合,用不同的方法进行连接并作用在不同的激活函数上。
前向神经网络具有以下属性:
· 一个输入层,一个输出层,一个或多个隐含层。上图所示的神经网络中有一个三神经元的输入层、一个四神经元的隐含层、一个二神经元的输出层。
· 每一个神经元都是一个上文提到的感知机。
· 输入层的神经元作为隐含层的输入,同时隐含层的神经元也是输出层神经元的输入。
· 每条建立在神经元之间的连接都有一个权重 w (与感知机中提到的权重类似)。
· 在 t 层的每个神经元通常与前一层( t - 1层 )中的每个神经元都有连接(但你可以通过将这条连接的权重设为0来断开这条连接)。
· 为了处理输入数据,将输入向量赋到输入层中。在上例中,这个网络可以计算一个3维输入向量(由于只有3个输入层神经元)。假如输入向量是 [7, 1, 2],你将第一个输入神经元输入7,中间的输入1,第三个输入2。这些值将被传播到隐含层,通过加权传递函数传给每一个隐含层神经元(这就是前向传播),隐含层神经元再计算输出(激活函数)。
· 输出层和隐含层一样进行计算,输出层的计算结果就是整个神经网络的输出。
3超线性
如果每一个感知机只使用一个线性激活函数或多线性函数,其组合还是线性函数,那前馈神经网络和一个感知机强差不多,无论网络有多少层。
所以大多数神经网络都使用非线性激活函数,如对数函数、双曲正切函数、阶跃函数、整流函数等。
4训练
大多数常见的应用于多层感知机的监督式训练的算法都是反向传播算法。基本的流程如下:
1、将训练样本通过神经网络进行前向传播计算。
2、计算输出误差,常用均方差:
其中t是目标值,y是实际的神经网络计算输出。
注:其它的误差计算方法也可以,但MSE(均方差)通常是一种较好的选择。
3、网络误差通过 随机梯度下降 的方法来最小化。
网络误差依赖于每一个网络权重,误差函数非常、非常复杂
反向传播算法通过利用输出误差来修正两个神经元之间权重,利用权重 i 来修正梯度的方向。通过一种巧妙的方法反向传回网络,让我们有效的在训练过程中修正权重并(期望) 达到一个最小值。
5大规模网络中的难题
神经网络中可以有多个隐含层:这样,在更高的隐含层里可以对其之前的隐含层构建新的抽象。增加隐含层的层数通常会导致两个问题:
1、梯度消失:隐含层越多,反向传播传递给较低层的信息会越来越少;由于信息向前反馈,不同层次间的梯度开始消失,对网络中权重的影响也会变小。
2、过度拟合:过度拟合指的是对训练数据有过于好的识别效果,这时导至模型非常复杂。这样的结果会导致对训练数据有非常好的识别效果,而对真实样本的识别效果非常差。
6深度学习
特征探测器(feature detector)——自编码器、RBM
1)自编码器
自编码器是一个典型的前馈神经网络,它的目标就是学习一种对数据集的压缩且分布式的表示方法(编码思想)
神经网络的目的是要训练去“重新建立”输入数据,好像输入和目标输出数据是一样的。换句话说:你正在让神经网络的输出与输入是同一样东西,只是经过了压缩。神经网络学习到的实际上并不是一个训练数据到标记的“映射”,而是去学习数据本身的内在结构和特征(也正是因为这,隐含层也被称作特征探测器(feature detector))
2) RBM
RBM由隐含层、可见层、偏置层组成。和前馈神经网络不同,可见层和隐含层之间的连接是无方向性(值可以从可见层->隐含层或隐含层->可见层任意传输)且全连接的(每一个当前层的神经元与下一层的每个神经元都有连接——如果允许任意层的任意神经元连接到任意层去,我们就得到了一个波尔兹曼机(非受限的))
实现:这些结构可以通过栈式叠加来实现深度网络,这些网络可以通过贪心法的思想训练,每次训练一层,以克服之前提到在反向传播中梯度消失及过度拟合的问题。
栈式自编码器——由多个栈式 结合的自编码器组成
深度信度网络——将波尔兹曼机进行栈式叠加来构建深度信度网络(DBN)
7卷积网络(类特殊的对图像识别非常有效的前馈网络)
先定义一个图像滤波器(或称为一个赋有相关权重的方阵)。一个滤波器可以应用到整个图片上,通常可以应用多个滤波器。
卷积网络的属性
· 卷积层 :对输入数据应用若干滤波器。对图像应用一个滤波器(如图像的第一卷积层使用4个6x6滤波器)之后的得到的结果被称为特征图谱(feature map, FM),特征图谱的数目和滤波器的数目相等。如果前驱层也是一个卷积层,那么滤波器应用在FM上,相当于输入一个FM,输出另外一个FM。从直觉上来讲,如果将一个权重分布到整个图像上后,那么这个特征就和位置无关了,同时多个滤波器可以分别探测出不同的特征。
· 下采样层 :缩减输入数据的规模,常用方法有最大值合并、平均值合并以及随机合并。例如输入一个32x32的图像,并且通过一个2x2的下采样,那么可以得到一个16x16的输出图像,这意味着原图像上的四个像素合并成为输出图像中的一个像素。
· 最后一个下采样层(或卷积层):连接到一个或多个全连层,全连层的输出就是最终的输出。
· 训练:通过改进的反向传播实现,将下采样层作为考虑的因素并基于所有值来更新卷积滤波器的权重。
参考:http://www.cnblogs.com/xiaowanyer/p/3701944.html
未完,持续更新中,欢迎补充!更多关注:http://blog.csdn.net/tiandijun,欢迎交流!