机器学习(周志华)读书笔记-(二)神经网络(CNN)

神经网络

“神经元”

1、生物学上的神经网络是是目前发现的神经元细胞间相互组合链接组成一个互连的网络,通过对外界的刺激,神经元产生发送化学物质进而内部发生电位变化,下图是生物神经元结构。

        生物神经元的具体工作我们不需要了解,只需要知道互连神精元接受刺激产生物质通过比较阈值最终是兴奋还是抑制。在算法结构上,想要的就是他的这种网络结构模型。Hebb认为神经网络的学习过程最终是发生在神经元之间的突触部位,突触的联结强度随着突触前后神经元的活动而变化,变化的量与两个神经元的活性之和成正比。那么生物神经网络的特点有哪些昵?1) 每个神经元都是一个多输入单输出的信息处理单元; 2) 神经元输入分兴奋性输入和抑制性输入两种类型; 3)神经元具有空间整合特性和阈值特性; 4)神经元输入与输出间有固定的时滞,主要取决于突触延搁。

         2、从感知到神经网路:心理学家Warren Mcculloch和数理逻辑学家Walter Pitts提出并给出了人工神经网络的概念及人工神神经元的数学模型,从而开创了人类神经网络研究的时代。人类的好多发明都来源与仿生学,最初的人工神经网络模型可以说感知机模型,简单的模仿神经元构造,其逻辑结构如下图。与书中的M-P模型大致相似,差别在于这里的激活函数输出结果兴奋对于1,抑制对应于-1(书中为0),物理模型仿照与生物神经元的反应是通过阶跃函数来实现,理想的阶跃函数的结果只有1和0对应于兴奋与抑制。理想的函数到了数学理论模型上经常不选用,不具有连续和不光滑的性质(不具有这些性质个人认为是不利于参数的训练,容量空间也小,结果只能1和0,数据之间的关系难以表达)。

感知机的数学模型为。

。单层感知机最主要的用途就是线性分类,分类边界是y=0,类似与用一条直线划分0和类似与用一条直线划分0和1,其实就用一个超平面划分两个类别单层两个类别,他的目的就是计算出恰当的权值系数(W1,W2....Wn),如在上图中的理论模型中,算法的步骤是我们对训练样本输入,在初始化参数W矩阵,通过期望输出与实际输出的误差,调节权值W矩阵,最终结果使得W矩阵对于训练样本的误差最小,这样在相似的输入情况下,其输出结果也会相似根据一定判定准则就可以对新输入的测试数据分类。这里的权值更新准则为。

学习率也可以理解为每次调节量的大小,这个大小的设置没有确切的数学准则去设定为多少,太大可能越过最优值来回震荡,太小又要很多次调节才能靠近最优值。他的设定要通过实验去摸索,经验值(0-1)选择一个。感知机是整个神经网络的基础,神经元通过激励函数确定输出,神经元之间通过权值进行传递能量,权重的确定根据误差来进行调节,这个方法的前景是整个网络是收敛的。

多层感知机:

多层感知机的出现是为了解决单层感知机的局限性,单层感知机的局限性在于他对线性问题的划分是可以的,线性问题的逻辑或、与、非,但是用于解决非线性问题像异或这种非线性可分的问题,他无法用一条直线来划分解决。既然单层解决不了那就多层,所谓的多层就是在单层的基础上多了隐含层结构。目的就是通过凹凸区域划分样本,从线划分平面到区域划分。多因层结构模型如下图所示

多因层结构增加了隐层神经元增加了参数数目,增加了模型的表达能力,其划分数据的能力如下图所示。

随着隐层数目的增加,凸区域的形状也变得任意,就可以用来解决复杂的分类问题。虽然多层结构可以解决复杂的分类问题但是它也有自己的问题需要解决,那就是如何训练调节隐层权值,多隐层已不能再用单层结构的调节模式调节权值,这种瓶颈也是阻碍感知发展的一大难题,知道BP神经网络的出现才使得人工神经网络重新崛起。BP神经网络,非线性连续变换函数的多层感知器的反向传播算法,通过输出与实际误差间接调节隐层的权值,简单理解和但因层的调节思路类似,详细的BP调节及技巧请查看转载博客神经网络训练中的Tricks之高效BP(反向传播算法)-CSDN博客

BP算法是由正向传播和误差反向传播两部分组成。1)正向传播样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。2)反向传播将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

