开发者社区> 【方向】> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

被错误理解的人工神经网络(二)!

简介: 那些年我们错误理解了人工神经网络,想知道错在什么地方吗?快来学习一下吧。
+关注继续查看

让我们继续谈谈关于人工神经网络的误解:神经网络体系结构很少,越大型的神经网络就越好?

被错误理解的人工神经网络(一)!

神经网络并非只有一种体系结构

在第1部分中,我们讨论了最简单的神经网络体系结构:多层感知器。在实际操作中,有许多不同的神经网络体系结构,任何神经网络的性能都是其体系结构和权重的函数。机器学习领域的许多现代进步并非来自于重新思考感知器和优化算法的工作方式,而是来自创造性地关注这些组件如何组合在一起。下面,我将讨论一些随着时间推移而发展的非常有趣和创造性的神经网络架构。

递归神经网络中,部分或全部连接向后流动,这意味着网络中存在反馈机制。这也是递归神经网络在时间序列数据上表现更好的原因。因此,它们可能在金融市场的情况下特别重要。想要了解更多信息,可以了解一下这篇文章

231d3e3e9ab03c5ca1903cdad4a89d0d5d487b0b 

该图显示了三种流行的递归神经网络架构——即Elman神经网络,约旦神经网络和Hopfield单层神经网络

Neural Turing Machine是一个近期有趣的递归神经网络体系结构,该网络将递归神经网络架构与存储器结合在一起,它能够学习排序算法和其他计算任务。

第一个完全连接的神经网络是Boltzmann神经网络,AKABoltzmann机器,这些网络是第一个能够学习内部表示并解决非常困难的组合问题的网络。Boltzmann机器的一个解释:它是Hopfield递归神经网络的蒙特卡罗版本。尽管如此,神经网络依然很难训练。但是,当受到限制时,它们可以证明比传统的神经网络更有效,Boltzmann机器上最受欢迎的约束是禁止隐藏的神经元之间的直接连接。这种特殊的体系结构被称为限制玻尔兹曼机器,它被用于深博特尔曼机器中

 847aa6e3cb53cc0e3be7449c290fa9d8f74aa1b5

该图显示了不同波尔兹曼机器在不同节点之间的连接可以显着影响神经网络的结果(网络右侧的图)

深度神经网络中,存在多个隐藏层的神经网络。由于在图像识别和语音识别问题上取得了无与伦比的成功,深度神经网络在近年来变得非常流行。深层神经网络架构增长得很快,比如深信念网络卷积神经网络,深受限玻尔兹曼机,堆放自动编码器等等。深度神经网络的一个最大问题就是在非平稳金融市场的情况下,就是过度拟合。

 923b139baf8de709bd34bdb806cc44c0f2aa4021

该图显示了由多个隐藏层组成的深层神经网络

自适应神经网络是可以在学习的同时调整和优化其架构的神经网络。这是通过增长架构(增加更多隐藏的神经元)或缩小它(修剪不必要的隐藏的神经元)来完成的。我相信自适应神经网络最适合金融市场,因为金融市场是非平稳的。我这样说是因为神经网络提取的特征可能会随着时间的推移而增强或减弱,这取决于市场动态。这意味着任何在过去最佳工作的体系结构都需要进行修改,以适应今天的工作方式。

 d72965f26d321a1bbf3a8e6c55efa11518f9c1aa

该图显示了两种不同类型的自适应神经网络架构。左图是级联神经网络,右图是自组织映射图

尽管在感知和连接方面没有不同类型的体系结构,但是径向基(RBF)网络使用径向基函数作为它们的激活函数,它们是实值函数,其输出取决于与特定点的距离,最常用的径向基函数是高斯分布。由于径向基函数可以采用更复杂的形式,它们最初是用于执行函数插值。因此,使用径向基函数的神经网络可以具有更高的信息容量,径向基函数也是支持向量机的核心。

 360115b1018180e5793d79611cd273be47cb11c5

该图显示了如何使用径向基函数完成曲线拟合。

总之,现实中存在数百种神经网络架构,并且一个神经网络的性能可以明显优于另一个。因此,对神经网络感兴趣的定量分析人员应该测试多个神经网络架构,并考虑将它们的输出组合在一起以最大化他们的投资绩效。 

神经网络的尺寸问题,但更大并不总是更好

选择了架构之后,必须决定神经网络的大小。需要多少输入?使用多少个隐藏的神经元?使用多少隐藏层?需要多少输出神经元?这些问题很重要的原因是因为如果神经网络太大(或太小),神经网络可能会过度拟合(或欠适合)数据,那么这将意味着网络不能很好地从样本中泛化。

那么应该使用多少个和那些输入呢?

投入的数量取决于正在解决的问题——可用数据的数量和质量,以及可能产生的一些创造性。投入是简单的变量,我们认为这些变量对预测的因变量具有一定的预测能力。如果问题的输入不明确,则可以通过查看潜在的自变量与因变量之间的相关性来系统地确定应包含哪些变量。 

