如何实现神经网络一个神经网络

lucianlv 的BLOG
用户名:lucianlv
文章数:32
访问量:10927
注册日期:
阅读量:5863
阅读量:12276
阅读量:419883
阅读量:1108233
51CTO推荐博文
选自 TuringFinance作者:Stuart Reid机械之心编译到场:吴攀,chenxiaoqing,赵天昊,原野,微胖神经网络是机械学习算法中最盛行和最强盛的一类。但在作者看来,由于人们对神经网络事情原理存在误解,导致网络设计也很糟糕。以是这篇文章就对其中一些误解举行了讨论。神经网络是机械学习算法中最盛行和最强盛的一类。在计量金融中,神经网络常被用于时间序列展望、构建专用指标、算法生意业务、证券分类和信用风险建模。它们也被用于构建随机历程模子和价钱衍生品。只管神经网络有这些用处,但它们却往往有一个坏名声,由于它们的体现是「不行靠的」。在我看来,缘故原由在于对神经网络事情原理存在误解,导致网络设计也很糟糕。本文将对其中的一些误解举行讨论。焦点要点神经网络不是人类大脑的模子神经网络并不是统计学的「弱形式」神经网络盛行许多差别的架构规模很主要,但并不是越大越好神经网络的训练算法有许多种神经网络并不总是需要大量数据神经网络不能基于任何数据训练神经网络需要被再训练神经网络不是黑箱神经网络不难实现1. 神经网络不是人类大脑的模子人类大脑,是我们这个时代最大的秘密之一,科学家还未对其事情方式告竣共识。现在已有的关于大脑的两个理论划分叫做祖母细胞理论(grandmother cell theory)和漫衍式表征理论。前一个理论以为,单个神经元具有很高的信息容量,能够表征庞大的观点,如你的祖母或甚至 Jennifer Aniston(《老友记》女主角之一――译者)。后一个理论则以为,神经元要简朴得多,而庞大的表征漫衍在许多神经元上。人工神经网络受到了第二种理论不够准确的启发。我以为,现在这一代神经网络不具备感知(sentience,一个与智能差别观点)能力的一个缘故原由在于,生物神经元远比人工神经元庞大。大脑中的一个单个神经元就是一个极其庞大的机械,纵然在今天,我们也还不能明白它。而神经网络中的一个「神经元」只是一个极其简朴的数学函数,它只能获取生物神经元庞大性中极小的一部门。以是,若是要说神经网络模拟大脑,那也只在不够准确的启发水平上是对的,但事实上人工神经网络和生物大脑没什么相似之处。――吴恩达大脑和神经网络之间的另一个庞大差别:巨细和组织性。人类大脑包罗的神经元和突触数目远多于神经网络,而且它们是自组织和自顺应的。相对地,神经网络是凭据一个架构举行组织的。神经网络的「自组织」很是和大脑的自组织并不是一个意思,它更类似于一张图标,而不是一张有序的网络。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicF2aDxkibXFjdpGrwaPObdrALyEw0OZBzoR3pw7gUPxAv7Dc1xfdISFhQ/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />最先进的大脑成像手艺天生的有趣大脑视图以是,那是什么意思?可以这样想:神经网络受到大脑启发,就像北京的奥运体育场的设计灵感源自鸟巢。这并不意味着,该奥运体育场就是一个鸟巢,只是说,鸟巢的一些元素存在于该体育场的设计中。换句话说,大脑的元素存在于神经网络的设计中,但它们的相似水平比你想象的低得多。事实上,比起人类大脑,神经网络更靠近于曲线拟合(curve fitting)和回归剖析(regression analysis)等统计要领。我以为,在计量金融的配景中记着这一点很主要,虽说某件事物是「由大脑启发的」可能听起来很酷,可是,这一表述可能会导致不切现实的期望或担忧。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFCRS9DKDoRTuLxhXy2Kvp1fcO79ic4TcYn0ZwImQmAfjq1FzaLxviaebw/0?wx_fmt=gif" style="margin:0padding:0border:0" alt="0?wx_fmt=gif" />曲线拟合,亦即函数迫近。神经网络常被用来迫近庞大的数学函数2. 神经网络并不是统计学的「弱形式」神经网络由互连节点层组成。单个节点被称为感知器(perceptron),类似于一个多元线性回归(multiple linear regression)。多元线性回归和感知器之间的差别之处在于:感知器将多元线性回归天生的信号馈送进可能线性也可能非线性的激活函数中。在多层感知器(MLP)中,感知器按层级排布,层与层之间相互毗连。在 MLP 中有三种类型的层,即:输入层(input layer)、隐藏层(hidden layer)和输出层(output layer)。输入层吸收输入模式而输出层可以包罗一个分类列表或那些输入模式可以映射的输出信号。隐藏层调整那些输入的权重,直到将神经网络的误差降至最小。对此的一个诠释是,隐藏层提取输入数据中的显著特征,这些特征有关于输出的展望能力。映射输入:输出感知器吸收输入向量,z=(z1,z2,…,zn)z=(z1,z2,…,zn),包罗 n 个属性。该输入向量被称为输入模式(input pattern)。这些输入再通过属于感知器的权重向量 v=(v1,v2,…,vn) 举行加权。在多元线性回归的配景中,这些可被以为是回归系数或 β 系数。感知器的净输入信号通常是输入模式和其权重的总和产物。使用该总和产物获得净值(net)的神经元被称为求和单元(summation unit)。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFWHZCwDW4afGa0bqwuY96ZIfd3BXHw8QtdeZBUaL3Vux2ls5eqiaPPVQ/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />净输入信号减去误差 θ 后被输入一些激活函数 f()。激活函数通常是单调递增函数,其值位于 (0,1) 或 (-1,1) 之间(本文后面将进一步对此举行讨论)。激活函数可以是线性的,也可以是非线性的。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFV7zeJRQnLUBLK6A8mngNkQPExUY29nMnAQtI5BqbicJpiajY4icN7bpEg/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />下面是神经网络中一些常见的激活函数:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFx3JmlXhtR93T5LFG2kJ0qkTuzibdib2Y55PwMmdwyvsDUtZyCeQv3wGg/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />依次为:线性函数、阶跃函数、斜坡函数、S 型函数、双曲正切函数、高斯函数最简朴的神经网络只有一个映射输入到输出的神经元。对于给定模式 p,该网络的目的是相对一些给定的训练模式 tp 的一些一只的目的值来最小化输出信号 op 的误差。好比,若是该神经元应该映射 p 到 -1,但却将其映射到了 1,那么,凭据距离的求宁静方测定,神经元的误差为 4,即 (-1-1)^2.分层650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFQPmTIKcBwZibvhn7NyDCaYJo64mAUk5dCniaGU7SEibb2mbpiatYjKUfsw/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />如上图所示,感知器被分层举行组织。感知器的第一层被称为输入层,它吸收训练集 PT 中的模式 p. 最后一层映射到这些模子的预期输出。举一个输出的例子:模式可以是关于宁静性的差别手艺指标的数目列表,而潜在的输出则可能是 {买进、持有、卖出} 这样的分类。隐藏层则将前一层的输出作为下一层的输入;而下一层的输出又会作为另一层的输入。以是,这些隐藏层到底在做什么?一个诠释是,它们提取输入数据中的显著特征,这些特征可以展望输出。这个历程被称为特征提取(feature extraction),而且在某种水平上,其和主身分剖析(PCA)等统计手艺具有相似的功效。深度神经网络具有大量隐藏层,有能力从数据中提取越发深层的特征。最近,深度神经网络在图像识别问题上取得了异常优异的体现。图像识别中的特征提取的图示如下:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFaK9for38XjHldKmrCrehRHjC36gpq2qghophPswsudueN4TfplTUKQ/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />除了过拟合(overfitting)的显着风险,我以为,用于生意业务的深度神经网络,在使用上所面临的一个问题是该神经网络的输入险些总是经由了严重的预处置惩罚,这意味着现实可以提取的特征可能很是少,由于输入已经是某种水平的特征了。学习规则正如前面提到的那样,神经网络的目的是最小化一些错误怀抱(measure of error) ε. 最常见的错误怀抱是误差平方和(Sum squared error (SSE));只管在金融市场的应用中,这种怀抱对异常值很敏感,而且可能没有跟踪误差(tracking error)那样合适。误差平方和:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFLeGTIsM0txEib79oAYVpo8q1joy4M8pMfZ8J6RlNicDkb1XUxiaGI1LmA/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />鉴于该网络的目的是最小化 ε,我们可以使用一种优化算法调整该神经网络中的权重。神经网络最常见的学习算法是梯度下降算法,只管也可能使用其它算法和潜在更好的优化算法。梯度下降算法的事情方式是,盘算相对于神经网络中每一层的权重的误差偏导数,然后在与梯度相反的偏向上移动(由于我们想最小化神经网络的误差)。通过最小化误差,我们可以最大化神经网络在样本中的体现。数学表现神经网络(v)中的权重更新规则由下式给出:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFHL0JDJjiaibib0K3ew6yXVbCJvq3CIhKribibd0A8P59yO3MaE6KUsTWqqA/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />其中 η 是指学习率,控制着神经网络收敛的快慢水平。f 相对于模式 p 的净输入信号的偏导数的盘算是所有非一连激活函数所面临的问题,这不值一提;这也是可能使用可选优化算法的一个缘故原由。学习率的选择对神经网络的体现有很大的影响。较小值的 η 可能导致很是慢的收敛,而较高值的 η 则可能导致训练中的大量误差。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicF7iaVFUUMYBaoFp3iauUhYOHTiahVQzIVB3NbicRmSDFUBicCiaibxWiciaDwPIQ/0?wx_fmt=gif" style="margin:0padding:0border:0" alt="0?wx_fmt=gif" />小学习率慢收敛,大学习率发散总结不管我遇见过的一些统计学家信赖什么,神经网络不只是「懒人剖析师的弱形式的统计学」(之前确实有人跟我这么说,而且这还挺有趣);神经网络代表了一种可追溯到几百年前的可靠统计要领的抽象。对于神经网络背后的统计学,我推荐阅读超棒的这一章(http://page.mi.fu-berlin.de/rojas/neural/chapter/K9.pdf)。话虽云云,但我赞成,一些从业者喜欢将神经网络看作是「黑箱」,这样就可以在没有花时间相识问题的本质和神经网络是否是合适的选择的条件下,将神经网络应用于任何问题。在生意业务使用神经网络就是其中一例;市场是动态转变的,可是,随着时间的已往,神经网络假设输入模式的漫衍仍然保持静止。在《All Models are Wrong, 7 Sources of Model Risk》中可看到更详细的讨论。3.神经网络盛行许多差别的架构到现在为止,我们已经讨论了最简朴的神经网络结构,也就是多层感知器(multi-layer perception)。另有许多差别的神经网络结构(太多了,以至于难以在此提及),而且,任何神经网络的性能,是其结构和权重的一个函数。现在在机械学习领域中取得的许多前进,并非源自重新思索感知器和优化算法事情原理,而是缔造性地思索怎样融合这些组分。在下面,我会讨论一些很是有趣且富缔造性的神经网络结构,递归神经网络(RNN)――一些或所有的毗连倒流,意味着反馈环路存在于网络中。人们信赖,这些网络能够在时间序列数据上体现得更好。照此说来,在金融市场的语境中,他们可能会特殊相关。更多信息,请参见这篇很棒的文章《The unreasonable performance of recurrent [deep] neural networks.》这张图表展示了三个盛行的递归神经网络结构,即 Elman 神经网络,Jordan 神经网络与 Hopfield 单层神经网络。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFvffzelQXkdsR21vuptkDtw830wRLrc5MY81yDV6Ys2EjvWUaVSYIhA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />一个更新近、有趣的递归神经网络结构是神经图灵机械(Neural Turing Machine),联合了存储器与一个递归神经网络。事实已经证实,这些神经网络是图灵完全(Turing complete)的,并能够学习分类算法和其他盘算使命。Boltzmann 神经网络――最早的全毗连神经网络之一,也就是 Boltzmann 机。这些网络是第一批能够学习内部表征、解决很是难的组合数学问题的网络。对 Boltzmann 机的一个诠释是这样的:Hopfield 递归神经网络的蒙特卡洛版。只管云云,很难训练神经网络,可是,受到约束时,会比传统神经网络更有用。给 Boltzmann 机施加限制,最盛行的做法就是禁绝许隐藏神经元之间建设直接联系。这一特殊结构被称为受限 Boltzmann 机(Restricted Boltzmann Machine),被用于深度受限 Boltzmann 机(Deep Botlzmann Machines)。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFvffzelQXkdsR21vuptkDtw830wRLrc5MY81yDV6Ys2EjvWUaVSYIhA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />图表展示了差别的波兹曼机(带有差别节点毗连),怎样能显著影响神经网络效果深度神经网络――有着多层隐藏层的神经网络。近些年,深度神经网络已经成为最盛行的网络,由于在图像和声音识别方面,它们取得了亘古未有的乐成。深度神经网络架构数目正在迅速增加,一些最受接待的架构包罗深度信托网络(Deep Belief Networks),卷积神经网络,深度受限波兹曼机,栈化自动编码器,等等。深度神经网络最大问题之一,尤其是不稳固的金融市场情况下,是过分拟合。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFIvkOANbAfhnAe6LSQkibgyf0CM97NPbiaqk5UW0uAQQR6UicpZNvdrsHw/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />多个隐藏层组成的深度神经网络自顺应神经网络(Adaptive Neural Networks)――能够在学习中同时自顺应、并优化自身结构的神经网络。实现这一点,要么是靠生长结构(添加更多隐藏层)或压缩结构(修剪不须要的隐藏层)。我信赖,自顺应神经网络是最适合金融市场的网络,由于市场具有动态性。之以是这么说,是由于神经网络所读取的特征可能会随着时间和市场的转变而有所增强或削弱。这意味着,已往收效很好的架构也需要修改,才气在今天到达最好的效果。两个差别类型的自顺应神经网络结构。左图是级联神经网络(cascade neural network),右图是自组织映射。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFZq3yD6BibmjR4FgjdDoXh98dtMlvJhXd9ibXHia5xAdBicibkmxRR6kSZIA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />径向基函数网络(Radial basis networks)――只管从感知与毗连上来说并不是一个差别类型的结构,径向基函数网络使用径向基函数作为它们激活功效,这些是真实的主要功效,其输出从一个特定的角度来看取决于距离。最常用的径向基函数是高斯漫衍。由于径向基函数可以接纳越发庞大的形式,他们最初用于执行函数插值。因此径向基函数神经网络可以有一个更高的信息能力。径向基函数还用于支持向量机(Support Vector Machine)的内核。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFaxMHBlFuA6d54INcMKfvDibE5s2E0NEOkShsOKfENAfzrq6zAI3LMHg/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />使用径向基函数,怎样实现曲线拟合总之,有数百个神经网络结构,而且一个神经网络性能可以会显著优于另一个。有兴趣使用神经网络举行量化剖析的人,可能要测试多个神经网络结构,并联合它们的输出一起思量,要从总体上最大化他们的投资结果。使用神经网络举行生意业务之前,我建议先阅读我写的《All Your Models are Wrong,7 Sources of Model Risk》,由于内里谈到的不少问题仍然有用。4.规模很主要,但并不是越大越好选择了一个架构后,你还要决议神经网络的规模巨细。几多输入?应该使用几多隐藏神经元?又有几多要用的隐藏层(若是我们用的是深度神经网络的话)?几多输入迷经元?这些问题之以是十分主要是由于若是神经网络太大(或太小),神经网络可能会泛起过分拟合(或拟合不够),也就是说,网络无法顺遂泛化样本。该使用几多或哪些输入?输入的数目取决于待决问题、可提供数据的数目和质量,或许还需要一些缔造力。输入是一些简朴的变量,我们信赖,这些变量具有一些展望能力,可以凭据被展望的因变量举行一些展望。若是不清晰某个问题的输入,你可以系统地决议哪个变量应该被包罗在内,要领就是视察潜在自变量和因变量之间的相关性和相互关。这种要领在《What Drives Real GDP Growth?》中有详细先容。使用相关性去选择输入变量,存在两个问题。首先,若是你正在使用一个线性相关矩阵,你也许会不小心清除了有用的变量。第二,两个相对不相关变量,联合在一起,可能会发生一个强相关变量。若是伶仃视察变量,你也许会错失这一良机。为了战胜第二种问题,你应该使用主身分剖析去获取有用的特征向量(变量的线性联合),并将它们作为输入。这里的问题是,特征向量也许不能很好地泛化,而且它们还假设输入模式漫衍是牢固的。选择变量历程中会遇到的另一个问题,就是多重共线性。多重共线性是指,正被输入到模子中的自力变量中,有两个或更多的自力变量是高度相关的。在回归模子的语境下,这种情形可能会引发回归系数凭据模子或数据的细微改变而不纪律地转变。鉴于神经网络和回归模子是相似的,我嫌疑神经网络也会存在这个问题。最后,但并非不主要的是,当选择变量是基于省略变量的私见时,或许会引发统计学上的私见。当建立一个模子,这个模子遗漏了一个或者越发主要的缘故原由变量时,省略变量私见会泛起。当模子通过过分或低估某个其他变量影响的方式,不准确地赔偿遗漏的变量时,也会制造私见。好比,权重会变得过大,或SSE(误差平方和)会过大。我该使用几多隐藏神经元?隐藏单元的最佳数目,是个细节问题。这也就是说,作为一条履历规则,隐藏层越多,过分拟合风险越大。当神经网络并没有学习数据的主要统计特征,而是「影象」模式与他们可能网络到的任何噪音,过分拟合就会发生。在样本中,这个效果不错,可是,脱离样本,这个效果没有说服力。怎样制止过分拟合?在工业领域,有两种盛行的要领:早期制止(early stopping)和规则化(regularization),而我小我私家最喜欢的要领――全程检索。早期制止,包罗将训练组分为主要训练组和一个验证组。然后,不是以牢固的迭代量来训练神经网络,而是训练网络,直到它在验证组上的体现结果最先恶化。本质上,这能防止神经网络使用所有可以接触到的参数,并限制它简朴影象每一个所见模式的能力。这幅图显示了两个潜在的制止点(a 和 b)。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFUDCibPGSOAZ8DSlEplfOCId0hxibCXzlxBoQhAvBTsAAtUhqxR2pntTA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />图片展示了神经网络在a到b举行阻止后的效果与过分拟合规范化是指,神经网络使用庞大结构时,对其举行处罚。可以凭据神经网络权重巨细来权衡这一要领的庞大性。可以这样实现规范化,添加一个条件(term),求平方误差目的函数,这个函数取决于权重巨细。这相当于添加一个先验(prior),让神经网络信赖它正在迫近的函数是平滑的。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFdiaTmFIfhUfJY5ugIzKr7YGRdV6QKferWvceM9OT7p6NQ7jXv9RCggA/0?wx_fmt=jpeg" style="margin:0padding:0border:0" alt="0?wx_fmt=jpeg" />n是神经网络中的权重数值。参数α与β控制着神经网络过分拟合或拟合不足水平。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFHpGsetGF7hGd0tZVQU1XOlPIYrSiaQQYqJngtO3Qe3GvaFo7dzCKtCg/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />我最喜欢的手艺,也是到现在为止盘算最昂贵的,就是全程搜索。在这一要领中,搜索算法被用来实验差别的神经网络结构,最终做出一个近乎最佳的选择。人们经常使用基因算法来实现这个。什么是输出?神经网络能被用于回归或分类。在回归模子中,一个简朴输出值可能被会被隐射到一组真实数字,这意味着只需要一个输入迷经元。在分类模子中,针对模式可能被归入的每个潜在种别,系统需要一个输入迷经元。若是种别是未知的,我们就要使用无监视神经网络手艺,好比自组织映射。总而言之,最好的措施是遵守奥卡姆剃刀原理。奥卡姆剃刀原理主张,对于两个性能相当的模子,自由参数更少的模子,其泛化效果越加。另一方面,绝不能通过牺牲效果,来选择过分简化的模子。类似地,人们不能去假设,仅仅由于神经网络有更多的隐藏层与隐藏神经元,它就一定优于更简朴的网络。不幸的是,在我看来,人们似乎太重视大型网络,很少强调做一个好的设计决议。就神经网络而言,规模更大并不意味着效果更好。5. 神经网络的训练算法有许多种神经网络的学习算法不停实验优化神经网络的权重,直到遇到必须制止的情形。这种情形通常发生在网络的误差率降到了可接受水平时、验证集的误差率最先变差时、或指定的盘算资源预算已被耗尽时。现在最常见的神经网络学习算法是反向转播(backpropagation)算法,这种算法使用了前文提到过的随机梯度下降。反向转播包罗两个步骤:前向流传――将训练数据集通过网络,记载下神经网络的输出并盘算出网络的误差。反向转播――将误差信号反向通过网络,使用梯度下降优化神经网络的权重。这种算法存在一些问题:一次性调整所有权重将会导致权重空间中的神经网络泛起显着的转变、随机梯度下降算法很是慢、对局部最小值敏感。对于一些特定的神经网络(包罗所有的 product link 神经网络)局部最小值是一个问题。反向转播算法的前两个问题可以通过使用梯度下降算法的变体来解决,例如动量梯度下降(QuickProp)、Nesterov 加速动量(NAG)梯度下降、自顺应梯度算法(AdaGrad)、弹性反向流传(RProp)和均方根反向流传(RMSProp)。下图可以看到,变体算法相比经典梯度下降算法可以有显着的提高。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFiaoIC6VoYNPDNOMtC0FQ4CxcyWuXeNeTWfuEia3c1EM4YaWNIV4dc2Gg/0?wx_fmt=gif" style="margin:0padding:0border:0" alt="0?wx_fmt=gif" />需要指出的是,这些算法并不能完全解决局部最小值问题,而且在同时优化神经网络的架构和权重时用处也不大。为了获得所需的全局优化算法。两种盛行的全局优化算法是粒子群优化算法(PSO)和遗传算法(GA)。下面是两者可被用来训练神经网络的方式:神经网络向量表现―― 通过将神经网络编码为权重向量,每一个向量代表神经网络中一个毗连的权重,我们可以使用大部门元启发式(meta-heuristic)搜索算法来训练这种神经网络。由于向量会变得太,这种算法在训练深度神经网络上效果不佳。下图展示了将神经网络表现为向量并与搜索空间或顺应度曲面的观点相联系的方式:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFRIAC9DvOAL0LmKqpCABpkBWFhD7LXvG72vQRtHWVnUK5rsb7lm1ibOw/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />粒子群优化算法(PSO)――使用 PSO 训练神经网络可以构建一个这些神经网络的群体/集群。每个神经网络都可表现为权重的向量,并凭据它在全局最优粒子中的位置和它自身最优的情形来举行调整。在训练数据集一次前向流传之后,顺应度函数将作为重构的神经网络的误差平方和举行盘算。这个要领主要思量的是权重更新的颠簸性。由于若是权重调整的太快,神经网络的误差平方和的转变将障碍,不会发生学习行为。下图示出了在单一群体的粒子群优化算法中粒子是怎样被其它粒子吸引的。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFMH4cqNStRwchtzZXItfibiafay8QQWXU9QW3E2zy9AibpPtuibQVazUZ1A/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />遗传算法――使用遗传算法训练神经网络,首先构建一个表现神经网络的向量的群体。然后对群体应用三项遗传因子以使其逐步进化成越来越好的神经网络。这三项遗传因子是:1.选择――使用一次前向流传之后的误差平方和,对神经网络群体举行排序。群体中排名前 x %的神经网络可「生活」至下一轮,被用于杂交。2.杂交――将排名前 x %的神经网络相互混淆。这个历程天生了「子代」。这种情形下,每个子女都代表一个新的神经网络,其权重来自「亲代」神经网络。3.变异 ――这个历程是为了保持群体的基因多样性。一小部门的群体被选中举行变异。这些神经网络的部门权重将在一个特定规模内随机调整。下图展示了选择、杂交、变异遗传因子应用至由向量表现的神经网络群体的历程:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicF8ibGjMlGlwOym7D8Rziak6Miacv0HNJmmdow0ARribwdtpk839EIVNxDgw/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />除了基于群体的元启发式搜索算法,用来训练神经网络的算法还包罗加入动量的反向流传、差分进化法、Levenberg Marquardt 算法、模拟退火法等。我小我私家推荐将局部最优算法和全局最优算法相联合,来战胜两者的短处。6. 神经网络并不总是需要大量数据神经网络可以使用的三种学习计谋,包罗监视学习计谋、无监视学习计谋、增强学习计谋。监视学习需要至少两个数据集,其中训练集由输入数据和预期输出数据组成,测试集只包罗输入数据。这两个数据集的数据必须有标志,即数据模式是已知的。无监视学习计谋一样平常用在没有标志的数据中以发现隐藏结构(例如隐藏的马尔科夫链)。其行为模式与聚类算法相似。增强学习基于对神经网络好的行为夸奖,对坏的行为处罚这样一个简朴条件。由于无监视学习和增强学习计谋不需要带有标志的数据,以是它们可以应用在准确输出效果未知的非规范化问题上。无监视学习最盛行的无监视神经网络架构之一是自组织映射(Self Organizing Map,也称为 Kohonen 映射)。自组织映射本质上是一个多维量度手艺,其可在生存该数据集的拓扑结构的同时,构建一个基础数据集 Z 的概率密度漫衍函数的近似值。这是通过将数据集 Z 中的输入向量 zi 映射到特征映射 V 中的权重向量 vj (神经元)实现的。生存拓扑结构意味着若是两个输入向量在 Z 中是相邻的,那么这些输入向量用 V 所映射神经元也是相邻的。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFtNuumSDWgDJiclEefNyPTH5TIz8Yl6dRPTXnNfdGtLoGVKMykstgRrg/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />自组织映射的另一个有趣的应用是对股票生意业务的时间序列图表举行上色。这是为了显示在某一时间点的市场情形。强化学习强化学习计谋由三个部门组成:一个指定神经网络怎样举行决议的规则,例如使用手艺剖析和基本面剖析;一个区分优劣的夸奖功效,例如挣钱 vs. 赔钱;一个指定长时间目的的价值函数。在金融市场(和游戏领域)情况中,强化学习计谋特殊有用,由于神经网络可以学习对特定量化指标举行优化,例如对风险调整收益的合适量度。下图展示了神经网络可以负面或正面增强。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFuNhvibYGjZ0OyBxsD27BMPc7k683KLxWYEW8LfCcmWKmzExyGnP9s7Q/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />7. 神经网络不能基于任何数据训练神经网络可能不能事情的一个最大的问题是使用者没有对注着迷经网络的数据做适当的预处置惩罚。数据尺度化、冗余信息消除和异常点移除都应该被用以提高性能优秀的神经网络的可能性。数据尺度化――神经网络由多层感知器组成,感知器由经由加权的毗连相互毗连。每个感知器包罗一个拥有特定的「激活规模」的激活函数( 径向基函数除外)。进到神经网络的输入需要被调整到激活规模内以使神经网络可以区分差别输入模式的差异。举例来说,给定一个神经网络生意业务系统,该系统吸收证券组合中提醒需要售出或买入证券的输入和输出的指示信息。其中一个输入是证券的价钱,我们使用 S 型激活函数。然而,大多数证券的成本在每股 5 美元和 15 美元之间,在 S 型激活函数输出值靠近1.0。这样的话,所有证券的 S 型激活函数的输出值都将为1.0,所有的感知器都市失效,神经网络也无法学习。通过未处置惩罚的数据获得训练的神经网络会发生类似「the lights are on but nobodys home(灯亮着但无人在家)」的模子。异常点移除――一个异常点是指数据组中远大于或远小于其它数据的值。异常点会由于回归剖析和曲线拟合等统计手艺而泛起问题,由于当该模子试图「容纳」异常值时,模子在所有其它数据上的体现都将下降。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFHicOnNHKFkrvDNv6iaiaae2G9zEDKFVicASKwtpktd7MZcF22melTqEWug/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />上图展示了试图将异常值纳入线性回归模子所导致的数据集的糟糕匹配。异常点对包罗神经网络在内的线性回归剖析模子的影响是相似的。因此将异常点移出训练数据组是很是有须要的。冗余消除――当两个或更多被注着迷经网络的自力变量高度相关时(多元共线性),这将对神经网络的学习能力发生负面影响。高度相关的输入数据也说明晰每个变量具有的奇特信息是较少的,以是更无关紧要的输入可以被移除。移除冗余变量的另一个利益是更快的训练时间。顺应性的神经网络可以用来精简冗余的毗连和感知器。8. 神经网络需要被再训练假定你可以训练一个在样本中乐成买进和卖出的神经网络,这个神经网络也可能会随时间逐渐失效。这并非是神经网络的功效有限的体现,而是金融市场的准确反映。金融市场是庞大的自顺应系统,这意味着它们是实时转变的,以是在已往有用的模子在未来可能就可能失效。这种特征被称作非稳态或动态优化问题,神经网络并不很善于于解决此类问题。类似于金融市场的动态情况对神经网络而言是很是难以建模处置惩罚的。现有两种解决的方式要么是随时间连续再训练神经网络,要么是使用动态神经网络。动态神经网络「跟踪」情况随时间发生的转变并响应地调整它们的架构和权值。它们是自顺应转变的。对于动态问题,多重解的启发式优化算法可被用于追踪当地最优解随时间的转变。其中一个这样的算法是多集群优化算法(multi-swarm optimization algorithm),这是粒子群优化算法衍生算法。另外,增强了多样性和内存的基因算法在动态系统中被证实是稳健的。下图展示了基因算法是怎样随时间演化而找到动态系统的最优解的。该图也说明晰模拟(从众)生意业务群( mimic trade crowding)――市场到场者争相选择一个可观的市场生意业务计谋的情景,因此争抢生意业务时机让生意业务变得不那么有利可图。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicF3PeBhH0SrudUOS7PTcGvoyZvYibiaiamNFxs3N7QJdia0mLPYEib2aU1IIw/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />9. 神经网络不是黑箱神经网络自己并不是黑箱。这将问题抛给了那些想要使用神经网络工具的人,好比,基金司理不会知道一个神经网络怎样做出生意业务决议,因此也不行能评估这个神经网络学习到的生意业务计谋的风险。类似地,那些使用神经网络为信用风险建模的银行也没法合理说明为什么一位客户有着特殊的信用评级。这是一个羁系要求。话虽云云,但最先进的规则提取算法已被开发出来以透明化一些神经网络架构。这些算法从作为数学公式、符号逻辑、模糊逻辑或决议树的神经网络中提取知识。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFQCLD4NhIibbf8pszlPoPGDZgMicIFNbiczVv8n03rm7cccVuuw9qlAcaA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />数学规则――可以从神经网络中提取多重线性回归线的算法已被开发出来。这些手艺的问题在于,这些规则往往是很难明白的,因此这些要领照旧没有解决黑箱问题。命题逻辑――命题逻辑是处置惩罚在离散值变量上完成的操作的数学逻辑的一个分支。这些变量, 好比 A 或者 B ,通常要么为「真」,要么为「假」;但它们能笼罩一个离散规模里的值,如 {买进,持有,卖出}这样的规模。逻辑运算可以被应用于那些变量,好比 OR, AND 以及 XOR 。这些效果被称为谓词(predicates),可以用量词量化。这就是谓词和命题逻辑的区别。若是有个简朴神经网络,其中,价钱(P) , 简朴易懂均数 SMA,指数移动均数EM作为输入,从命题逻辑神经网络中提取出一个遵从计谋的趋势,或允许以获得类似这样的规则:650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFXuZw4RymkLSSW12v22dsOVRWNAr8utFpjO0VvFghJUuibrqFY0KsicfQ/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />模糊逻辑―模糊逻辑就是概率与命题逻辑相遇之处。命题逻辑的问题在于那是一种绝对处置惩罚。好比,买入或者出售,真或伪,0或1。 因此,生意业务者没有措施确定这些效果的可信度。模糊逻辑战胜了这一局限性,由于引入了附属函数(membership function),详细说明晰一个变量多大水平上属于某个特定域。好比,一家公司(谷歌)可能属于一个域(买入)的可信度为0.7, 属于另一个域(出售)的可信度为 0.3。将神经网络与模糊逻辑联合起来,就是神经―模糊系统。这种研究观察讨论了种种模糊规则的提取手艺。决议树――决议树向我们展示了,给定信息后,怎样做出决议。决议树推导是一个术语,指的是从神经网络中提取决议树这个历程。例如,使用决议树来表现一个简朴的生意业务计谋。三角型表现决议节点,可以是买入、持有或者出售一家公司。每个长方块表现一个元组 &indicator, inequality,="" value=""&。例如 &sma,&, 25& or &ema, &="," 30=""&。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFM1gBrz8aXz8IGkl2FttATIkhicQa7peLv52vIeLGPFibQp4KpdgYFCcQ/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />10. 神经网络不难实现从履历角度来说,自力更生举行编码,这样搭建神经网络很有挑战性。幸运的是,现在有数以百计的开源和专有包,使得使用神经网络事情起来简朴多了。以下就是相关列表,数目剖析专家可能会以为对计量金融有用。H20H2O 并不只是提供机械学习的算法包,也为使用大数据的智能应用提供了一套处置惩罚速率更快,更具可拓展性的机械学习 API 。他们的 API 提供了深度学习模子,通用加速模子和通用线性模子以及更多人工智能模子。谷歌 TENSORFLOWTensorFlow 是一项用于使用数据流图的数值盘算的开源软件库。数据流图中的节点代表数学运算符,图像边缘则代表着在此间流动的多维数据数组(tensors)。这种天真的架构资助你在桌面电脑,服务器以及移动装备的 CPU 和 GPU 上部署盘算使命,而不需要重写代码以顺应各平台。微软 DMTKDMTK 包罗以下项目:DMTK 框架(Mutiverso)――漫衍式机械学习的参数服务器框架。LightLDA ――可拓展,快速,轻量的大规模主题建模系统。漫衍式词嵌入:词嵌入的漫衍式算法。漫衍式 skipgram 混淆物:漫衍式多感知词嵌入算法。微软 Azure 机械学习这个基于微软云服务机械学习/展望剖析平台,是一个完全托管的云服务系统,可以资助你轻松地建立,设置和分享展望剖析解决方案。该软件允许你拖放预设的组件(包罗机械学习模子),用于操作流程中数据组的自界说组件。该流程图之后将被编译为可以设置为互联网服务的法式。它和更早的 SAS 公司的数据挖掘解决方案相似,除了它更现代化,更适用,支持深度学习模子,以及为客户提供 Python 和 R 语言。MXNETMXNet是一为兼顾效率和天真性而设计的深度学习框架。它允许用户混淆符号式编程和指令式编程的特点,最大化法式执行效率和你的生产效率。它的焦点,是一个自动并行化符号和指令操作符的动态依赖调理器。构建在顶层的图形优化层,使符号运算快速且节约内存。该算法库便携且轻量化,而且适配多种 GPU 和多种机械。NeonNeon 是 Nervana 的基于深度学习框架的 Python 库,在许多常见的如 AlexNet, VGG 以及 GoogLeNet 深度神经网络取得了最快速的运算体现。我们根据以下功效设计:1)支持常用模子和样例: convnets, MLPs, RNNs, LSTMs, autoencoders。2)和用于fp16和fp32 (benchmarks)的基于 Maxwell 架构的 nervanaGPU 内核亲近团结。3)基本的自动微分支持。4)可视化框架。5)可交流的硬件后端...TheanoTheano 是一个允许用户高效地界说、优化和评估包罗多维数组的数学表达式的 Python 库。它可以使用 GPU来完成高效地符号区分。Theano 和 TensorFlow 及 Torch 一样,获得了比神经网络越发普遍的应用:它是一个整合现存的或使用现成的数据结构以及算法建立的机械学习模子的人工智能框架。TorchTorch 是一个普遍支持机械学习算法的科学盘算框架...其焦点特征的摘要包罗一个 N 维数组,索引流程,切片,转置,面向 C 的接口,通过 LuaJIT,线性代数流程,神经网络,基于能源的模子,数值加速例程,快速和高效的 GPU 支持,嵌入式,面向 iOS,Andriod 和 FPGA 的端口。像Tensorflow 和 Theano,Torch 获得了比神经网络越发普遍的应用:它是一个整合现存的或使用现成的数据结构以及算法建立的机械学习模子的人工智能框架。SciKit LearnSciKit Learn 是一个用于机械学习的 Python 包,很是受接待。基于NumPy, SciPy, 和 matplotlib 开源,而且用于种种机械学习模子的实行:分类,回归,聚类,降维,模子选择和数据预处置惩罚等。正如上文提及的,现在有数以百计的机械学习包和框架。讨论解决方案之前,我建议做个适当剖析,看看哪种开源或者专属机械学习包或者软件最适合你的应用案例。总的说来,在软件工程以及针对计量金融的模子研发中,有一个需要遵照的好规则:不要重复造车轮。已经有了足够先进的模子,就不要再写自己的代码了。结 论神经网络是一种强盛的机械学习算法。建设在可靠的统计基础上,多年来,已被乐成用于金融模子以及生意业务计谋。只管云云,由于许多失败的应用实验,这些算法的名声依然欠好。在绝大多数案例中,我们可以将那些不乐成的使用案例归因于不合理的神经网络设计决议以及错误明白了这些网络的运作原理。这篇文章指出了这些误解中的一部门。当你需要相识神经网络以及它们在金融模子和算法生意业务中的作用时,可以看看这些书。650) this.width=650;" src="http://www.weiyuedu.cc/img.php?/mmbiz/KmXPKA19gWibticiaKtz3LN0eV6RxMdmhicFaTlicv2CtzSJFXvV647AbBLiaoou7BNzgkCpibicT8qicsXWXF58zCH3OibA/0?wx_fmt=png" style="margin:0padding:0border:0" alt="0?wx_fmt=png" />
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 如何实现神经网络 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信