BP一般使用梯度下降的方式更新权值大小,基于梯度的方式容易出小梯度弥散,出现局部最优值而不是全局最优值。如下图一个局部最优与全局最优的事例,局部最优是在参数空间的某个点,其邻域点的误差函数值均不大于该点的值,全局最优点是参数空间所有点都不大于此点的值。全部最优一定是局部最优,反之不一定,我们想要找的点就是全局最优点。

寻找全局最优点的方法,其实是跳出局部最优点进一步靠近全局点,常用的几种方式。1)多组初始化参数训练选择误差最小的一组。2)模拟退火,每一步都以一定的概率接受比之前差的结果,有助于跳出局部极小,接受次优解的概率随着时间的推移而降低,保证算法的稳定性。3)使用梯度随机下降的方式。

在上一篇文中主要对书中的人工神经网络起源模型,以及多层感知的发展结合BP的算法调节。之所以没有在一篇文中写完读书笔记,是想对书中所说的深度学习的发展想多写一些。首先对书中出现的集中神经网络做概念性阐述,因为每一种网络如若仔细研究都要花大量的时间与精力才能理解与应用。

RBF网络:径向基函数(Radical Basis Function,RBF)网络,一种单隐层前馈神经网络,使用径向基函数作为隐层的激活函数。http://blog.csdn.net/zouxy09/article/category/1291222

        ART网络:(Adaptive Resonance Theory,自适应谐振理论)网络,竞争型学习的重要代表,竞争型学习是网络常用的无监督学习一种策略,网络的输出是神经元相互竞争,最后只有一个竞争获胜被激活其他为抑制,这种机制胜者通吃原则。ART网络有比较层、识别层、识别阈值和重置模块构成。比较层负责接收输入样本,并将其传递给识别层神经元。识别层每个神经元对应一个模式类,神经元书目可以在训练过程中动态增加以增加新的模式。

        SOM网络:自组织映射网络,一种竞争学习型的无监督神经网络,能将高维输入映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层的临近神经元。

级联相关网络:一般的神经网络是固定好拓扑结构,然后训练权重和阈值。级联相关神经网络是从一个小网络开始,自动训练和添加隐含单元,最终形成一个多层的结构,他的重点在于级联和相关,此网络的优点在于学习速度快且自己决定神经元个数和深度,并且训练集变化之后还能保持原有的结构(这个是缺点还是优点)。最后他不需要后向传播错误信号。

         Elman网络:一种典型的局部回归网络( global feed forward local recurrent)。Elman网络可以看作是一个具有局部记忆单元和局部反馈连接的递归神经网络。递归神经网络区别于前馈神经网络的是他允许网络中出现环形结构,从而可以使一些神经网络的输出反馈回来作为输入信号。

         Boltzmann机:随机神经网络。Deep Learning(深度学习)学习笔记整理系列之(六)_boltzman机-CSDN博客

 深度学习:神经网络之后的又一次突破。生物学上发现生物视觉是一个层级结构,是一个不断抽象迭代的过程。仿照这种结构构建多层次网络模型就形成了所谓的深度学习。深度学习的深度有一种理解是层次结构多的神经网络就是深度学习,但是多地多少层才算深度没有硬性规定,起码3层以上,他是相对于简单学习而言的,目前的多数分类、回归算法都属于简单学习或者浅层学习,包含1-2层隐层结构。典型的浅层结构有高斯混合模型(GMM)、隐马尔科夫模型(HMM)、条件随机域(CRF)、最大熵模型(MEM)、逻辑回归(LR)、支持向量机(SVM)和多层感知器(MLP)。(其中,最成功的分类模型是SVM,SVM使用一个浅层线性模式分离模型,当不同类别的数据向量在低维空间无法划分时,SVM会将它们通过核函数映射到高维空间中并寻找分类最优超平面)。浅层结构学习模型的相同点是采用一层简单结构将原始输入信号或特征转换到特定问题的特征空间中。浅层模型的局限性对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定的制约,比较难解决一些更加复杂的自然信号处理问题,例如人类语音和自然图像等而深度学习可通过学习一种深层非线性网络结构,表征输入数据,实现复杂函数逼近,并展现了强大的从少数样本集中学习数据集本质特征的能力。在深度学习提出之初,多层次结构的深度学习权值调节使用BP算法,但是层次结构越多给BP的调节带来困难,梯度弥散和误差值随层数的增加带来的反向调节微弱影响使得反向调节对深度学习在深度的发展上带来了瓶颈。通过多层结构可以发现层次越多就可以处理越复杂的问题,从逻辑上将,深度架构的使用学习到了数据内部复杂的数据联系或者数据最本质的特征,良好的特征对于数据表达起到关键的作用。后来针对BP的调节问题,Hinton提出逐层初始化逐层训练的方法。将上层训练好的结果作为下层训练过程的初始化参数。典型的是Hinton提出的深度置信网络DBN,是由一系列的受限玻尔兹曼机(RBM)组成,提出非贪心逐层训练算法,取得了不错的效果。

