要点如下:
1、神经网络基本结构,应该是输入层-若干个隐含层-输出层。
2、输入层应该有7个输入变量。
3、隐含层层数自定,但每层要超过7个神经元。
4、输出层可以用softmax之类的函数,将隐含层的输出归并成一个。
代码请自行编写。
谷歌人工智能写作项目:小发猫
“深度学习”和“多层神经网络”不存在区别关系参考:一个技术宅的学习笔记。深度学习的网络结构是多层神经网络的一种。深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。广义上说深度学习的网络结构也是多层神经网络的一种。传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。输入层-卷积层-降维层-卷积层-降维层--.--隐藏层-输出层简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。深度学习做的步骤是信号->特征->值。特征是由网络自己选择。需要使用深度学习解决的问题有以下的特征:深度不足会出现问题。人脑具有一个深度结构。认知过程逐层进行,逐步抽象。深度学习的核心思想:把学习结构看作一个网络,则深度学习的核心思路如下:①无监督学习用于每一层网络的pre-train;②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;③用自顶而下的监督算法去调整所有层
4.2.1 概述
人工神经网络的研究与计算机的研究几乎是同步发展的。1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rosenblatt提出了感知器模型,1982年,Hopfiled引入了能量函数的概念提出了神经网络的一种数学模型,1986年,Rumelhart及LeCun等学者提出了多层感知器的反向传播算法等。
神经网络技术在众多研究者的努力下,理论上日趋完善,算法种类不断增加。目前,有关神经网络的理论研究成果很多,出版了不少有关基础理论的著作,并且现在仍是全球非线性科学研究的热点之一。
神经网络是一种通过模拟人的大脑神经结构去实现人脑智能活动功能的信息处理系统,它具有人脑的基本功能,但又不是人脑的真实写照。它是人脑的一种抽象、简化和模拟模型,故称之为人工神经网络(边肇祺,2000)。
人工神经元是神经网络的节点,是神经网络的最重要组成部分之一。目前,有关神经元的模型种类繁多,最常用最简单的模型是由阈值函数、Sigmoid 函数构成的模型(图 4-3)。
图4-3 人工神经元与两种常见的输出函数
神经网络学习及识别方法最初是借鉴人脑神经元的学习识别过程提出的。输入参数好比神经元接收信号,通过一定的权值(相当于刺激神经兴奋的强度)与神经元相连,这一过程有些类似于多元线性回归,但模拟的非线性特征是通过下一步骤体现的,即通过设定一阈值(神经元兴奋极限)来确定神经元的兴奋模式,经输出运算得到输出结果。经过大量样本进入网络系统学习训练之后,连接输入信号与神经元之间的权值达到稳定并可最大限度地符合已经经过训练的学习样本。在被确认网络结构的合理性和学习效果的高精度之后,将待预测样本输入参数代入网络,达到参数预测的目的。
4.2.2 反向传播算法(BP法)
发展到目前为止,神经网络模型不下十几种,如前馈神经网络、感知器、Hopfiled 网络、径向基函数网络、反向传播算法(BP法)等,但在储层参数反演方面,目前比较成熟比较流行的网络类型是误差反向传播神经网络(BP-ANN)。
BP网络是在前馈神经网络的基础上发展起来的,始终有一个输入层(它包含的节点对应于每个输入变量)和一个输出层(它包含的节点对应于每个输出值),以及至少有一个具有任意节点数的隐含层(又称中间层)。在 BP-ANN中,相邻层的节点通过一个任意初始权值全部相连,但同一层内各节点间互不相连。对于 BP-ANN,隐含层和输出层节点的基函数必须是连续的、单调递增的,当输入趋于正或负无穷大时,它应该接近于某一固定值,也就是说,基函数为“S”型(Kosko,1992)。BP-ANN 的训练是一个监督学习过程,涉及两个数据集,即训练数据集和监督数据集。
给网络的输入层提供一组输入信息,使其通过网络而在输出层上产生逼近期望输出的过程,称之为网络的学习,或称对网络进行训练,实现这一步骤的方法则称为学习算法。BP网络的学习过程包括两个阶段:第一个阶段是正向过程,将输入变量通过输入层经隐层逐层计算各单元的输出值;第二阶段是反向传播过程,由输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值。误差信息通过网络反向传播,遵循误差逐步降低的原则来调整权值,直到达到满意的输出为止。网络经过学习以后,一组合适的、稳定的权值连接权被固定下来,将待预测样本作为输入层参数,网络经过向前传播便可以得到输出结果,这就是网络的预测。
反向传播算法主要步骤如下:首先选定权系数初始值,然后重复下述过程直至收敛(对各样本依次计算)。
(1)从前向后各层计算各单元Oj
储层特征研究与预测
(2)对输出层计算δj
储层特征研究与预测
(3)从后向前计算各隐层δj
储层特征研究与预测
(4)计算并保存各权值修正量
储层特征研究与预测
(5)修正权值
储层特征研究与预测
以上算法是对每个样本作权值修正,也可以对各个样本计算δj后求和,按总误差修正权值。
人工神经网络有很多模型,但是日前应用最广、基本思想最直观、最容易被理解的是多层前馈神经网络及误差逆传播学习算法(Error Back-Prooaeation),简称为BP网络。
在1986年以Rumelhart和McCelland为首的科学家出版的《Parallel Distributed Processing》一书中,完整地提出了误差逆传播学习算法,并被广泛接受。多层感知网络是一种具有三层或三层以上的阶层型神经网络。典型的多层感知网络是三层、前馈的阶层网络(图4.1),即:输入层、隐含层(也称中间层)、输出层,具体如下:
图4.1 三层BP网络结构
(1)输入层
输入层是网络与外部交互的接口。一般输入层只是输入矢量的存储层,它并不对输入矢量作任何加工和处理。输入层的神经元数目可以根据需要求解的问题和数据表示的方式来确定。一般而言,如果输入矢量为图像,则输入层的神经元数目可以为图像的像素数,也可以是经过处理后的图像特征数。
(2)隐含层
1989年,Robert Hecht Nielsno证明了对于任何在闭区间内的一个连续函数都可以用一个隐层的BP网络来逼近,因而一个三层的BP网络可以完成任意的n维到m维的映射。增加隐含层数虽然可以更进一步的降低误差、提高精度,但是也使网络复杂化,从而增加了网络权值的训练时间。误差精度的提高也可以通过增加隐含层中的神经元数目来实现,其训练效果也比增加隐含层数更容易观察和调整,所以一般情况应优先考虑增加隐含层的神经元个数,再根据具体情况选择合适的隐含层数。
(3)输出层
输出层输出网络训练的结果矢量,输出矢量的维数应根据具体的应用要求来设计,在设计时,应尽可能减少系统的规模,使系统的复杂性减少。如果网络用作识别器,则识别的类别神经元接近1,而其它神经元输出接近0。
以上三层网络的相邻层之间的各神经元实现全连接,即下一层的每一个神经元与上一层的每个神经元都实现全连接,而且每层各神经元之间无连接,连接强度构成网络的权值矩阵W。
BP网络是以一种有教师示教的方式进行学习的。首先由教师对每一种输入模式设定一个期望输出值。然后对网络输入实际的学习记忆模式,并由输入层经中间层向输出层传播(称为“模式顺传播”)。实际输出与期望输出的差即是误差。按照误差平方最小这一规则,由输出层往中间层逐层修正连接权值,此过程称为“误差逆传播”(陈正昌,2005)。所以误差逆传播神经网络也简称BP(Back Propagation)网。随着“模式顺传播”和“误差逆传播”过程的交替反复进行。网络的实际输出逐渐向各自所对应的期望输出逼近,网络对输入模式的响应的正确率也不断上升。通过此学习过程,确定下各层间的连接权值后。典型三层BP神经网络学习及程序运行过程如下(标志渊,2006):
(1)首先,对各符号的形式及意义进行说明:
网络输入向量Pk=(a1,a2,...,an);
网络目标向量Tk=(y1,y2,...,yn);
中间层单元输入向量Sk=(s1,s2,...,sp),输出向量Bk=(b1,b2,...,bp);
输出层单元输入向量Lk=(l1,l2,...,lq),输出向量Ck=(c1,c2,...,cq);
输入层至中间层的连接权wij,i=1,2,...,n,j=1,2,...p;
中间层至输出层的连接权vjt,j=1,2,...,p,t=1,2,...,p;
中间层各单元的输出阈值θj,j=1,2,...,p;
输出层各单元的输出阈值γj,j=1,2,...,p;
参数k=1,2,...,m。
(2)初始化。给每个连接权值wij、vjt、阈值θj与γj赋予区间(-1,1)内的随机值。
(3)随机选取一组输入和目标样本
提供给网络。
(4)用输入样本
、连接权wij和阈值θj计算中间层各单元的输入sj,然后用sj通过传递函数计算中间层各单元的输出bj。
基坑降水工程的环境效应与评价方法
bj=f(sj) j=1,2,...,p (4.5)
(5)利用中间层的输出bj、连接权vjt和阈值γt计算输出层各单元的输出Lt,然后通过传递函数计算输出层各单元的响应Ct。
基坑降水工程的环境效应与评价方法
Ct=f(Lt) t=1,2,...,q (4.7)
(6)利用网络目标向量
,网络的实际输出Ct,计算输出层的各单元一般化误差
。
基坑降水工程的环境效应与评价方法
(7)利用连接权vjt、输出层的一般化误差dt和中间层的输出bj计算中间层各单元的一般化误差
。
基坑降水工程的环境效应与评价方法
(8)利用输出层各单元的一般化误差
与中间层各单元的输出bj来修正连接权vjt和阈值γt。
基坑降水工程的环境效应与评价方法
(9)利用中间层各单元的一般化误差
,输入层各单元的输入Pk=(a1,a2,...,an)来修正连接权wij和阈值θj。
基坑降水工程的环境效应与评价方法
(10)随机选取下一个学习样本向量提供给网络,返回到步骤(3),直到m个训练样本训练完毕。
(11)重新从m个学习样本中随机选取一组输入和目标样本,返回步骤(3),直到网路全局误差E小于预先设定的一个极小值,即网络收敛。如果学习次数大于预先设定的值,网络就无法收敛。
(12)学习结束。
可以看出,在以上学习步骤中,(8)、(9)步为网络误差的“逆传播过程”,(10)、(11)步则用于完成训练和收敛过程。
通常,经过训练的网络还应该进行性能测试。测试的方法就是选择测试样本向量,将其提供给网络,检验网络对其分类的正确性。测试样本向量中应该包含今后网络应用过程中可能遇到的主要典型模式(宋大奇,2006)。这些样本可以直接测取得到,也可以通过仿真得到,在样本数据较少或者较难得到时,也可以通过对学习样本加上适当的噪声或按照一定规则插值得到。为了更好地验证网络的泛化能力,一个良好的测试样本集中不应该包含和学习样本完全相同的模式(董军,2007)。
沃伦·麦卡洛克和沃尔特·皮茨(1943)基于数学和一种称为阈值逻辑的算法创造了一种神经网络的计算模型。这种模型使得神经网络的研究分裂为两种不同研究思路。一种主要关注大脑中的生物学过程,另一种主要关注神经网络在人工智能里的应用。
一、赫布型学习
二十世纪40年代后期,心理学家唐纳德·赫布根据神经可塑性的机制创造了一种对学习的假说,现在称作赫布型学习。赫布型学习被认为是一种典型的非监督式学习规则,它后来的变种是长期增强作用的早期模型。从1948年开始,研究人员将这种计算模型的思想应用到B型图灵机上。
法利和韦斯利·A·克拉克(1954)首次使用计算机,当时称作计算器,在MIT模拟了一个赫布网络。纳撒尼尔·罗切斯特(1956)等人模拟了一台 IBM 704计算机上的抽象神经网络的行为。
弗兰克·罗森布拉特创造了感知机。这是一种模式识别算法,用简单的加减法实现了两层的计算机学习网络。罗森布拉特也用数学符号描述了基本感知机里没有的回路,例如异或回路。这种回路一直无法被神经网络处理,直到保罗·韦伯斯(1975)创造了反向传播算法。
在马文·明斯基和西摩尔·派普特(1969)发表了一项关于机器学习的研究以后,神经网络的研究停滞不前。他们发现了神经网络的两个关键问题。
第一是基本感知机无法处理异或回路。第二个重要的问题是电脑没有足够的能力来处理大型神经网络所需要的很长的计算时间。直到计算机具有更强的计算能力之前,神经网络的研究进展缓慢。
二、反向传播算法与复兴
后来出现的一个关键的进展是保罗·韦伯斯发明的反向传播算法(Werbos 1975)。这个算法有效地解决了异或的问题,还有更普遍的训练多层神经网络的问题。
在二十世纪80年代中期,分布式并行处理(当时称作联结主义)流行起来。戴维·鲁姆哈特和詹姆斯·麦克里兰德的教材对于联结主义在计算机模拟神经活动中的应用提供了全面的论述。
神经网络传统上被认为是大脑中的神经活动的简化模型,虽然这个模型和大脑的生理结构之间的关联存在争议。人们不清楚人工神经网络能多大程度地反映大脑的功能。
支持向量机和其他更简单的方法(例如线性分类器)在机器学习领域的流行度逐渐超过了神经网络,但是在2000年代后期出现的深度学习重新激发了人们对神经网络的兴趣。
三、2006年之后的进展
人们用CMOS创造了用于生物物理模拟和神经形态计算的计算设备。最新的研究显示了用于大型主成分分析和卷积神经网络的纳米设备具有良好的前景。
如果成功的话,这会创造出一种新的神经计算设备,因为它依赖于学习而不是编程,并且它从根本上就是模拟的而不是数字化的,虽然它的第一个实例可能是数字化的CMOS设备。
在2009到2012年之间,Jürgen Schmidhuber在Swiss AI Lab IDSIA的研究小组研发的循环神经网络和深前馈神经网络赢得了8项关于模式识别和机器学习的国际比赛。
例如,Alex Graves et al.的双向、多维的LSTM赢得了2009年ICDAR的3项关于连笔字识别的比赛,而且之前并不知道关于将要学习的3种语言的信息。
IDSIA的Dan Ciresan和同事根据这个方法编写的基于GPU的实现赢得了多项模式识别的比赛,包括IJCNN 2011交通标志识别比赛等等。
他们的神经网络也是第一个在重要的基准测试中(例如IJCNN 2012交通标志识别和NYU的扬·勒丘恩(Yann LeCun)的MNIST手写数字问题)能达到或超过人类水平的人工模式识别器。
类似1980年Kunihiko Fukushima发明的neocognitron和视觉标准结构(由David H. Hubel和Torsten Wiesel在初级视皮层中发现的那些简单而又复杂的细胞启发)那样有深度的、高度非线性的神经结构可以被多伦多大学杰弗里·辛顿实验室的非监督式学习方法所训练。
2012年,神经网络出现了快速的发展,主要原因在于计算技术的提高,使得很多复杂的运算变得成本低廉。以AlexNet为标志,大量的深度网络开始出现。
2014年出现了残差神经网络,该网络极大解放了神经网络的深度限制,出现了深度学习的概念。
构成
典型的人工神经网络具有以下三个部分:
1、结构(Architecture)结构指定了网络中的变量和它们的拓扑关系。例如,神经网络中的变量可以是神经元连接的权重(weights)和神经元的激励值(activities of the neurons)。
2、激励函数(Activation Rule)大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。一般激励函数依赖于网络中的权重(即该网络的参数)。
3、学习规则(Learning Rule)学习规则指定了网络中的权重如何随着时间推进而调整。这一般被看做是一种长时间尺度的动力学规则。一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。
例如,用于手写识别的一个神经网络,有一组输入神经元。输入神经元会被输入图像的数据所激发。在激励值被加权并通过一个函数(由网络的设计者确定)后,这些神经元的激励值被传递到其他神经元。
这个过程不断重复,直到输出神经元被激发。最后,输出神经元的激励值决定了识别出来的是哪个字母。