A. 深度神经网络dnn怎么调节参数
深度神经网络(DNN)目前是许多现代AI应用的基础。
自从DNN在语音识别和图像识别任务中展现出突破性的成果,使用DNN的应用数量呈爆炸式增加。这些DNN方法被大量应用在无人驾驶汽车,癌症检测,游戏AI等方面。
在许多领域中,DNN目前的准确性已经超过人类。与早期的专家手动提取特征或制定规则不同,DNN的优越性能来自于在大量数据上使用统计学习方法,从原始数据中提取高级特征的能力,从而对输入空间进行有效的表示。
然而,DNN超高的准确性是以超高的计算复杂度为代价的。
通常意义下的计算引擎,尤其是GPU,是DNN的基础。因此,能够在不牺牲准确性和增加硬件成本的前提下,提高深度神经网络的能量效率和吞吐量的方法,对于DNN在AI系统中更广泛的应用是至关重要的。研究人员目前已经更多的将关注点放在针对DNN计算开发专用的加速方法。
鉴于篇幅,本文主要针对论文中的如下几部分详细介绍:
DNN的背景,历史和应用
DNN的组成部分,以及常见的DNN模型
简介如何使用硬件加速DNN运算
DNN的背景
人工智能与深度神经网络
深度神经网络,也被称为深度学习,是人工智能领域的重要分支,根据麦卡锡(人工智能之父)的定义,人工智能是创造像人一样的智能机械的科学工程。深度学习与人工智能的关系如图1所示:
图1:深度神经网络与人工智能的关系
人工智能领域内,一个大的子领域是机器学习,由Arthur Samuel在1959年定义为:让计算机拥有不需要明确编程即可学习的能力。
这意味着创建一个程序,这个程序可以被训练去学习如何去做一些智能的行为,然后这个程序就可以自己完成任务。而传统的人工启发式方法,需要对每个新问题重新设计程序。
高效的机器学习算法的优点是显而易见的。一个机器学习算法,只需通过训练,就可以解决某一领域中每一个新问题,而不是对每个新问题特定地进行编程。
在机器学习领域,有一个部分被称作brain-inspired computation。因为人类大脑是目前学习和解决问题最好的“机器”,很自然的,人们会从中寻找机器学习的方法。
尽管科学家们仍在探索大脑工作的细节,但是有一点被公认的是:神经元是大脑的主要计算单元。
人类大脑平均有860亿个神经元。神经元相互连接,通过树突接受其他神经元的信号,对这些信号进行计算之后,通过轴突将信号传递给下一个神经元。一个神经元的轴突分支出来并连接到许多其他神经元的树突上,轴突分支和树突之间的连接被称为突触。据估计,人类大脑平均有1014-1015个突触。
突触的一个关键特性是它可以缩放通过它的信号大小。这个比例因子可以被称为权重(weight),普遍认为,大脑学习的方式是通过改变突触的权重实现的。因此,不同的权重导致对输入产生不同的响应。注意,学习过程是学习刺激导致的权重调整,而大脑组织(可以被认为是程序)并不改变。
大脑的这个特征对机器学习算法有很好的启示。
神经网络与深度神经网络
神经元的计算是输入值的加权和这个概念启发了神经网络的研究。这些加权和对应于突触的缩放值以及神经元所接收的值的组合。此外,神经元并不仅仅是输入信号的加权和,如果是这样的话,级联的神经元的计算将是一种简单的线性代数运算。
相反的是,神经元组合输入的操作似乎是一种非线性函数,只有输入达到某个阈值的时候,神经元才会生成输出。因此,通过类比,我们可以知道神经网络在输入值的加权和的基础上应用了非线性函数。
图2(a)展示了计算神经网络的示意图,图的最左边是接受数值的“输入层”。这些值被传播到中间层神经元,通常也叫做网络的“隐藏层”。通过一个或更多隐藏层的加权和最终被传播到“输出层”,将神经网络的最终结果输出给用户。
图2:神经网络示意图
在神经网络领域,一个子领域被称为深度学习。最初的神经网络通常只有几层的网络。而深度网络通常有更多的层数,今天的网络一般在五层以上,甚至达到一千多层。
目前在视觉应用中使用深度神经网络的解释是:将图像所有像素输入到网络的第一层之后,该层的加权和可以被解释为表示图像不同的低阶特征。随着层数的加深,这些特征被组合,从而代表更高阶的图像特征。
例如,线可以被组合成形状,再进一步,可以被组合成一系列形状的集合。最后,再训练好这些信息之后,针对各个图像类别,网络给出由这些高阶特征组成各个对象的概率,即分类结果。
推理(Inference)与训练(Training)
既然DNN是机器学习算法中的一员,那么它的基本编程思想仍然是学习。DNN的学习即确定网络的权重值。通常,学习过程被称为训练网络(training)。一旦训练完成,程序可以使用由训练确定的权值进行计算,这个使用网络完成任务的操作被被称为推断(inference)。
接下来,如图3所示,我们用图像分类作为例子来展示如何训练一个深度神经网络。当我们使用一个DNN的时候,我们输入一幅图片,DNN输出一个得分向量,每一个分数对应一个物体分类;得到最高分数的分类意味着这幅图片最有可能属于这个分类。
训练DNN的首要目标就是确定如何设置权重,使得正确分类的得分最高(图片所对应的正确分类在训练数据集中标出),而使其他不正确分类的得分尽可能低。理想的正确分类得分与目前的权重所计算出的得分之间的差距被称为损失函数(loss)。
因此训练DNN的目标即找到一组权重,使得对一个较大规模数据集的loss最小。
图3:图像分类
权重(weight)的优化过程类似爬山的过程,这种方法被称为梯度下降(gradient decent)。损失函数对每个权值的梯度,即损失函数对每个权值求偏导数,被用来更新权值(例:第t到t+1次迭代:,其中α被称为学习率(Learning rate)。梯度值表明权值应该如何变化以减小loss。这个减小loss值的过程是重复迭代进行的。
梯度可以通过反向传播(Back-Propagation)过程很高效地进行计算,loss的影响反向通过网络来计算loss是如何被每个权重影响的。
训练权重有很多种方法。前面提到的是最常见的方法,被称为监督学习,其中所有的训练样本是有标签的。
无监督学习是另一种方法,其中所有训练样本都没有标签,最终目标是在数据中查找结构或聚类。半监督学习结合了两种方法,只有训练数据的一小部分被标记(例如,使用未标记的数据来定义集群边界,并使用少量的标记数据来标记集群)。
最后,强化学习可以用来训练一个DNN作为一个策略网络,对策略网络给出一个输入,它可以做出一个决定,使得下一步的行动得到相应的奖励;训练这个网络的过程是使网络能够做出使奖励(即奖励函数)最大化的决策,并且训练过程必须平衡尝试新行为(Exploration)和使用已知能给予高回报的行为(Exploitation)两种方法。
用于确定权重的另一种常用方法是fine-tune,使用预先训练好的模型的权重用作初始化,然后针对新的数据集(例如,传递学习)或新的约束(例如,降低的精度)调整权重。与从随机初始化开始相比,能够更快的训练,并且有时会有更好的准确性。
B. 遗传算法优化概率神经网络的matlab代码
原理大概是,设置一个初始种群,种群里的个体就是平滑因子,经过遗传算法的选择、交叉、变异后,逐渐找到一个最佳的spread,即为最终结果。
附件是一个GA-BP算法的程序,虽然不同,但是原理是相近的,可以参考。
遗传算法的基本运算过程如下:
a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的适应度。
c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。
群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。
f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。
C. 神经网络算法可以求最优解嘛
神经网络可以做优化问题,但不一定能找到最优解。
逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。
直观性的思维是将分布式存储的信息综合起来,忽然间产生的想法或解决问题的办法。这种思维方式的根本之点在于以下两点:
1、信息是通过神经元上的兴奋模式分布存储在网络上。
2、信息处理是通过神经元之间同时相互作用的动态过程来完成的。
神经网络:
思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
D. 怎样可以提高神经网络的收敛速度
改变一下训练函数用trainscg,trainlm要比traingdx快,再就是优化初始权阈值,这方面方法就多了,网上这方面东西比较多,搜下看吧!祝你成功。
E. 如何用其他算法优化神经网络算法
matlab有神经网络和遗传算法的工具箱, 我没用过,不过你的问题看起来也很基础的,应该容易做
F. matlab的遗传算法优化BP神经网络
对y=x1^2+x2^2非线性系统进行建模,用1500组数据对网络进行构建网络,500组数据测试网络。由于BP神经网络初始神经元之间的权值和阈值一般随机选择,因此容易陷入局部最小值。本方法使用遗传算法优化初始神经元之间的权值和阈值,并对比使用遗传算法前后的效果。
步骤:
未经遗传算法优化的BP神经网络建模
1、
随机生成2000组两维随机数(x1,x2),并计算对应的输出y=x1^2+x2^2,前1500组数据作为训练数据input_train,后500组数据作为测试数据input_test。并将数据存储在data中待遗传算法中使用相同的数据。
2、
数据预处理:归一化处理。
3、
构建BP神经网络的隐层数,次数,步长,目标。
4、
使用训练数据input_train训练BP神经网络net。
G. 关于遗传算法优化BP神经网络的问题
matlab自动给出的权阈值(应该是全0)----------应该随机初始化
究竟遗传算法能优化到什么程度
------------
不同的数据集,不同的训练方法,将有不同的结论
ga优化神经网络初始权值如果真的那么牛x就好了,从来就没有万能的方法。
H. 基于优化的BP神经网络遥感影像分类
罗小波1 刘明培1,2
(1.重庆邮电大学计算机学院中韩GIS研究所,重庆,400065;2.西南大学资源环境学院,重庆,400065)
摘要:在网络结构给定的情况下,利用遗传算法的全局寻优能力得到一组权值和阈值作为BP神经网络的初始权值和阈值,来避免BP神经网络易陷入局部极小的缺陷,同时也可以提高网络的收敛速度。然后再利用BP神经网络的局部寻优能力,对权值和阈值进行进一步的精细调整。实验结果表明,把这种基于遗传算法的BP神经网络应用于遥感影像监督分类,具有较高的分类精度。
关键词:BP神经网络;遗传算法;遥感影像分类
1 引言
随着遥感技术的快速发展,遥感技术已经广泛应用于各个领域。其中,遥感影像分类是其重要组成部分。近年来,随着人工神经网络理论的快速发展,神经网络技术日益成为遥感影像分类中的有效手段,特别是对高光谱等影像数据,更是具有许多独特的优势。
一般我们把采用BP (Back-propogation)算法的多层感知器叫做BP 神经网络,它是目前研究得最完善、应用最广泛的神经网络之一。与经典的最大似然法相比,BP神经网络最大的优势就是不要求训练样本正态分布。但是,它具有结构难以确定、容易陷入局部极小、不易收敛等缺陷。在本文中,网络的结构由用户根据问题的复杂度确定。在进行网络训练之前,利用遗传算法的全局寻优能力确定网络的初始权值和阈值;然后利用BP学习算法的局部寻优能力对网络进行进一步的精细调整。最后利用训练后的网络进行遥感影像监督分类。结果表明,基于遗传算法的BP神经网络进行遥感影像监督分类,具有较高的分类精度。
2 BP 神经网络
2.1 网络结构
BP神经网络的结构一般包括输入层、中间隐层、输出层。在模式识别中,输入层的神经元个数等于输入的特征个数,输出层的神经元个数等于需要分类的类别数。隐层可以为一层或多层,但一般的实际应用中一层隐层就可以满足要求。而各隐层的神经元个数需要根据实际问题的复杂度而定。以单隐层为例,其结构示意图如图1。
为了实现一种通用的遥感影像分类手段,除了提供默认的网络结构外,还为使用者提供了根据实际问题的复杂度自行确定网络隐层数与各隐层神经元数的功能。这为一些高级用户提供了灵活性,但这种灵活性在一定程度上增加了使用的难度,有时也需要一个实验的过程,才能取得满意的效果。
图1 BP 神经网络结构
2.2 BP 学习算法
算法的基本步骤如下:
(1)将全部权值与节点的阈值预置为一个小的随机数。
(2)加载输入与输出。在n个输入节点上加载一n维向量X,并指定每一输出节点的期望值。每次训练可以选取新的同类或者异类样本,直到权值对各类样本达到稳定。
(3)计算实际输出y1,y2,…,yn。
(4)修正权值。权值修正采用了最小均方(LMS)算法的思想,其过程是从输出节点开始,反向地向第一隐层传播由总误差诱发的权值修正。下一时刻的互连权值Wij (t+1)由下式给出:
土地信息技术的创新与土地科学技术发展:2006年中国土地学会学术年会论文集
式中,j为本节点的输出;i则是隐层或者输入层节点的序号;
A.若j为输出节点,则:
δj=yj(1 -yj)(tj -yj)
其中,tj为输出节点 j 的期望值,yj为该节点的实际输出值;
B.若j为内部隐含节点,则:
土地信息技术的创新与土地科学技术发展:2006年中国土地学会学术年会论文集
其中k为j节点所在层之上各层的全部节点。
(5)在达到预定的误差精度或者循环次数后退出,否则,转(2)。
2.3 基于遗传算法的网络学习算法
遗传算法具有全局寻优、不易陷入局部极小的优点,但局部寻优的能力较差。而BP学习算法却具有局部寻优的优势。因此,如果将两种算法结合起来构成混合训练算法,则可以相互取长补短获得较好的分类效果。主要思路如下:
(1)利用遗传算法确定最优个体
A.把全部权值、阈值作为基因进行实数编码,形成具有M个基因的遗传个体结构,其中M等于所有权值、阈值的个数。
B.设定种群规模N,随机初始化这N个具有M个基因的结构。
C.适应度的计算:分别用训练样本集对N组权值、阈值进行训练,得出各自网络期望输出与网络实际输出的总误差e,适应度f=1.0-e。
D.进行遗传算子操作,包括选择算子、交叉算子和变异算子,形成新的群体:其中,选择算子采用了轮盘赌的方法,交叉算子采用了两点交叉。
E.反复进行C、D两步,直到满足停止条件为止。停止条件为:超出最大代数、最优个体精度达到了规定的精度。
(2)把经过 GA 优化后的最优个体进行解码操作,形成 BP 神经网络的初始权值和阈值。
(3)采用BP学习算法对网络进行训练,直到满足停止条件。停止条件为:①达到最大迭代次数;②总体误差小于规定的最小误差。
网络训练结束后,把待分数据输入训练好的神经网络,进行分类,就可以得到分类结果影像图。
3 应用实例
实现环境为VC+ +6.0,并基于Mapgis的二次开发平台,因为二次平台提供了一些遥感影像的基本处理函数,如底层的一些读取文件的基本操作。
实验中使用的遥感影像大小为500×500,如图1所示。该影像是一美国城市1985年的遥感影像图。根据同地区的SPOT影像及相关资料,把该区地物类别分为8类,各类所对应的代码为:C1为水体、C2为草地、C3为绿化林、C4为裸地、C5为大型建筑物、C6为军事基地、C7为居民地、C8为其他生活设施(包括街道、道路、码头等)。其中,居民地、军事设施、其他生活设施的光谱特征比较接近。
图1 TM 原始影像 (5,4,3 合成)
在网络训练之前,经过目视解译,并结合一些相关资料,从原始图像上选取了3589个类别已知的样本组成原始样本集。要求原始样本具有典型性、代表性,并能反映实际地物的分布情况。把原始样本集进行预处理,共得到2979个纯净样本。这些预处理后的样本就组成训练样本集。
网络训练时的波段选择为TM1、TM2、TM3、TM4、TM5、TM7 共6个波段。另外,由于所要分类的类别数为8,因此,网络结构为:输入层节点数为6,输出层节点数为8,隐层数为1,隐层的节点数为10,然后用训练样本集对网络进行训练。在训练网络的时候,其训练参数分别为:学习率为0.05,动量率为0.5,最小均方误差为0.1,迭代次数为1000。把训练好的网络对整幅遥感影像进行分类,其分类结果如下面图2所示。
图2 分类结果
为了测试网络的分类精度,在分类完成后,需要进行网络的测试。测试样本的选取仍然采用与选取训练样本集一样的方法在原始影像上进行选取,即结合其他资料,进行目视判读,在原始图像上随机选取类别已知的样本作为测试样本。
利用精度评价模块,把测试样本集与已分类图像进行比较,得到分类误差矩阵以及各种分类精度评价标准,如表1 所示:
表1 分类误差矩阵
总体精度:0.91,Kappa系数:0.90。
从表1 可以看出,采用测试样本集进行测试,大部分地物的分类精度都达到了 0.9以上,只有居民地和其他生活设施的精度没有达到,但也分别达到了0.89 和0.77,总的分类精度为0.91。Kappa系数在遥感影像分类精度评价中应用极为广泛,在本次测试中其值为0.90。从上面的分析可以看出,利用基于遗传算法的BP神经网络进行遥感影像分类,其分类精度较高,取得了令人满意的效果。
4 结论
与传统的基于统计理论的分类方法相比,BP神经网络分类不要求训练样本正态分布,并且具有复杂的非线性映射能力,更适合于日益激增的海量高光谱遥感数据的处理。但BP神经网络也有易陷于局部极小、不易收敛等缺陷。
初始权值和阈值设置不当,是引起网络易陷于局部极小、不易收敛的重要原因。在实验中,利用遗传算法的全局寻优能力来确定BP网络的初始权值和阈值,使得所获取的初始权值和阈值是一组全局近似最优解。然后,利用BP学习算法的局部寻优能力对网络权值和阈值进行精细调整。这样,训练后的稳定网络,不但具有较强的非线性映射能力,而且总可以得到一组均方误差最小的全局最优解。
实验表明,利用上述的基于遗传算法的BP神经网络进行遥感影像分类,只要所选取的训练样本具有代表性,能反映实际地物的分布情况,就能够得到较高的分类精度,具有较强的实际应用价值。
参考文献
H.Yang et al,A Back-propagation neural networkmfor mineralogical mapping fromAVIRIS data,Int.J.Remote sensing,20 (1):97~110
Arti Alessandro,et al.Speed up learning and network optimization with extended back propogation.Neural Networks,1993,6:365~383
Patrick P.Minimization methods for training feed forward neural networks.Neural Networks,1994,7:1~12
Goldberg D E.Genetic algorithms in Search Optimization and Machine Learing.MA:Addison-Wesley,1989
Rudolph Gunter.Convergence analysis of canonical genetic algorithms.IEEE Transactions on Neural Networks,1994,5 (1);102~119
Fang J,Xi Y.Toward design based on evolutionary programming.ArtificialIntel.Eng.,1997,11 (2):155~161
Park Y R,et al.Prediction sun spots using layered perception neural network.IEEE Trans.on Neural Netorks,1996,7 (2):501~505
杨行峻、郑君里.人工神经网络与盲信号处理[M].北京:清华出版社,2003,23~40
周成虎、骆剑成等.遥感影像地学理解与分析[M].北京:科学出版社,2001,228~238
王耀男.卫星遥感图像的神经网络自动识别[J].湖南大学学报,1998,61~66
江东,王建华.人工神经网络在遥感中的应用与发展.国土与资源遥感,1999,13~18
I. SPSS的神经网络模型参数设置疑问
1神经网络对于定量数据也能用
2因子根据具体研究面对确定
3比例3:7,也可以cross
4验证集必须
5这些就多了,有数学公式
J. BP神经网络中初始权值和阈值的设定
首先需要了解BP神经网络是一种多层前馈网络。以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。
因为初始值(初始权值和阀值)都在x这个向量中,x(n,1)的长度n为:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum
其中inputnum*hiddennum是输入层到隐含层的权值数量,hiddennum是隐含层神经元个数(即隐含层阀值个数),hiddennum*outputnum是隐含层到输出层权值个数,outputnum是输出层神经元个数(即输出层阀值个数)。
结构
BP网络是在输入层与输出层之间增加若干层(一层或多层)神经元,这些神经元称为隐单元,它们与外界没有直接的联系,但其状态的改变,则能影响输入与输出之间的关系,每一层可以有若干个节点。
BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每~层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。
以上内容参考:网络-BP神经网络