深度学习是一列在信息处理阶段利用非监督特征学习和模型分析分类功能的,具有多层分层体系结构的机器学习技术。深度学习的本质是对观察数据进行分层特征表示,实现将低级特征进一步抽象成高级特征表示。目前深度学习可以分为3大结构。1)生成型深度结构:生成型深度结构旨在模式分析过程中描述观察到的课件数据的高阶相关属性,或者描述课件数据和其相关类别的联合概率分布。不关心数据的标签经常使用非监督特征学习。他的一个重要的任务就是预训练。但是当训练数据有限时学习较低层的网络是困难的。因此一般采用先学习每一个较低层,然后在学习较高层的方式,通过贪婪地逐层训练,实现从底向上分层学习。属于生成型深度结构的深度学习模型有:自编码器、受限玻尔兹曼机、深度置信网络等。2)判别型深度结构:判别型深度结构的目的是通过描述可见数据的类别的后验概率分布为模式分类提供辨别力。属于判别型深度结构的深度学习模型主要有卷积神经网络和深凸网络等。(3)混合型深度结构:混合型深度结构的目的是对数据进行判别,是一种包含了生成和判别两部分结构的模型。现有的生成型结构大多数都是用于对数据的判别,可以结合判别型模型在预训练阶段对网络的所有权值进行优化。如通过深度置信网络进行预训练后的深度神经网络。

深度学习应用:从结构上是多了许多隐层结构的人工神经网络,按照容量越大表示能力越强的趋势,会想到有足够的层次足够的参数就可以做任何事,但事实上做到万能是有一定距离的,先不说你可以用逐层训练来讲解决参数训练的问题。深度学习需要结合特定领域的先验知识,需要和其他模型结合才能得到最好的结果。此外,类似于神经网络,深度学习的另一局限性是可解释性不强,像个“黑箱子”一样不知为什么能取得好的效果,以及不知如何有针对性地去具体改进,而这有可能成为产品升级过程中的阻碍。但是因为深度学习特有的结构,可以逐层提取特征从而学习到本质更具有代表性的特征,所以在图像、语音、自然语言处理等方面远超于其他手工特征。特别是在图像识别领域,判别式的卷积神经网络的准确度远远高于其他算法。

 神经网络-卷积神(CNN)

卷积神经网络:逐层训练是一种训练深度学习参数的一种方法,卷积网络是通过权值共享减少训练难度。关于卷积网络网上可以查到很多关于其算法的讲解以及公式推到。卷积神经网络以其在图像处理特有的优势以至于越来越多的人参与研究当中,这里以手写字母识别为主讲一下个人见解。

在图中可以看出仿照生物视觉,数据的处理到底层越来越抽象越来越觉有表达性。如字-词-句-语义。卷积神经网络最主要的两个部分就是卷积层与下采样层,现在关于算法的创新改进,大部分是对输入预处理,正则化,卷积核大小以及数目的调整,以及下采样的选择(最大下采样或者平均下采样,或者改进成权值竞争的思路)。以下先以字母是别流程作为分析然后在具体阐述。

如上图在字母1的识别流程图,网络结构是C-S-C-S-F-O。两层卷积两层下采样,最后到全链接的到输出结果向量。

        这里要先说一下基本的概念与计算模式:卷积其实就是用一个矩阵进行数据过滤,高大尚的说法是局部感受野权值共享,就是一个初始化后的参数矩阵按照卷积模式处理图像,这里卷积模式分为full,same,valid三种三种模式处理的结果得到的特征图大小不一样,三种模式理论上都是对图像矩阵逐个元素相乘求和。表达式为:

