❶ 人工神经网络的发展趋势
人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。将信息几何应用于人工神经网络的研究,为人工神经网络的理论研究开辟了新的途径。神经计算机的研究发展很快,已有产品进入市场。光电结合的神经计算机为人工神经网络的发展提供了良好条件。
神经网络在很多领域已得到了很好的应用,但其需要研究的方面还很多。其中,具有分布存储、并行处理、自学习、自组织以及非线性映射等优点的神经网络与其他技术的结合以及由此而来的混合方法和混合系统,已经成为一大研究热点。由于其他方法也有它们各自的优点,所以将神经网络与其他方法相结合,取长补短,继而可以获得更好的应用效果。目前这方面工作有神经网络与模糊逻辑、专家系统、遗传算法、小波分析、混沌、粗集理论、分形理论、证据理论和灰色系统等的融合。
下面主要就神经网络与小波分析、混沌、粗集理论、分形理论的融合进行分析。
与小波分析的结合
1981年,法国地质学家Morlet在寻求地质数据时,通过对Fourier变换与加窗Fourier变换的异同、特点及函数构造进行创造性的研究,首次提出了小波分析的概念,建立了以他的名字命名的Morlet小波。1986年以来由于YMeyer、S.Mallat及IDaubechies等的奠基工作,小波分析迅速发展成为一门新兴学科。Meyer所着的小波与算子,Daubechies所着的小波十讲是小波研究领域最权威的着作。
小波变换是对Fourier分析方法的突破。它不但在时域和频域同时具有良好的局部化性质,而且对低频信号在频域和对高频信号在时域里都有很好的分辨率,从而可以聚集到对象的任意细节。小波分析相当于一个数学显微镜,具有放大、缩小和平移功能,通过检查不同放大倍数下的变化来研究信号的动态特性。因此,小波分析已成为地球物理、信号处理、图像处理、理论物理等诸多领域的强有力工具。
小波神经网络将小波变换良好的时频局域化特性和神经网络的自学习功能相结合,因而具有较强的逼近能力和容错能力。在结合方法上,可以将小波函数作为基函数构造神经网络形成小波网络,或者小波变换作为前馈神经网络的输入前置处理工具,即以小波变换的多分辨率特性对过程状态信号进行处理,实现信噪分离,并提取出对加工误差影响最大的状态特性,作为神经网络的输入。
小波神经网络在电机故障诊断、高压电网故障信号处理与保护研究、轴承等机械故障诊断以及许多方面都有应用,将小波神经网络用于感应伺服电机的智能控制,使该系统具有良好的跟踪控制性能,以及好的鲁棒性,利用小波包神经网络进行心血管疾病的智能诊断,小波层进行时频域的自适应特征提取,前向神经网络用来进行分类,正确分类率达到94%。
小波神经网络虽然应用于很多方面,但仍存在一些不足。从提取精度和小波变换实时性的要求出发,有必要根据实际情况构造一些适应应用需求的特殊小波基,以便在应用中取得更好的效果。另外,在应用中的实时性要求,也需要结合DSP的发展,开发专门的处理芯片,从而满足这方面的要求。
混沌神经网络
混沌第一个定义是上世纪70年代才被Li-Yorke第一次提出的。由于它具有广泛的应用价值,自它出现以来就受到各方面的普遍关注。混沌是一种确定的系统中出现的无规则的运动,混沌是存在于非线性系统中的一种较为普遍的现象,混沌运动具有遍历性、随机性等特点,能在一定的范围内按其自身规律不重复地遍历所有状态。混沌理论所决定的是非线性动力学混沌,目的是揭示貌似随机的现象背后可能隐藏的简单规律,以求发现一大类复杂问题普遍遵循的共同规律。
1990年Kaihara、T.Takabe和M.Toyoda等人根据生物神经元的混沌特性首次提出混沌神经网络模型,将混沌学引入神经网络中,使得人工神经网络具有混沌行为,更加接近实际的人脑神经网络,因而混沌神经网络被认为是可实现其真实世界计算的智能信息处理系统之一,成为神经网络的主要研究方向之一。
与常规的离散型Hopfield神经网络相比较,混沌神经网络具有更丰富的非线性动力学特性,主要表现如下:在神经网络中引入混沌动力学行为;混沌神经网络的同步特性;混沌神经网络的吸引子。
当神经网络实际应用中,网络输入发生较大变异时,应用网络的固有容错能力往往感到不足,经常会发生失忆现象。混沌神经网络动态记忆属于确定性动力学运动,记忆发生在混沌吸引子的轨迹上,通过不断地运动(回忆过程)一一联想到记忆模式,特别对于那些状态空间分布的较接近或者发生部分重叠的记忆模式,混沌神经网络总能通过动态联想记忆加以重现和辨识,而不发生混淆,这是混沌神经网络所特有的性能,它将大大改善Hopfield神经网络的记忆能力。混沌吸引子的吸引域存在,形成了混沌神经网络固有容错功能。这将对复杂的模式识别、图像处理等工程应用发挥重要作用。
混沌神经网络受到关注的另一个原因是混沌存在于生物体真实神经元及神经网络中,并且起到一定的作用,动物学的电生理实验已证实了这一点。
混沌神经网络由于其复杂的动力学特性,在动态联想记忆、系统优化、信息处理、人工智能等领域受到人们极大的关注。针对混沌神经网络具有联想记忆功能,但其搜索过程不稳定,提出了一种控制方法可以对混沌神经网络中的混沌现象进行控制。研究了混沌神经网络在组合优化问题中的应用。
为了更好的应用混沌神经网络的动力学特性,并对其存在的混沌现象进行有效的控制,仍需要对混沌神经网络的结构进行进一步的改进和调整,以及混沌神经网络算法的进一步研究。
基于粗集理论
粗糙集(Rough Sets)理论是1982年由波兰华沙理工大学教授Z.Pawlak首先提出,它是一个分析数据的数学理论,研究不完整数据、不精确知识的表达、学习、归纳等方法。粗糙集理论是一种新的处理模糊和不确定性知识的数学工具,其主要思想就是在保持分类能力不变的前提下,通过知识约简,导出问题的决策或分类规则。目前,粗糙集理论已被成功应用于机器学习、决策分析、过程控制、模式识别与数据挖掘等领域。
粗集和神经网络的共同点是都能在自然环境下很好的工作,但是,粗集理论方法模拟人类的抽象逻辑思维,而神经网络方法模拟形象直觉思维,因而二者又具有不同特点。粗集理论方法以各种更接近人们对事物的描述方式的定性、定量或者混合性信息为输入,输入空间与输出空间的映射关系是通过简单的决策表简化得到的,它考虑知识表达中不同属性的重要性确定哪些知识是冗余的,哪些知识是有用的,神经网络则是利用非线性映射的思想和并行处理的方法,用神经网络本身结构表达输入与输出关联知识的隐函数编码。
在粗集理论方法和神经网络方法处理信息中,两者存在很大的两个区别:其一是神经网络处理信息一般不能将输入信息空间维数简化,当输入信息空间维数较大时,网络不仅结构复杂,而且训练时间也很长;而粗集方法却能通过发现数据间的关系,不仅可以去掉冗余输入信息,而且可以简化输入信息的表达空间维数。其二是粗集方法在实际问题的处理中对噪声较敏感,因而用无噪声的训练样本学习推理的结果在有噪声的环境中应用效果不佳。而神经网络方法有较好的抑制噪声干扰的能力。
因此将两者结合起来,用粗集方法先对信息进行预处理,即把粗集网络作为前置系统,再根据粗集方法预处理后的信息结构,构成神经网络信息处理系统。通过二者的结合,不但可减少信息表达的属性数量,减小神经网络构成系统的复杂性,而且具有较强的容错及抗干扰能力,为处理不确定、不完整信息提供了一条强有力的途径。
目前粗集与神经网络的结合已应用于语音识别、专家系统、数据挖掘、故障诊断等领域,将神经网络和粗集用于声源位置的自动识别,将神经网络和粗集用于专家系统的知识获取中,取得比传统专家系统更好的效果,其中粗集进行不确定和不精确数据的处理,神经网络进行分类工作。
虽然粗集与神经网络的结合已应用于许多领域的研究,为使这一方法发挥更大的作用还需考虑如下问题:模拟人类抽象逻辑思维的粗集理论方法和模拟形象直觉思维的神经网络方法更加有效的结合;二者集成的软件和硬件平台的开发,提高其实用性。
与分形理论的结合
自从美国哈佛大学数学系教授Benoit B. Mandelbrot于20世纪70年代中期引入分形这一概念,分形几何学(Fractal geometry)已经发展成为科学的方法论--分形理论,且被誉为开创了20世纪数学重要阶段。现已被广泛应用于自然科学和社会科学的几乎所有领域,成为现今国际上许多学科的前沿研究课题之一。
由于在许多学科中的迅速发展,分形已成为一门描述自然界中许多不规则事物的规律性的学科。它已被广泛应用在生物学、地球地理学、天文学、计算机图形学等各个领域。
用分形理论来解释自然界中那些不规则、不稳定和具有高度复杂结构的现象,可以收到显着的效果,而将神经网络与分形理论相结合,充分利用神经网络非线性映射、计算能力、自适应等优点,可以取得更好的效果。
分形神经网络的应用领域有图像识别、图像编码、图像压缩,以及机械设备系统的故障诊断等。分形图像压缩/解压缩方法有着高压缩率和低遗失率的优点,但运算能力不强,由于神经网络具有并行运算的特点,将神经网络用于分形图像压缩/解压缩中,提高了原有方法的运算能力。将神经网络与分形相结合用于果实形状的识别,首先利用分形得到几种水果轮廓数据的不规则性,然后利用3层神经网络对这些数据进行辨识,继而对其不规则性进行评价。
分形神经网络已取得了许多应用,但仍有些问题值得进一步研究:分形维数的物理意义;分形的计算机仿真和实际应用研究。随着研究的不断深入,分形神经网络必将得到不断的完善,并取得更好的应用效果。?
❷ 卷积神经网络(CNN)基础
在七月初七情人节,牛郎织女相见的一天,我终于学习了CNN(来自CS231n),感觉感触良多,所以赶快记下来,别忘了,最后祝大家情人节快乐5555555.正题开始!
CNN一共有卷积层(CONV)、ReLU层(ReLU)、池化层(Pooling)、全连接层(FC(Full Connection))下面是各个层的详细解释。
卷积,尤其是图像的卷积,需要一个滤波器,用滤波器对整个图像进行遍历,我们假设有一个32*32*3的原始图像A,滤波器的尺寸为5*5*3,用w表示,滤波器中的数据就是CNN的参数的一部分,那么在使用滤波器w对A进行滤波的话,可以用下面的式子表示:
其中x为原始图像的5*5*3的一部分,b是偏置项置为1。在对A进行滤波之后,产生的是一个28*28*1的数据。那么假设我们存在6个滤波器,这六个滤波器之间彼此是独立的,也就是他们内部的数据是不同的且没有相关性的。可以理解为一个滤波器查找整幅图像的垂直边缘,一个查找水平边缘,一个查找红色,一个查找黑色这样。那么我就可以产生6个28*28*1的数据,将它们组合到一起就可以产生28*28*6的数据,这就是卷积层主要做的工作。
CNN可以看作一系列的卷积层和ReLU层对原始数据结构进行处理的神经网络,处理的过程可以用下面这幅图表示
特别要注意的是滤波器的深度一定要与上一层传来的数据的深度相同,就像上图的第二个卷积层在处理传来的28*28*6的数据时要使用5*5*6的滤波器.
滤波器在图像上不断移动对图像滤波,自然存在步长的问题,在上面我们举的例子都是步长为1的情况,如果步长为3的话,32*32*3的图像经过5*5*3的滤波器卷积得到的大小是(32-5)/3+1=10, 注:步长不能为2因为(32-5)/2+1=14.5是小数。
所以当图像大小是N,滤波器尺寸为F时,步长S,那么卷积后大小为(N-F)/S+1
我们从上面的图中可以看到图像的长和宽在逐渐的减小,在经过超过5层之后极可能只剩下1*1的空间尺度,这样是十分不好的,而且也不利于我们接下来的计算,所以我们想让卷积层处理完之后图像在空间尺度上大小不变,所以我们引入了pad the border的操作。pad其实就是在图像周围补0,扩大图像的尺寸,使得卷积后图像大小不变。在CNN中,主要存在4个超参数,滤波器个数K,滤波器大小F,pad大小P和步长S,其中P是整数,当P=1时,对原始数据的操作如图所示:
那么在pad操作后卷积后的图像大小为:(N-F+2*P)/S+1
而要想让卷积层处理后图像空间尺度不变,P的值可以设为P=(F-1)/2
卷积层输入W 1 *H 1 *D 1 大小的数据,输出W 2 *H 2 *D 2 的数据,此时的卷积层共有4个超参数:
K:滤波器个数
P:pad属性值
S:滤波器每次移动的步长
F:滤波器尺寸
此时输出的大小可以用输入和超参计算得到:
W 2 =(W 1 -F+2P)/S+1
H 2 =(H 1 -F+2P)/S+1
D 2 =D 1
1*1的滤波器也是有意义的,它在深度方向做卷积,例如1*1*64的滤波器对56*56*64的数据卷积得到56*56的数据
F通常是奇数,这样可以综合考虑上下左右四个方向的数据。
卷积层从神经元的角度看待可以有两个性质: 参数共享和局域连接 。对待一个滤波器,例如5*5*3的一个滤波器,对32*32*3的数据卷积得到28*28的数据,可以看作存在28*28个神经元,每个对原图像5*5*3的区域进行计算,这28*28个神经元由于使用同一个滤波器,所以参数相同,我们称这一特性为 参数共享 。
针对不同的滤波器,我们可以看到他们会看到同一区域的图像,相当于在深度方向存在多个神经元,他们看着相同区域叫做 局域连接
参数共享减少了参数的数量,防止了过拟合
局域连接为查找不同特征更丰富的表现图像提供了可能。
卷积就像是对原图像的另一种表达。
激活函数,对于每一个维度经过ReLU函数输出即可。不改变数据的空间尺度。
通过pad操作,输出图像在控件上并没有变化,但是深度发生了变化,越来越庞大的数据给计算带来了困难,也出现了冗余的特征,所以需要进行池化操作,池化不改变深度,只改变长宽,主要有最大值和均值两种方法,一般的池化滤波器大小F为2步长为2,对于最大值池化可以用下面的图像清晰的表示:
卷积层输入W 1 *H 1 *D 1 大小的数据,输出W 2 *H 2 *D 2 的数据,此时的卷积层共有2个超参数:
S:滤波器每次移动的步长
F:滤波器尺寸
此时输出的大小可以用输入和超参计算得到:
W 2 =(W 1 -F)/S+1
H 2 =(H 1 -F)/S+1
D 2 =D 1
将最后一层(CONV、ReLU或Pool)处理后的数据输入全连接层,对于W 2 *H 2 *D 2 数据,我们将其展成1*1*W 2 *H 2 *D 2 大小的数据,输入层共有W 2 *H 2 *D 2 个神经元,最后根据问题确定输出层的规模,输出层可以用softmax表示。也就是说,全连接层就是一个常见的BP神经网络。而这个网络也是参数最多的部分,是接下来想要去掉的部分。完整的神经网络可以用下面的图表示:
[(CONV-ReLU)*N-POOL?]*M-(FC-RELU)*K,SoftMax
1.更小的滤波器与更深的网络
2.只有CONV层而去掉池化与全链接
最早的CNN,用于识别邮编,结构为:
CONV-POOL-CONV-POOL-CONV-FC
滤波器大小5*5,步长为1,池化层2*2,步长为2
2012年由于GPU技术所限,原始AlexNet为两个GPU分开计算,这里介绍合起来的结构。
输入图像为227*227*3
1.首次使用ReLU
2.使用Norm layers,现在已经抛弃,因为效果不大
3.数据经过预处理(例如大小变化,颜色变化等)
4.失活比率0.5
5.batch size 128
6.SGD Momentum 参数0.9(SGD和Momentum见我的其他文章)
7.学习速率 0.01,准确率不在提升时减少10倍,1-2次后达到收敛
8.L2权重减少0.0005
9.错误率15.4%
改进自AlexNet,主要改变:
1.CONV1的滤波器从11*11步长S=4改为7*7步长为2.
2.CONV3,4,5滤波器数量有384,384,256改为512,1024,512(滤波器数量为2的n次幂有利于计算机计算可以提高效率)
错误率:14.8%后继续改进至11.2%
当前最好的最易用的CNN网络,所有卷积层滤波器的大小均为3*3,步长为1,pad=1,池化层为2*2的最大值池化,S=2。
主要参数来自全连接层,这也是想要去掉FC的原因。
具有高度的统一性和线性的组合,易于理解,十分方便有VGG-16,VGG-19等多种结构。
错误率7.3%
完全移除FC层,参数只有500万,使用Inception模块(不太理解,有时间继续看)
准确率6.67%
准确率3.6%
拥有极深的网络结构,且越深准确率越高。是传统CNN不具备的特点,传统CNN并非越深越准确。需要训练时间较长但是快于VGG
1.每个卷积层使用Batch Normalization
2.Xavier/2初始化
3.SGD+Momentum(0.9)
4.Learning rate:0.1,准确率不变减小10倍(因为Batch Normalization所以比AlexNet大)
5.mini-batch size 256
6.Weight decay of 0.00001
7.不适用失活(因为Batch Normalization)
具体的梯度过程学完ResNet再说吧。
❸ 神经网络的准确率是怎么计算的
其实神经网络的准确率的标准是自己定义的。
我把你的例子赋予某种意义讲解:
1,期望输出[1 0 0 1],每个元素代表一个属性是否存在。像着4个元素分别表示:是否肺炎,是否肝炎,是否肾炎,是否胆炎,1表示是,0表示不是。
2,你的神经网络输出必定不可能全部都是输出只有0,1的输出。绝大部分是像[ 0.9968 0.0000 0.0001 0.9970]这样的输出,所以只要输出中的某个元素大于一定的值,例如0.7,我们就认为这个元素是1,即是有某种炎。否则为0,所以你的[ 0.9968 0.0000 0.0001 0.9970]可以看成是[1,0,0,1],。
3,所以一般神经网络的输出要按一定的标准定义成另一种输出(像上面说的),看调整后的输出和期望输出是否一致,一致的话算正确,不一致算错误。
4,用总量为n的检验样本对网络进行评价,输出调整后的输出,统计错误的个数,记为m。
所以检验正确率可以定义为n/m。
❹ 神经网络:卷积神经网络(CNN)
神经网络 最早是由心理学家和神经学家提出的,旨在寻求开发和测试神经的计算模拟。
粗略地说, 神经网络 是一组连接的 输入/输出单元 ,其中每个连接都与一个 权 相关联。在学习阶段,通过调整权值,使得神经网络的预测准确性逐步提高。由于单元之间的连接,神经网络学习又称 连接者学习。
神经网络是以模拟人脑神经元的数学模型为基础而建立的,它由一系列神经元组成,单元之间彼此连接。从信息处理角度看,神经元可以看作是一个多输入单输出的信息处理单元,根据神经元的特性和功能,可以把神经元抽象成一个简单的数学模型。
神经网络有三个要素: 拓扑结构、连接方式、学习规则
神经网络的拓扑结构 :神经网络的单元通常按照层次排列,根据网络的层次数,可以将神经网络分为单层神经网络、两层神经网络、三层神经网络等。结构简单的神经网络,在学习时收敛的速度快,但准确度低。
神经网络的层数和每层的单元数由问题的复杂程度而定。问题越复杂,神经网络的层数就越多。例如,两层神经网络常用来解决线性问题,而多层网络就可以解决多元非线性问题
神经网络的连接 :包括层次之间的连接和每一层内部的连接,连接的强度用权来表示。
根据层次之间的连接方式,分为:
1)前馈式网络:连接是单向的,上层单元的输出是下层单元的输入,如反向传播网络,Kohonen网络
2)反馈式网络:除了单项的连接外,还把最后一层单元的输出作为第一层单元的输入,如Hopfield网络
根据连接的范围,分为:
1)全连接神经网络:每个单元和相邻层上的所有单元相连
2)局部连接网络:每个单元只和相邻层上的部分单元相连
神经网络的学习
根据学习方法分:
感知器:有监督的学习方法,训练样本的类别是已知的,并在学习的过程中指导模型的训练
认知器:无监督的学习方法,训练样本类别未知,各单元通过竞争学习。
根据学习时间分:
离线网络:学习过程和使用过程是独立的
在线网络:学习过程和使用过程是同时进行的
根据学习规则分:
相关学习网络:根据连接间的激活水平改变权系数
纠错学习网络:根据输出单元的外部反馈改变权系数
自组织学习网络:对输入进行自适应地学习
摘自《数学之美》对人工神经网络的通俗理解:
神经网络种类很多,常用的有如下四种:
1)Hopfield网络,典型的反馈网络,结构单层,有相同的单元组成
2)反向传播网络,前馈网络,结构多层,采用最小均方差的纠错学习规则,常用于语言识别和分类等问题
3)Kohonen网络:典型的自组织网络,由输入层和输出层构成,全连接
4)ART网络:自组织网络
深度神经网络:
Convolutional Neural Networks(CNN)卷积神经网络
Recurrent neural Network(RNN)循环神经网络
Deep Belief Networks(DBN)深度信念网络
深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。
深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。
Machine Learning vs. Deep Learning
神经网络(主要是感知器)经常用于 分类
神经网络的分类知识体现在网络连接上,被隐式地存储在连接的权值中。
神经网络的学习就是通过迭代算法,对权值逐步修改的优化过程,学习的目标就是通过改变权值使训练集的样本都能被正确分类。
神经网络特别适用于下列情况的分类问题:
1) 数据量比较小,缺少足够的样本建立模型
2) 数据的结构难以用传统的统计方法来描述
3) 分类模型难以表示为传统的统计模型
缺点:
1) 需要很长的训练时间,因而对于有足够长训练时间的应用更合适。
2) 需要大量的参数,这些通常主要靠经验确定,如网络拓扑或“结构”。
3) 可解释性差 。该特点使得神经网络在数据挖掘的初期并不看好。
优点:
1) 分类的准确度高
2)并行分布处理能力强
3)分布存储及学习能力高
4)对噪音数据有很强的鲁棒性和容错能力
最流行的基于神经网络的分类算法是80年代提出的 后向传播算法 。后向传播算法在多路前馈神经网络上学习。
定义网络拓扑
在开始训练之前,用户必须说明输入层的单元数、隐藏层数(如果多于一层)、每一隐藏层的单元数和输出层的单元数,以确定网络拓扑。
对训练样本中每个属性的值进行规格化将有助于加快学习过程。通常,对输入值规格化,使得它们落入0.0和1.0之间。
离散值属性可以重新编码,使得每个域值一个输入单元。例如,如果属性A的定义域为(a0,a1,a2),则可以分配三个输入单元表示A。即,我们可以用I0 ,I1 ,I2作为输入单元。每个单元初始化为0。如果A = a0,则I0置为1;如果A = a1,I1置1;如此下去。
一个输出单元可以用来表示两个类(值1代表一个类,而值0代表另一个)。如果多于两个类,则每个类使用一个输出单元。
隐藏层单元数设多少个“最好” ,没有明确的规则。
网络设计是一个实验过程,并可能影响准确性。权的初值也可能影响准确性。如果某个经过训练的网络的准确率太低,则通常需要采用不同的网络拓扑或使用不同的初始权值,重复进行训练。
后向传播算法学习过程:
迭代地处理一组训练样本,将每个样本的网络预测与实际的类标号比较。
每次迭代后,修改权值,使得网络预测和实际类之间的均方差最小。
这种修改“后向”进行。即,由输出层,经由每个隐藏层,到第一个隐藏层(因此称作后向传播)。尽管不能保证,一般地,权将最终收敛,学习过程停止。
算法终止条件:训练集中被正确分类的样本达到一定的比例,或者权系数趋近稳定。
后向传播算法分为如下几步:
1) 初始化权
网络的权通常被初始化为很小的随机数(例如,范围从-1.0到1.0,或从-0.5到0.5)。
每个单元都设有一个偏置(bias),偏置也被初始化为小随机数。
2) 向前传播输入
对于每一个样本X,重复下面两步:
向前传播输入,向后传播误差
计算各层每个单元的输入和输出。输入层:输出=输入=样本X的属性;即,对于单元j,Oj = Ij = Xj。隐藏层和输出层:输入=前一层的输出的线性组合,即,对于单元j, Ij =wij Oi + θj,输出=
3) 向后传播误差
计算各层每个单元的误差。
输出层单元j,误差:
Oj是单元j的实际输出,而Tj是j的真正输出。
隐藏层单元j,误差:
wjk是由j到下一层中单元k的连接的权,Errk是单元k的误差
更新 权 和 偏差 ,以反映传播的误差。
权由下式更新:
其中,△wij是权wij的改变。l是学习率,通常取0和1之间的值。
偏置由下式更新:
其中,△θj是偏置θj的改变。
Example
人类视觉原理:
深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”, 可视皮层是分级的 。
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。
对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:
在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。
可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。
卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。
CNN最早由Yann LeCun提出并应用在手写字体识别上。LeCun提出的网络称为LeNet,其网络结构如下:
这是一个最典型的卷积网络,由 卷积层、池化层、全连接层 组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。
CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。
降低参数量级:如果使用传统神经网络方式,对一张图片进行分类,那么,把图片的每个像素都连接到隐藏层节点上,对于一张1000x1000像素的图片,如果有1M隐藏层单元,一共有10^12个参数,这显然是不能接受的。
但是在CNN里,可以大大减少参数个数,基于以下两个假设:
1)最底层特征都是局部性的,也就是说,用10x10这样大小的过滤器就能表示边缘等底层特征
2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,能用同样的一组分类器来描述各种各样不同的图像
基于以上两个假设,就能把第一层网络结构简化
用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。
卷积运算的定义如下图所示:
如上图所示,一个5x5的图像,用一个3x3的 卷积核 :
101
010
101
来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。
这个过程可以理解为使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。在实际训练过程中, 卷积核的值是在学习过程中学到的。
在具体应用中,往往有多个卷积核,可以认为, 每个卷积核代表了一种图像模式 ,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果设计了6个卷积核,可以理解为这个图像上有6种底层纹理模式,也就是用6种基础模式就能描绘出一副图像。以下就是24种不同的卷积核的示例:
池化 的过程如下图所示:
可以看到,原始图片是20x20的,对其进行采样,采样窗口为10x10,最终将其采样成为一个2x2大小的特征图。
之所以这么做,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行采样。
即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。
在实际应用中,分为最大值采样(Max-Pooling)与平均值采样(Mean-Pooling)。
LeNet网络结构:
注意,上图中S2与C3的连接方式并不是全连接,而是部分连接。最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。
卷积神经网络的训练过程与传统神经网络类似,也是参照了反向传播算法
第一阶段,向前传播阶段:
a)从样本集中取一个样本(X,Yp),将X输入网络;
b)计算相应的实际输出Op
第二阶段,向后传播阶段
a)计算实际输出Op与相应的理想输出Yp的差;
b)按极小化误差的方法反向传播调整权矩阵。
❺ 神经网络精度一般设0.0001,可以嘛训练样本数值有归一化的情况
神经网络精度,要根据数据类型了,计算方法等来设定
归一化有同一、统一和合一的意思。
无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;SVM是以降维后线性划分距离来分类和仿真的,因此时空降维归一化是统一在-1--+1之间的统计坐标分布。一分为二和合二为一争论了多年,这里归一化也有合二为一的思想。
❻ caffe训练神经网络测试集准确率达到多少就可以
这个并没有准确的结论,如果你数据预处理存在问题或者标签不合理,accuracy自然不会很高。并且,还需要改变已有网络中的参数或者网络结构才能有效提高accuracy。我们的目的并不在于准确率到底是多少,而是当测试准确率比较高时,得到的模型可以代替人去进行复杂图片的等级判断
❼ 神经网络为什么深度越深,准确率越高
因为深度神经网络的参数特别多(可以达到上亿,目前已经可以支持到万亿参数)。
参数多,表示模型的搜索空间就越大,必须有足够的数据才能更好地刻画出模型在空间上的分布
❽ 如何提高pb神经网络分类的准确率
要想提高BP神经网络分类的准确率,关键在于提高网络性能,使网络能够反映数据的内部非线性规律。一般有以下几种措施:
保证学习样本质量。网络的输出结果质量不可能超出原始训练数据的质量,一定要保证样本准确、典型、规模足够大。
选定合适的输入向量方案。输入向量的配置方案不是固定的,可以添加自变量,增加因素。
选定适当的隐层节点数。过少学习能力不足,过多可能过拟合并且学习较慢。
调整参数,如学习率、学习目标等。
与其他算法结合进行改进。如带动量项的BP算法、与GA算法融合的GA-BP算法等。
效果不理想时,可考虑增加隐层数量。
❾ 卷积神经网络(CNN)文本训练的问题
CNN卷积神经网络是一种深度模型。它其实老早就已经可以成功训练并且应用了(最近可能deep learning太火了,CNNs也往这里面靠。虽然CNNs也属于多层神经网络架构,但把它置身于DL家族,还是有不少人保留自己的理解的)。