基于BP神经网络的股市分析

[摘要]神经网络领域已经有50年历史了,但是实际应用却在最近15年里,特别是近几年来,神经网络已经成为热点研究领域,已经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、鉴定、函数拟合、分类、语音、翻译和控制系统。

股票市场是一个非线性的系统,本文基于BP神经网络,以1998年~2008年的上证股市大盘增幅数据作为训练,对以后的一年多数据进行验证,以证实神经网络对股市的预测。

[关键词]BP神经网络股票市场预测验证

一、 神经网络概述

人工神经网络是由大量处理单元广泛互联而成的网络,是对人脑的抽象、简化和模拟,反映人脑的基本特性,它与人脑的相似之处概括为两个方面:一是通过学习过程利用神经网络从外部环境中获取知识;二是内部神经元(突触权值)用来存储获取的知识信息。

一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。如图1.1所示:

图1.1 输入/目标对应的方法图

1.人工神经元

人工神经元是生物神经元的模拟与抽象,是构成人工神经网络的基本单元,因此构造一个人工神经网络系统,首先要构造人工神经元模型。一个具有n个输入分量的单个神经元模型如图所示:

图1.2 单 个 人 工 神 经 元 模 型

人工神经元的三个基本要素:

(1)一组连接,连接强度由各连接上的权值表示,权值为正表示激活,为负表示抑制。

(2)一个求和单元,用于求取各输入信号的加权和。