差别在于图像在过滤之初的边界选则不一样,下图是卷积过程的一种动态展示,也是vaild模式的卷积,如图图像矩阵是5X5的图像矩阵,卷积核是3X3的权值矩阵,在开始时权值参数按照预先约定随机初始化,这里的滑动步长为1,即每次移动一个矩阵元素的大小进行下一次卷积操作。valid模式会使图像的大小发生改变,得到的矩阵美其名约特征图,假设原图NXN,卷积核mxm,那么得到的特征图大小为N-m+1(步长为1)。卷积核初始化时参数不同,经过卷积操作得到的特征图也是不一样的,从理论上理解为了保持数据多样性,因为可以理解为不同特征图代表提取到不同的特征,其实也是增加参数增加模型容量和表达能力。

        valid模式的卷积图像大小减小从而在后面的运算也变小,但是这种模式的卷积要事先规划好卷积核大小,因为会遇到经过卷积后图像大小变为奇数而到至下采样运算出错,比如说上图的5X5矩阵,经过卷积得到3X3大小的特征图,下一步是下采样,而下采样的步长一般不是1,而是下采样核大小一致,比如这里用2X2大小的平均下采样进行操作,就会在第二次操作的时候图像出现一列数据不足的情况,处理这种情况一般有两种方法解决:1)填补数据,就是增加一行与1列数据,一般补0,2)删除一行一列(其他下采样大小与步长类似,只是补数据与删除数据量不同),但是会导致数据的丢失,所以一般采用,增加数据的处理方式。所以我们在修改比如手写字母是别代码时,增加特征图个数可以,但在修改层次结构比如,层次数目,卷积核大小的时候,要考虑到图像大小对核操作的影响。

与valid模式不同的是full模式会使图像变大,same不改变图像大小,此一般会用于反卷积还原训练。比如先卷积取特者然后反卷积的目标检测算法。

        

      如上两图,左图为full模式的卷积,原图2X2,卷积核3X3,卷积结果4X4(N-m+1),same模式图像大小不变,从图看出三种模式卷积不同在于初始时放置规则不一样,那么在full与same初始卷积时数据是要进行填充操作的。上面字母是别中从原图经过6个不同的5X5卷积核,图像变为24X24@6的特征图。经过2X2的下采样变为12X12@6的特征图。在进行下一次卷积的时候,这里是全链接的卷积模式,这里全链接是指,比如C2层的一个特征图是由上层6个特征图经过6个不同5X5卷积核与各自特征图共同得到的。也就是这里得到的所谓12个特征图不是简单的12种卷积核,而是6X12个不同的5x5大小的矩阵。也有人进行算法修改,不进行全链接以一种排列组合的方式尽量让上层所有特征参与运算,这样做是减少全链接的运算量,虽然全链接保证数据复杂与完整,但是运算量大,所谓的一种怕列组合的方式比如C2层的n1是有上层的特征图1、2、3与3个不同的卷积核得到,n2是由上层的2、3、4与三个卷积核操作得到,。。。n5由1、2、3、4得到。类推n12由上层所有图得到。

        卷积结果要外加偏置送入激活函数,卷积神经网络其实是神经网络的延伸,这里的偏置与激活函数都合经典人工神经网络一样的。偏置的作用是仿照生物神经脉冲超过一定阈值的才会兴奋,这里加个偏置比较送入激活函数是一样的。在数学理论上也是防止我们的激活函数一开始就趋于极端要么最大值要么最小值,起到一个调节作用。激活函数的选择要方便我们以后对权值的更新修改,即要求其非线性,单调可微,输出范围也要有限定。关于激活函数常用的有sigmoid、ReLU等,真正仿生的化激活函数应该就是两个值1(兴奋),0(抑制)。但是在数学理论上与数据复杂性表达上这样的阶跃函数不利于权值修改,也不利于我们的模型容量的扩充。每种激活函数都有其自己的优点与缺点,卷积网络牛逼之处在于卷积核权值共享,激活函数的选择只是你在修改权值的时候梯度求解或者在初始时容易出现一些极端情况才考率选择哪个激活函数更好。

        下采样:下采样是进一步对特征图进行二次处理,进行下采样的目的是为了尽量保持数据复杂与完整性的情况下减少处理数据,比如上面的字母识别,对特征图进行下采样操作,图像从24X24变成了12X12,数目没有变图像大小变为原来的一半。下采样其实也是一种卷积=过滤操作,下采样也有不同的模式,常用的最大下采样和平均下采样。最大下采样选取对应点中最大值作为下一层特征图的中一个值,比如2X2的下采样核,在进行下采样时,对应特征特的四个矩阵值那个值最大选哪个作为结果。平均下采样就是取平均值,比如2X2的核,那么四个参数每个都是0.25,过滤时和特征值对应位置相乘相加作为结果。

        光栅化:如上图的字母是别流程,经过卷积操作的后的图像可视化效果,卷积其实和其他手工特征进行模糊操作很像,其实是进行方向性特征提取。卷积的知识可惨看博客,图像卷积与滤波的一些知识点_卷积滤波-CSDN博客。在经过卷积下采样之后将最后的结果拉成一个n维的列向量就是所谓光栅化,这里其实是回归了经典神经网络,比如这里的192维向量作为输入降维到10维(10个类别)的列向量,这里中间没有隐层,有人修改这里的结构比如从120降到84再到10,增加了隐层增加的参数个数,增加了容量和泛化能力,也有可能过拟合。

        分类:这里的分类是和标签进行对比,所谓的标签就是我们人工对字幕设定的一个标定其身份的特征向量,比如这里的激活函数sigmod,输出结果10维中的每个值都是0-1,我们的标签比如字母0的标签是0,1,0,0,0,0,0,0,0,0。其他以此类推,在没有权值调节的时候降维输出的结果每一维值都很接近,经过反向误差调节最后的降维输出和标签就很接近了比如经过多次迭代字母1的输出向第二维接近1,其他无限接近与0,这样就能根据比对标签,我们在输出端判定他是字母1。

        参数调节:反向参数调节根据链式法则误差传递调节每一层权值参数,关键是卷积核的调节具体分析请参考Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现_卷积神经网络 公式-CSDN博客,关于参数调节其实也算核心,只有当我们调节网络结构,比如卷积时选择的数量,或者输入图像的数量时我们在原有代码基础上修改相关的部分,即误差产生传递关系要清楚。

        应用:卷积网络的应用主要在图像识别和语音处理上,所以创新点往往是结构的微调。现有的也已经有结构平台供试用,层数达到十几层分类上千种。现在也有将卷积网络用于视频上,视频是图像的有序序列集,视频的运动目标检测分类等其实就是融入视频图像中目标的时间与空间信息。容入这些信息思路有:1)在输入层,将图像序列合成再用卷积网络提取分类,这种思想比如先检测目标二值化,将运动过程合在一个图像里,这样就有一个运动剪影过程,如运动历史图像和运动能量图像等。这里的卷积网络就相当于对当个图像模式识别。2)在输入对运动过程处理,比如3D卷积神经网络对运动动作分类。那么具体输入时融入的方法目前有四种,如下所示

