。
人工神经网络最近非常流行,它是属于人工智能领域的范畴,如果你对这个比较感兴趣的话,可以报名极客时间平台的人工智能基础课,其中不仅讲了人工智能的学习路径,还讲了神经网络的生理学依据、神经网络的基本单元、多层神经网络等等人工神经网络知识和神经网络实例,学完之后你就能对人工神经网络有一个全面的认识了。
谷歌人工智能写作项目:神经网络伪原创
人工神经网络有很多种,我只会最常用的BP神经网络。不同的网络有不同的结构和不同的学习算法。简单点说,人工神经网络就是一个函数。只是这个函数有别于一般的函数。它比普通的函数多了一个学习的过程。
在学习的过程中,它根据正确结果不停地校正自己的网络结构,最后达到一个满意的精度。这时,它才开始真正的工作阶段。学习人工神经网络最好先安装MathWords公司出的MatLab软件。
利用该软件,你可以在一周之内就学会建立你自己的人工神经网络解题模型。如果你想自己编程实现人工神经网络,那就需要找一本有关的书籍,专门看神经网络学习算法的那部分内容。
因为“学习算法”是人工神经网络的核心。最常用的BP人工神经网络,使用的就是BP学习算法。
1、神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值。现在一般求解权值和阈值,都是采用梯度下降之类的搜索算法(梯度下降法、牛顿法、列文伯格-马跨特法、狗腿法等等)。
2、这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。
3、然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数(神经网络中的预测误差)也不断下降,最终就能找到一个解,使得目标函数(预测误差)比较小。
4、而在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。因此,步长设置适当非常重要。
5、学习率对原步长(在梯度下降法中就是梯度的长度)作调整,如果学习率lr=0.1,那么梯度下降法中每次调整的步长就是0.1*梯度,6、而在matlab神经网络工具箱里的lr,代表的是初始学习率。
因为matlab工具箱为了在寻解不同阶段更智能的选择合适的步长,使用的是可变学习率,它会根据上一次解的调整对目标函数带来的效果来对学习率作调整,再根据学习率决定步长。
。
Hopfield神经网络(HopfieldNeuralNetwork,简称HNN),是美国加州理工学院物理学家Hopfield教授1982年提出的一种反馈型神经网络,信号不但能向前,还能向后传递(输出信号又反馈回来变成输入信号。
而前面所介绍的BP网络是一种前馈网络,信号只能向前传递)。他在Hopfield神经网络中引入了“能量函数”概念,使网络的运行稳定性的判断有了可靠依据。
Hopfield神经网络的权值不是经过反复学习获得的,而是按照一定规则计算出来的,一经确定就不再改变,而Hopfield神经网络的状态(输入、输出信号)会在运行过程中不断更新,网络演变到稳态时各神经元的状态便是问题的解。
1985年,Hopfield和Tank研制了电子线路来模拟Hopfield网络,较好地解决了优化组合问题中著名的TSP(旅行商)问题,找到了最佳解的近似解,为神经网络的复兴建立了不可磨灭的功劳。
对于地球物理反演这种最优化问题,可以很方便地用Hopfield网络来实现。
反演的目标函数等于Hopfield网络的“能量函数”,网络的状态(输入、输出信号)就是模型的参数,网络演变到稳态时各神经元的输入输出值便是反演问题的解。
Hopfield神经网络分为离散型和连续型两种网络模型,分别记为DHNN(DiscreteHopfieldNeuralNetwork)和CHNN(ContinuesHopfieldNeuralNetwork)。
在前馈型网络中无论是离散的还是连续的,一般均不考虑输入与输出之间在时间上的滞后性,而只表达两者之间的映射关系。
但在连续Hopfield神经网络中,考虑了输出与输入之间的延迟因素,因此需要用微分方程或差分方程来描述网络的动态数学模型。
8.5.4.1离散Hopfield神经网络离散Hopfield神经网络的拓扑结构如图8.12所示。这是一种单层全反馈网络,共有n个神经元。
图8.12的特点是任意一个神经元的输出xi只能是0或1,均通过连接权wij反馈至所有神经元j作为它的输入xj。
也就是说,每个神经元都通过连接权接收所有其他神经元输出反馈的信息,这样每一个神经元的输出都受其他所有神经元输出的控制,从而每个神经元的输出相互制约。每个神经元均设一个阀值Ti,以反映对输入噪声的控制。
图8.12离散Hopfield神经网络的拓扑结构[8]8.5.4.1.1网络的状态离散Hopfield神经网络任意一个神经元的输出xj称为网络的状态,它只能是0或1。
变化规律由下式规定:xj=f(netj)j=1,2,…,n(8.33)f()为转移函数,离散Hopfield神经网络的转移函数常用符号函数表示:地球物理反演教程其中netj为净输入:地球物理反演教程对离散Hopfield神经网络,一般有wij=0,wij=wji(8.36)这说明神经元没有自反馈,两个神经元的相互控制权值相同。
离散Hopfield神经网络稳定时,每个神经元的状态都不再改变。
此时的稳定状态就是网络的输出,记为地球物理反演教程8.5.4.1.2网络的异步工作方式它是一种串行方式,网络运行时每次只改变一个神经元的状态,其他神经元的状态保持不变。
8.5.4.1.3网络的同步工作方式它是一种并行同步工作方式,所有神经元同时调整状态。8.5.4.1.4网络的吸引子网络达到稳定状态时的输出X,称为网络的吸引子。
8.5.4.1.5网络的能量函数网络的能量函数定义为地球物理反演教程以上是矩阵形式,考虑无自反馈的具体展开形式为地球物理反演教程当网络收敛到稳定状态时,有ΔE(t)=E(t+1)-E(t)=0(8.40)或者说:地球物理反演教程理论证明了如下两个定理[8]:定理1.对于DHNN,若按异步方式调整网络状态,且连接权矩阵W为对称阵,则对任意初始状态,网络都能最终收敛到一个吸引子。
定理2.对于DHNN,若按同步方式调整网络状态,且连接权矩阵W为非负定对称阵,则对任意初始状态,网络都能最终收敛到一个吸引子。
8.5.4.1.6利用离散Hopfield神经网络进行反演在地球物理线性反演中,设有如下目标函数:地球物理反演教程对比式(8.38)和式(8.42)发现它们在形式上有很多相似之处。
王家映的《地球物理反演理论》一书中,直接用式(8.42)和式(8.38)类比,公式显得复杂。
本书设立一个新的目标函数ϕ,公式将会变得简洁得多:地球物理反演教程再对比式(8.38)和式(8.43),发现它们完全一样,只要设:X(t)=m,W=GTG,T=GTd(8.44)注意:式(8.43)的目标函数ϕ的极大值解就是原来目标函数φ极小值的解,它们是同解的。
如果待反演的模型参数是离散的0或1值,那么可以直接应用离散Hopfield神经网络进行反演。
但是一般它们都是连续的数值,所以还要将模型参数表示为二进制[1]:地球物理反演教程其中:Bij=0或1为二进制数;D和U为整数,取决于模型参数的大小和精度。
这样第i个模型参数就用Bij表示为了二进制数。将式(8.45)代入目标函数式(8.43)后再与离散Hopfield神经网络的能量函数进行对比,确立新的等价关系后,就可以进行反演了。
这个新的等价关系式可以参见王家映的《地球物理反演理论》[1]一书。反演的过程大致如下:(1)根据模型参数的大小范围和精度确定D和U,将初始输入模型参数变为二进制数。
设立一个拟合精度标准,如相对均方差ε,设定一个最大迭代次数N(所有神经元的输出都修改一次称为一次迭代)。(2)利用数据方程的G矩阵(在一般情况下需用偏导数矩阵获得)计算网络的权值和阀值。
(3)将二进制初始模型参数输入网络并运行网络。(4)把每次迭代网络输出值变为十进制模型参数,进行正演计算。如果拟合满足精度ε,则停止网络运行并输出反演结果。
否则重复(2)~(4)步直到满足精度或达到最多迭代次数N为止。
在一般情况下,地球物理数据方程的G矩阵是无法用解析式写出的,需要用偏导数矩阵获得,它是依赖于输入参数的,因此网络的每次迭代都要重新计算偏导数矩阵。这个计算量是很大的。因此他的反演过程和最小二乘法相似。
此外,用Hopfield神经网络进行反演同样有可能陷入局部极值点(吸引子)。因此同样受初始模型的影响,需要尽量让初始模型接近真实模型。
8.5.4.2连续Hopfield神经网络(CHNN)[8]1984年,Hopfield把离散Hopfield神经网络发展为连续Hopfield神经网络。
但所有神经元都同步工作,各输入输出量为随时间变化的连续的模拟量,这就使得CHNN比DHNN在信息处理的并行性、实时性方面更接近实际的生物神经网络工作机理。因此利用CHNN进行地球物理反演更加方便。
CHNN可以用常系数微分方程来描述,但用模拟电子线路来描述,则更加形象直观,易于理解。图8.13为连续Hopfield神经网络的拓扑结构[8]。
图8.13连续Hopfield神经网络的拓扑结构[8]图8.13中每个神经元用一个运算放大器模拟,神经元的输入输出用放大器的输入输出电压表示,连接权用电导表示。
每个放大器有一个正向输出和一个反向输出,分别表示兴奋和抑制。每个神经元还有一个用于设置激活电平的外界输入偏置电流作为阀值。这里由于篇幅关系不再累述。感兴趣的读者可以参考其他文献。
。
神经网络,你先学好高数里的很多级数,如泰勒展开式,傅里叶级数,洛朗级数等这些级数对现实模型都有逼近作用,神经网络最初都是单神经元,如果你对泰勒展开时比较深刻了之后,你就可以很轻松的证明单层感知器的数学动力学原理,之后学习多层感知器的概念无非只是加入欧式空间的概念,在低位高度非线性的模型,在高纬上线性化,到这里理解后,后面的神经网络学习在理解上就很轻松了,现在的书的确都写的很糟糕,神经网络最好和函数逼近空间几何一起学,理论上是相通的,祝你学习愉快。
找一个实际的预测项目,从项目入手,遇到问题就百度,相信你很快能入门。千万不要盲目找本教材从前言开始一二三四地看,我保证你看不了几章就放弃了。
一定要带着具体问题看教材,上网搜索相关资料,这个方法对于学习任何知识都是一个快速入门的途径。