(3)一个非线性激活函数,起非线性映射作用并将神经元输出幅度限制在一定范围内(一般限制在[0, 1」或[-1, +1]之间)。

此外还有一个偏差,即与阈值θ

人工神经元相当于一个多输入单输出的非线性阈值器件。这里 的表示它的n个输入,表示与它相连的n个突触的连接强度,对应于生物神经细胞的膜电位;o表示这个人工神经元的输出;θ表示这个人工神经元的阈值.如果输入信号的加权和超过θ,则人工神经元被激活。这样,人工神经元的输出可描述为,式中,表示神经元的输入输出关系的函数称为激活函数或输出函数。

人工信息元的信息处理过程分为三个部分,首先完成输入信号与神经元连接强度的内积运算,然后再将结果通过激活函数,再经过阈值的判断,如果输入值大于阈值门限,则神经元被激活,否则处于抑制状态。

2.人工神经网络模型

人工神经网络是由大量的神经元按照一定的模式(层内连接、循环连接和层间连接)相互连接而成的。按一定规则将神经元连接而成神经网络,才能实现对复杂信息的处理与存储。经过几十年的兴衰,人们己经发展了上百种人工神经网络,但大部分网络都是几种典型网络的变形和组合。一般地说,人工神经网络的连接形式和拓扑结构可分为两大类:即分层型和互联型神经网络。分层型神经网络又分为简单的前馈网络、反馈型前馈网络、和内层互联前馈网络。

二、 BP网络理论

1.BP网络概述

目前,在众多神经网络中,误差反向传播(Error Back Propagation)网络由于其良好的逼近能力和成熟的训练方法而得到了最为广泛的应用。BP网络由Rumelhat等人于1985年建立,它是一种多层前馈神经网络,由一个输入层、一个输出层和若干个隐含层所组成。位于同一层的单元之间不允许有连接,各层的单元只能向高层的单元输出激活信号。BP算法是用于前馈多层网络的学习算法,前馈多层网络的结构一般如图2.1所示

BP网络含有输入层、输出层以及处于输入输出层之间的中间层。中间层有单层或多层,由于它们和外界没有直接的联系,故也称为隐层。在隐层中的神经元也称隐单元。隐层虽然和外界不连接.但是,它们的状态则影响输入输出之间的关系。这也是说,改变隐层的权系数,可以改变整个多层神经网络的性能。

2. BP网络的学习过程

BP网络采用有教师的学习规则,其算法的核心是通过一边向后传播误差,一边修正误差的方法来不断调节网络参数(权、阀值),以实现或逼近所希望的输入、输出映射关系。它对每一个学习过程进行两趟传播计算

(1)工作信号正向传播

输入信号从输入层经隐含层,在输出端产生输出信号。在信号的向前传递过程中网络的权值保持不变,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入误差信号的反向传播。

(2)误差信号反向传播

网络的实际输出与期望输出之间差值即为误差信号,误差信号由输出端逐层向前传播。在误差信号反向传播的过程中,网络的权值由误差反馈进行调解。通过权值的不断修正使网络的实际输出更接近期望输出。

3.BP算法的改进

在实际应用中,传统的基于标准梯度下降法的BP算法在求解实际问题时很难胜任。为此,人们在标准BP算法的基础上进行了许多有益的改进,主要目标是为了加快训练速度,避免陷入局部极小值和改善其能力。改进后的BP网络的训练收敛速度比标准梯度下降法快数十倍乃至数百倍。

BP算法的改进分为两类,一类是基于标准梯度下降法的算法改进,如动量、自适应学习速率法、弹性BP法等;另一类是基于数值优化方法的改进,如共轭梯度法、拟牛顿法、LM算法等。这里介绍最常用的两种方法:动量法、自适应学习速率法。

(1)附加动量的BP算法

标准BP算法的权值调节公式为,式中,为本次权值校正量,k为训练次数,为学习速率,为节点误差,为该节点相应的输入值。

附加动量法每一次对连接权或输出阈值进行校正时,按一定比例加上前一次学习时的校正量,即动量项,由此加速网络学习的收敛速度。具体做法是,上式中,mc为动量因子(0

该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比前次权值变化量的值,并根据反向传播法来产生新的权值变化。

附加动量法的实质是将最后一次权值的影响,通过一个动量因子来传递。当动量因子取值为零时,权值的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了。以此方式,当增加了动量后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,将变得很小,于是,从而防止了的出现,有助于使网络从误差曲面的局部极小值中跳出。

根据附加动量法的设计原理,当修正的权值在误差中导致太大的增长结果是,新的权值应被取消而不被采用,并使动量作用停止下来,以使网络不进入较大误差曲面;当新的误差变化率对其旧值超过一个事先设定的最大误差变化率时,也得取消所计算的权值变化。其最大误差变化率可以是任何大于或等于1的值。典型的值取1.04。所以在进行附加动量法的训练程序设计时,必须加进条件判断。

训练程序中对采用动量法的判断条件为:

式中,k为训练次数,SSE为网络误差平方和。

附加动量的引入可使网络在修正其权值时,不仅考虑局部的梯度信息,而且考虑误差曲面最近的变化趋势,其作用如同一个低通滤波器,它允许网络忽略网络上的微小变化特性。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用则有可能滑过这些极小值 。

(2)自适应学习率调整的BP算法

在标准BP算法的权值调节公式中, 是步长,表示学习速率,在训练过程中始终保持不变。对于一个特定的问题,要选择适当的学习速率不是一件容易的事情。通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不见得对后来的训练合适。为了解决这一问题,人们希望在训练过程中,自动调整学习速率。通常调节学习速率的准则是:检查权值的修正值是否真正降低了误差函数,如果确实如此 ,则说明所选取的学习速率可能小了,可以对其增加一个适当的量,若不是这样,而产生了过调,那么就应该减小学习速率的值。

自适应学习率调整的基本思想是:在保持训练稳定的前提下,使每次用于修正权值的迭代步长尽可能大。较大时,权值的修改量较大,学习的速率就比较快,但有时可能产生振荡,即误差 总不能小于某个特别小的值。而当取较小值时,学习的速率就较慢,但一般比较平稳,将使计算量变得很大。自适应学习率调整这一策略在误差增加不太大的范围内,能提高学习速率,在局部区域内获得有一个近最优的学习速率,从而得到比标准BP算法更快的收敛速度。

下式给出了一种自适应学习速率的调整公式

式中,k为训练次数,SSE为网络误差平方和。

初始学习速率的选取范围可以有很大的随意性。

与采用附加动量时的判断条件相仿,当新误差超过旧误差一定的倍数时,学习速率将减小,否则其学习速率保持不变;当新误差小于旧误差时,学习速率将被增加。此方法可以保证网络总是可以以最大可接受的学习速率进行训练。当一个较大的学习速率仍能够使用网络稳定学习,使其误差继续下降,则增加学习速率,使其以更大的学习速率进行学习。一旦学习速率调得过大,而不能保证误差继续减少,则减少学习速率直到使其学习过程稳定为止。

4.提高网络的推广能力

推广能力(Generalization)是衡量神经网络性能好坏的重要标志。所谓推广能力,就是指神经网络对训练样本以外的新样本数据的正确反映能力。一个“过度训练”(overtraining)的神经网络可能会对训练样本集达到较高的匹配效果,但对于一个新的输入样本矢量却可能会产生与目标矢量差别较大的输出,即神经网络不具有或具有较差的推广能力。

网络设计完成后,要运用样本集进行训练。对推广能力的测试不能用训练集的数据进行,而要用训练集以外的测试数据来进行检测。一般的做法是,将训练集的可用样本随机的分成两部份;一部分作为训练集,一部分作为测试集。隐层 结点数一定的情况下,为了获得好的推广能力存在一个最佳训练次数。

三、 基于BP神经网络的股市验证

我们选取上证股市大盘在1998年3月10号到2009年12月2号间的大盘每日涨幅数据作为训练样本和预测样本,训练样本区间选择1998年3月10日-2008年5月21号,共2466个大盘每日涨幅。预测样本为2008年5月22号-2009年12月2号的大盘每日涨幅,共375个数据。

为了加快网络的收敛性,我们对收益率数据进行归一化处理,采用MATLAB的premnmx函数,将收益率数据变成的取值为(-1,1)之间的数据。网络训练和仿真完成后再采用MATLAB的postmnmx函数将数据反归一化变成实际需要的收益率数据。

1.网络结构设计

神经网络结构设计主要需要确定输入输出的节点数、网络层数、隐层节点数等。由于上证综指收益率数据具有混沌特性,根据 《证综指日收益率的混沌特性》这个论文得相空

其中取时间延迟τ=25,嵌入维数m=12。网络的输入节点数取嵌入维数12,将作为输入。网络的输出节点数取1,目标输出

为。

网络层数:1989年Robert Hecht-Nielson证明了对于任何在闭区间内的一个连续函数都可以用一个隐层的BP网络来逼近,因而一个三层的BP网络可以完成任意的N维到M维的映射。基于以上定理我们一般选取一个隐层的BP网络就可以了。增加层数主要可以更进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差精度的提高实际上也可以通过增加隐层中的神经元数目来获得,其训练效果也比增加层数更容易观察和调整。

隐层神经元的选取:隐层神经元的作用是从样本中提取并存储其内在规律,每个神经元有若干个权值,而每个权值都是增强网络映射能力的一个参数。网络训练精度的提高,可以通过采用一个隐层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐层要简单的多。

那么究竟选取多少个隐层节点才合适?神经元数量太少,网络从样本中获取信息的能力就差,不足以概括和体现样本规律;神经元数量过多,又可能把样本中非规律性的内容,如噪声等也学会记牢,从而出现所谓“过度吻合”问题。因此,如何确定一个适当的神经元个数是我们要着重考虑的问题。Gorman曾认为隐点数s与模式数N的关系为s=log2N,但大多数情况并非如此,网络修剪与增长方法都是根据网络收敛性能的好坏来决定隐点节数的增减,不仅具有很大的盲目性,而且是很费时间的过程。江苏理工大学信息科学研究所的高大启教授在他的论文《有教师的线性基本函数前向三层神经网络结构研究》中给出了三层网络的隐点数经验公式,其中,s为隐点数,m为输入节点数,n为输出节点数。在实际应用,由这个公式确定的隐点数效果较好。本文中m=12,n=1,求出隐层节点数s=7。

网络激活函数的选取:由于归一化后的数据的取值范围在(-1,1)之间,所以本文采用双曲正切S型函数

网络的训练方法:采用将附加动量法和自适应学习率法结合起来使用的改进的BP算法。

2.网络训练与仿真

本文运用MATLAB程序对上文设计好的神经网络进行训练,训练样本区间选择1998年3月10日-2008年5月21号,共2466个大盘每日涨幅,如图1.10。

将训练好的神经网络模型用于仿真2008年5月22号-2009年12月2号的大盘每日涨幅,共375个数据。得到的预测值与真实值见附录,图形见图1.11。

图3.2 神经网络预测值与真实值图

四、 总结和展望

目前,非线性经济学在资本市场定价方面的研究仍在不断发展中,研究热点主要集中在两个方面:一是对股票价格是否存在非线性甚至是混沌的诊断研究;二是试图建立非线性模型来研究股票价格定价及其变动。迄今为止。资本市场上存在非线性的现象得到较广泛的实证支持。但是否存在混沌,还存在较多的疑问,并没有得到最终的定论。但无论如何。非线性经济学对传统经济学基础的挑战是不容忽视的,它为资本市场定价的研究开辟了一个新的视野,使资本市场的定价行为的研究更接近这种行为本身的真实状况。因此,它在很大程度上预示着资本市场定价理论的未来发展的一个方向。

参考文献:

[1]陈其安,杨秀苔:中国股市的收益分布特征[J]. 统计与决策. 2005,04: 110-112

[2]杜修立:涨跌幅限制对中国股市结构及有效性的经验分析[J]. 财经问题研究. 2006,12:54-58

[3]杨再斌:我国证券市场股价运动非线性特征检验[J]. 上海立信会计学院学报. 2006,7:78-83

[4]葛哲学孙志强:神经网络理论与matlab2007实现[M]. 电子工业出版社. 2008年5月

[5]黄诒荣:中国股市分形结构:理论与实证[M].中山大学出版社. 2006.3月

[6]Martin T. Hagan、 Howard H. Demuth Mark H. Beal.神经网络设计[M]. 机械工业出版社. 2002.9

[7]高大启:有教师的线性基本函数前向三层神经网络结构研究[J]. 计算机学报. 1998.1:80-86

推荐访问:神经网络 股市 分析 BP