在上图中1)单帧融合:单帧融合就是把一帧帧的图像分别输入到CNN中去,和普通的处理图像的CNN没有区别。这种思路没有考虑时间与空间的连续信息,只是一个状态点,而且训练量非常大。2)晚期融合:把相聚L的两帧图像分别输入到两个CNN中去,然后在最后一层连接到同一个full connect的softmax层上去。这里考虑了动作的一个状态的变化,但是,L的选择很难确定多少为好。3)早期融合把连续L帧的图像叠在一起输入到一个CNN中去,他是在晚期融合的基础上的改进,充分考虑了一个动作变化序列。4)慢融合:和上边的CNN的区别在于一个卷积核的输出不是一个二维的图像,而是一个三维的图像。卷积通过多帧组成一个立方体运用3D卷积核处理视频数据。也有卷积网络结合其他算法,比如卷积提起特征SVM分类,或者在卷积的某一层结果出外加编码重构,重构特征比单纯的提出特征要好,但是者参数回调就会相应做出修改。算法的融合一般比单个算法好,现在好多发表的论文大部分是算法结合,或者输入数据预处理,内部微调的等。

卷积网络的训练过程是参数寻优的过程,里面也有许多的技巧,比如参数初始化是预置范围,训练数据的打乱次序等,一个基本的问题训练数据要保持一致,即每类训练样本的数量要一样。这样才能使训练不偏向于某一类样本。另外就是样本标签的设置,上面也提到,要考虑你的激活函数,你不能标签设置为2,0,0,0,0,0之类。因为激活函数的结果最大才是1,如果这样设置会使得只测试此样本正确,其他识别错误。学习率的设定不再多说,就是一个影响微调量大小的参数一般0-1之间设定。过大过小都会带来一定影响。迭代次数的设定需要实验验证,这和你的数据量有关,数据量很大的情况下,迭代次数一般不是很大就会趋于收敛。在未知的情况下可以根据损失函数曲线看迭代次数对调节的影响,在达到一定次数后,在增加次数效果不一定会增强,因为达到一定程度后,会在极值点震荡。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值