使用相关性选择输入变量有两个问题。首先,如果你使用的是线性相关性度量标准,则可能会无意中排除有用的变量。其次,两个相对不相关的变量可能会结合起来产生强相关变量。如果你单独看变量,你可能会错过这些机会。为了克服第二个问题,你可以使用主成分分析来提取有用的特征向量作为输入。也就是说,一个问题是特征向量可能不能很好地推广,并且他们也假设输入模式的分布是平稳的。

选择变量的另一个问题是多重共线性。多重共线性是当两个或多个自变量被输入模型时高度相关。在回归模型的背景下,这可能会导致回归系数随着模型或数据的微小变化而不规律地改变。鉴于神经网络和回归模型是相似的,我怀疑这对神经网络也是一个问题。

最后,但并非最不重要的是,当选择变量时可能引入的统计偏差被省略了。当一个模型被创建时遗漏了一个或多个重要的因果变量,就会出现省略变量偏差。当模型通过超出或低估其他变量之一的影响来错误地补偿缺失变量时,就会产生偏差,例如,这些变量的权重可能变得过大或者SSE很大。

你应该使用多少隐藏的神经元?

隐藏单元的最佳数量是根据问题而定的。这就是说,根据一般的经验法则,使用的隐藏单位越多,过度拟合的风险就越有可能发生。过度拟合是指神经网络不知道数据的基本统计属性,而是通过“记忆”模式记住训练集的数据。这导致神经网络在这个训练集中表现良好,但在之外的数据库中表现很差。那么,我们如何避免过度拟合呢?在行业中有两种流行的方法,即提前停止和正规化,然而我个人最喜欢的方法是全局搜索。

提前停止是将你的数据集分成训练集和验证集。然后,不是训练神经网络进行固定次数的迭代,而是训练到验证集上神经网络的性能开始变差。实质上,这阻止了神经网络使用所有可用的参数,并限制了它简单记住它所看到的每个模式的能力。右侧的图像显示了神经网络的两个潜在停止点(ab)。

70cc5bc26d1b938cea72de600b0a984f645ec2a3

下图显示了停止在a或b时的神经网络的性能和过度拟合。

 e30c0e537c70ec3d1a72fef1ac2d64143103e5d2

正则化是使用复杂体系结构的神经网络。这种方法的复杂性是通过神经网络权重的大小来衡量的。正则化是通过向求和平方的误差目标函数添加一个项来完成的,该项取决于权重的大小。这相当于增加一个先验值,这实际上使得神经网络相信它近似的函数是平滑的。

f4f440a193527b029fda339ace3453057c848d33

其中n是神经网络中权重的数量,参数αβ控制神经网络过度拟合或不适合数据的程度。使用贝叶斯分析和优化可以导出αβ良好值。这个和上面的内容在这个精彩的文章中有更详细的解释。

b08b72f89736d90e4329b12d4b83458682f6014d 

我最喜欢的技术也是迄今为止计算量最大的技术,它是全球搜索。在这种方法中,搜索算法用于尝试不同的神经网络架构并达到近乎最佳的选择。这通常是使用本文中进一步讨论的遗传算法完成的。

什么是输出?

神经网络可以用于回归或分类,在回归模型下,输出单个值可映射到一组实数,这意味着只需要一个输出神经元。在分类模型下,模式可能属于的每个潜在类,所以每个类都需要一个输出神经元。如果这些类是未知的,则应该使用无监督的神经网络技术,例如自组织映射。

总之,最好的方法是参考奥卡姆的剃刀原理。奥卡姆的剃刀原理认为,对于两个等效性能模型,具有较少自由参数的模型更容易推广。另一方面,不应该以性能为代价来选择过于简单化的模型。同样,不应该假定仅仅因为神经网络具有更多隐藏的神经元、具有更多的隐藏层,它就胜过更简单的网络。相反,在我看来,太多的注意力放在大型网络上,而导致放在做出好的设计决策上太少。在神经网络的领域,更大并不总是更好。

  数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由阿里云云栖社区组织翻译。

文章原标题《artificial-neural-networks-some-misconceptions》,

作者:Jayesh Bapu Ahire  译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【人工智能】神经网络优化:复杂度学习率、激活函数、损失函数、缓解过拟合、优化器 1
【人工智能】神经网络优化:复杂度学习率、激活函数、损失函数、缓解过拟合、优化器
6 0
神奇的卡尔曼滤波,目标追踪的福音
神奇的卡尔曼滤波,目标追踪的福音
29 0
个人对赋值、浅拷贝和深拷贝的理解
个人对赋值、浅拷贝和深拷贝的理解
46 0
JAVA编程:i=i++的理解
JAVA编程:i=i++的理解
40 0
.net 实现GZip页面压缩
private void Application_BeginRequest(object sender, EventArgs e) { var context = HttpContext.
682 0
编写通用的ASP防SQL注入攻击程序
        SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的,哎,谁让这个入门容易呢,好了,不说废话了,现在我开始说如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。
1182 0
+关注
【方向】
欢迎各位对内容方向及质量提需求,我们尽量满足,将国外优质的内容呈现给大家!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
机器能理解上下文吗-RNN和LSTM神经网络的原理及应用
立即下载
机器能理解上下文吗 RNN和LSTM神经网络的原理及应用
立即下载
神经网络结构设计
立即下载