线性激活函数:f(x)?x (输出层,函数逼近)
如果多层前向网络的输出层采用Sigmoid激活函数,其输出值将会限制在范围 (0,l) 内(通常用于分类问题);如果多层前向网络的输出层采用对称的Sigmoid激活函数,其输出值将会限制在范围 (-1,l) 内(通常用于分类问题);如果多层前向网络的输出层采用线性激活函数则可以取任意值(通常用于函数逼近问题)。 下面给出网络第l层更精确的结构。
?1(l) (l)w 11V1(l) (l?1) y1? y1(l) fl
(l?1) y2 (l?1)ySl?1
第l层输出为
(l) ?2? V2(l) fl (l) y2(l)?Sl w(l)SlSl?1 ? VS(ll)fl (l)ySl y(l)i(l)(l?1)?fl(?wijyj??i(l))?fl(Vi(l)),1?i?Sl
j?1Sl?1称Vi(l)??wp?1Sl?1(l)ipy(pl?1)??i(l)为第l层第i个神经元的净输入。
3.3.2 反向传播算法 (Backpropagation Algorithm)即 BP算法
在确定了网络的结构后,要通过训练样本集对网络进行训练,即对网络的阈值和权值进行学习和修正,以使网络实现给定的输入/输出映射关系。下面给出学习网络的阈值和权值的BP算法。
1. 随机梯度法 (极小化均方误差)
???x,t?为随机抽取训练样本nm设?,x?R,t?R. 记 ???x(k),t(k)?为随机抽取训练样本列?F(w)?E?t?y2? (网络的均方误差)???, ?2??Fk(w)?t(k)?y(k) (网络对应于训练样本?x?k?,t?k??的平方误差);?w记为网络的全部权值与阈值(为方便起见)?其中,?y为网络对应于输入x的实际输出;
?y(k)为网络对应于输入x(k)的实际输出? 16
2目标: 求解w??argminF(w)?E?t?y?
w??
梯度法:
?)(l)(l)?wij?k?1??wij?k????F(w(l)?wij??w?w(k) 1?i?Sl, 1?j?Sl?1, 1 ?l?L. ??(l)?F(w)(l)??i?k?1???i?k?????i(l)w?w(k)?? 由于无法计算随机梯度法
?F(w)?F(w),,因此采样下面的随机梯度法。 (l)
??i(l)?wij
?)(l)(l)?wij?k?1??wij?k????Fk((wl)?w?ij?w?w(k), 1?i?Sl, 1?j?Sl?1, 1?l?L. ??(l)?Fk(w)(l)?????k?1??k???ii??i(l)w?w(k)??2. BP算法推导 目标: 给出计算
?Fk(w)(l)?wij,
?Fk(w)??i(l)的快速算法。
为了给出计算
?Fk(w)(l)?wij,
?Fk(w)??(l)i的递推算法,通过引进中间变量并使用链式求导法则。
(1) 使用链式求导法则化简 引进中间变量:Vi(l)??wp?1Sl?1(l)(l?1)ipypl??i(l),1?i?S.
??Fk(w)?Fk(w)?Vi(l)?.(l)?(l)(l)?w?V?wij?iji ?, 1?i?Sl, 1?j?Sl?1, 1?l?L. (1)
(l)??Fk(w)?Fk(w)?Vi???(l)??V(l).??(l)iii?由于Vi(l)??k?1Sl?1(l)(l?1)wikyk??(l)i,故
?Vi(l)(l)?wij??Vi(l)(l?1)yj, (l)?i??1.记?i(l)??Fk(w)?Vi(l),则(1)化简为
??Fk(w)??i(l)y(jl?1)?(l)??wij,1?i?Sl, 1?j?Sl?1, 1?l?L. ???Fk(w)??(l)i???(l)i?1?l?L.) (2) 计算?i(l)的反向递推公式 (1?i?Sl,
17
l?1) 下面给出?i(l)与?(之间的递推公式。 j?i(l)(l?1)S?Vj(l?1)?Fk(w)链式法则S?Fk(w)?Vj(l?1). ????j(l)(l?1)(l)(l)?Vi?Vi?Vij?1?Vjj?1l?1l?1??由于Vj(l?1)??wp?1Sl(l?1)jpl?1)l?1)y(pl)??(??w(jpfl(Vp(l))??(jl?1),所以 jp?1Sl?Vj(l?1)?Vi(l)?w(jil?1)fl'(Vi(l)). (如果fl(t)?1,则fl'?fl(1?fl)) ?t1?e因此,有如下反向递推公式: ?i(l)??j?1Sl?1ll?1)'l?1)1?i?S, 1?l?L. ,w(jifl(Vi(l))?(j当l?L时(即输出层),有
?(L)?Fk(w)??i??Vi(L)???F(w)?t(k)?y(k)?k?2??(tp?1mp(k)?yp(k))2??(tp?1m
p(k)(L)2?fL(Vp))从而,?i(L)??2(t(k)?fL(Vi(L)))fL'(Vi(L)).
3.3.3. BP 算法的实现
1.初始化
在[?0.1, 0.1]区间内随机选择网络的初始权值和阈值。
2.前向计算(假设我们已知了第k步:w?k?,θ?k?,x?k?,t?k?)
Sl?1?(l)(l)wij(k)y(jl?1)(k)??i(l)(k)??Vi(k)? ?, l?1,2,?,L, 1?i?Sl, j?1?(l)(l)??yi(k)?fl(Vi(k))?其中 y(0)(k)?x(k). 3.向后计算第k步
?i(L)(k)??2(ti(k)?fL(Vi(L)(k)))fL'(Vi(L)(k)), 1?i?m?SL.
从而,通过如下递推公式可计算出?i(l)(k),l?L?1,L?2,?,1. ?i(l)(k)??wj?1Sl?1(l?1)(k)fl'(Vi(l)(k))ji?(jl?1)(k), 1?i?Sl.
4.重新更正网络权值和阈值
18
(l)(l)(l)(l?1)??wij?k?1??wij?k????i(k)yj(k) ?, 1?i?Sl, 1?j?Sl?1, 1?l?L.
(l)(l)(l)???i?k?1???i?k????i(k)3.3.4 BP网络逼近能力分析
K. Hornik已经证明,对于任意紧集X?R,单隐层(两层)前向网络:
n激活函数—隐层?Sigmoid??线性激活函数—输出层,即 ?隐层神经元足够多??n?1??g?x???wif??wijxj??i?1??, x??x1,x2,i?1?j?1?Lxn??Rn,f?Sigmoid,
T可以任意精度的逼近C(X)中的任意函数。
与此同时, Leshno也已经证明:上述网络可以任意精度的逼近任意连续函数。
3.4 神经网络的特点
1.具有很强的学习能力。
神经网络预测模型通过学习获取知识,并不断更新权值和阈值来改进自身性能,最终使得预测准确性较好。 2.分布式存储信息。
神经网络存储信息的方式与传统计算机的思维方式是不同的,神经网络通过大量神经元之间自适应性的连接即阈值以及对各连接权值的分布来表示特点的预测信息。 3.自适应性。
自适应性是指整个神经网络进行自我调节的能力,它包含四个方面的含义;自学习、自组织、泛化及训练。特别是在股市这样的环境非平稳的系统中,可以继续学习训练以跟踪环境的变化。而所谓的泛化能力是指经过训练后的网络对新样本能够做出正确的反应的能力。 4.映射的功能。
在前面的原理分析部分,我们已经知道单隐层前向网络可以任意精度的逼近n维空间中的二次可积函数。 5.并行性.
传统计算机处理信息的方式为串行处理,计算与存储是完全独立的两部分,这样存储器与运算器之间的通道就成了计算机的瓶颈,大大限制了它的运算能力。神经网络的各个层中的神经元都可以根据接收到的不同的信息进行独立的运算和处理,然后将输出的结果传输给其他的神经元同时进行并行处理。 6.联想记忆功能。
神经网络在训练过程中,输入端给出要记忆的模式,通过学习合理地调整网络中的权值和阈值,网络就能“记住”所有的输入信息。 7.鲁棒性(容错性)。
由于神经网络采用分布式存储信息的方式,即使网络局部受损或外部信息部分丢失也不会影响整个系统的性能,使得它比传统计算机模型具有较高的鲁棒性,而这也完全适合股市预测的需要。
19
3.5 神经网络的在实际预测模型中的问题
在前面的分析了神经网络的相关基本原理之后,对于我们下面将在具体的股市预测模型中进行的编程存在一些亟需解决的问题,主要是指:网络的初始化,网络结构的选择,学习率的选择,训练停止规则等等。其实在后面的实证分析的过程中我们就是需要通过对相同的数据进行多次不同参数的选取来寻求一种相对最优的预测方案。
3.5.1 网络的初始化即指网络权值和阈值的初始化问题,有两种方案。
1],[?0.1, 0.1]中均匀分布的随机数。 1.初值直接选择为很小的随机数:如取[?1, 2.取多组不同的初值试探。
3.5.2 网络结构的选择
神经网络的近似和泛化能力主要依靠:网络结构、训练样本数等。而网络结构又包含所选网络的层数,各个不同层的神经元个数,不同的层之间的激活函数选择以及网络学习传递的方向等。 1.网络层数
理论已经证明单隐层(两层)前向网络可以任意精度的逼近n维空间中的二次可积函数类的任意函数。因此在一般的数据处理中常用二层(单隐层)网络即可。但由于选取的单隐层网络神经元之间“相互作用”,使得模型缺少冗余性,提高映射在一个点的逼近精度而不恶化其它点的逼近程度是困难的。因此,有时也选择双隐层网络使得,第一隐层学习局部特征,第二隐层抽取整体特征。 2. 隐层神经元个数的选择
隐层神经元数的选择是一个十分复杂的问题。可以说隐层神经元的个数的选择与输入层与输出层神经元的数量、训练样本的数量和需解决的问题的复杂程度等都有直接关系。事实上,隐层神经元太少通常导致欠拟合,而隐层神经元太多通常导致过拟合,使网络缺乏泛化能力。但是目前理论上还没有一种科学的和普遍的确定方法。
一般,确定隐层神经元个数的基本原则:
1) 在满足精度要求的前提下取尽可能紧凑的结构,即选取尽可能少的隐层神经元的个数。 例如,在实际应用中一个常用的方法是:首先试着选择,网络参数个数?训练样本个数,然后,根据网络训练后的情况适当增加或减少隐层神经元的个数。
2) 若使用复杂的网络,那么避免过拟合的另一种办法是在网络得到恰当调整后停止训练。 3)在能够解决问题的前提下,再加上1到2个神经元以加快误差的下降速度即可。
实际上在处理预测模型过程中为防止过拟合可以采取交叉确认的方法。即可将可利用数据的划分:
?训练集(Training set 50%):训练网络? (Validation Set 25%): 确定最佳神经元个数?验证集?检测集(Test Set 25%): 最终选定模型的评估??如泛化误差、识别率?3.5.3 输入输出神经元个数
输入输出神经元的个数由具体预测过程所采取的训练样本和目标样本之间相关。 3.5.4 学习率的选取
通常选取很小的数诸如:0.1, 0.05, 0.01, 0.005。但如果选取太小会导致网络收敛速度过慢;选取太大又会导致网络震荡或不收敛。 3.5.5 网络训练的停止准则 1.给定迭代次数;
2.记E(k)为迭代到第k次,对应所有训练样本的平方误差,停止:E(k)?E(k?1)??;
20
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于神经网络的股票价格走势预测及其MATLAB实现——论文(4)在线全文阅读。
相关推荐: