如果您紧跟技术新闻,您可能会遇到神经网络(也称为神经网络)的概念。
例如,在2016年, Google的AlphaGo神经网络在4-1系列赛中击败了世界上最好的专业围棋选手之一。 YouTube还宣布,他们将使用神经网络更好地了解其视频。可能还会想到许多其他故事。
但是神经网络到底是什么?它是如何工作的?为何它在机器学习中如此受欢迎?
像大脑一样的计算机
现代神经科学家经常将大脑视为一种计算机。神经网络的目的相反:建立一台像大脑一样工作的计算机。
当然,我们对大脑极其复杂的功能只有粗略的了解,而是通过简化大脑的模拟过程来实现处理数据,我们可以构建一种功能与标准计算机完全不同的计算机。
计算机处理器按顺序(“按顺序")处理数据。他们一次对一组数据执行许多操作。并行处理(“一次处理多个流")通过串联使用多个处理器大大提高了计算机的速度。
在下图中,并行处理示例需要五个不同的处理器:
但是,高度的互连具有惊人的效果。例如,神经网络非常擅长识别数据中的模糊模式。
学习能力
神经网络的学习能力是其最大的优势。使用标准的计算体系结构,程序员必须开发一种算法,该算法告诉计算机如何处理传入的数据,以确保计算机输出正确的响应。
输入输出响应可能很简单“当按下A键时,在屏幕上显示'A'"或与执行复杂统计一样复杂。另一方面,神经网络不需要相同类型的算法。通过学习机制,他们可以从根本上设计自己的算法,以确保其正确执行。
需要注意的是,由于神经网络是在使用标准串行处理硬件的机器上编写的软件程序,因此当前的技术仍在实施限制。实际上,构建神经网络的硬件版本完全是另一个问题。
从神经元到节点
现在,我们已经为神经网络的功能奠定了基础,我们可以开始看一些细节。人工神经网络的基本结构如下所示:
每个圆都称为“节点",它可以模拟单个神经元。
在最基本的意义上,输入节点接受输入值,该值可以是二进制1或0,在左侧是输入节点,在中间是隐藏节点,在右侧是输出节点。 RGB颜色值的一部分,棋子的状态或其他任何东西。这些节点代表流入网络的信息。
每个输入节点都连接到许多隐藏节点(有时连接到每个隐藏节点,有时还连接到一个子集)。输入节点将获得的信息传递给隐藏层。
例如,如果输入节点收到一个信息,则它可能会发送信号(以神经科学的说法是“开火")。 1,如果接收到零,则保持休眠状态。每个隐藏节点都有一个阈值:如果所有的总和输入都达到某个值,则将触发。
从突触到连接
每个连接都相当于解剖上的突触,还给定了特定的权重,这使网络可以更加强调特定节点的操作。这是一个示例:
如您所见,连接B的权重高于连接A和C的权重。假设隐藏节点4仅在总输入等于或大于2时才会触发。这意味着如果1或3自行触发,则不会触发4,而1和3一起触发节点。节点2也可以通过连接B自行触发该节点。
让我们以天气为例。假设您设计了一个简单的神经网络来确定是否应该有冬季风暴警告。
使用上述连接和重量,节点4仅在温度低于0 F且风速超过30 MPH时才会着火,否则如果下雪的几率超过70%,它将触发。温度将被送入节点1,风被送至节点3,降雪的可能性被送入节点2。现在,节点4在确定要发送到输出层的信号时可以考虑所有这些因素。
更好比简单逻辑
当然,可以使用简单的AND / OR逻辑门来简单地实现此功能。但是更复杂的神经网络(如下图所示)能够进行更复杂的操作。
输出层节点的功能与隐藏层的功能相同:输出节点将隐藏层的输入求和,如果它们达到某个值,则输出节点将触发并发送特定信号。在此过程的最后,输出层将发送一组指示输入结果的信号。
虽然上面显示的网络很简单,但深度神经网络可以有许多隐藏层,而且有数百层
纠错
到目前为止,该过程相对简单。但是神经网络真正发挥作用的地方在于学习。大多数神经网络使用称为反向传播的过程,该过程通过网络向后发送信号向后。
在程序员部署神经网络之前,他们通过一个培训阶段,在该阶段中,它将收到一组具有已知结果的输入。例如,程序员可能会教一个神经网络来识别图像。输入可能是汽车的图片,正确的输出将是单词“汽车"。
程序员提供图像作为输入,并查看输出节点中的内容。如果网络以“飞机"做出响应,则程序员会告诉计算机这是不正确的。
然后,网络将对其自身的连接进行调整,从而改变节点之间不同链接的权重。此操作由添加到网络的特定学习算法指导。网络会不断调整连接权重,直到提供正确的输出为止。
这是一种简化,但是神经网络可以使用相似的原理来学习高度复杂的操作。
持续改进
即使经过训练,反向传播仍会继续-这是神经网络变得非常酷的地方。他们会在使用过程中继续学习,集成新信息并调整不同连接的权重,从而在他们设计的任务上变得越来越有效。
这可能很简单像图像识别或像玩Go一样复杂。
通过这种方式,神经网络一直在变化和改进。这可能会产生令人惊讶的影响,导致网络优先考虑程序员本来不会想到的事情。
除了上面概述的过程外,这称为监督学习 ,还有另一种方法:无监督学习。
在这种情况下,神经网络会接受输入并尝试使用反向传播更新其连接以在其输出中准确地重新创建它。这听起来像是徒劳的活动,但是通过这种方式,网络学会了提取有用的特征并对这些特征进行概括以改进其模型。
深度问题
反向传播是一种非常有效的方法教神经网络的一种方法……当它们只有几层深时。随着隐藏层数的增加,反向传播的有效性降低。这是深度网络的问题。使用反向传播,它们通常不比简单网络更有效。
科学家为这个问题提出了许多解决方案,这些解决方案的细节非常复杂,超出了本文的介绍范围。简单地说,这些解决方案中的许多尝试试图通过训练网络“压缩"数据来降低网络的复杂性。
为此,网络学会了提取较小的网络。输入的多个识别特征,最终使其计算效率更高。实际上,网络正在以与人类学习相同的方式进行概括和抽象。
在学习之后,网络可以修剪它认为不那么重要的节点和连接。这样可使网络更高效,学习也变得更容易。
神经网络应用
因此,神经网络通过使用多层节点(输入,隐藏和输出)来模拟大脑的学习方式,他们能够在有监督和无监督的情况下学习。复杂网络能够进行抽象和泛化,从而使它们更有效,更易于学习。
我们可以使用这些引人入胜的系统做什么?
理论上,我们可以使用神经网络网络几乎可以解决任何问题。您可能没有意识到就一直在使用它们。例如,它们在语音和视觉识别中非常常见,因为它们可以学习挑选出声音或图像共有的特定特征。
So when you ask Siri where the nearest gas station is, your iPhone is putting your speech through a neural network to figure out what you’re saying. There may be another neural network that learns to predict the sorts of things you’re likely to ask for.
自动驾驶汽车可能使用神经网络来处理视觉数据,从而遵循道路规则并避免碰撞。各种类型的机器人都可以从神经网络中受益,这些网络可以帮助他们学习有效完成任务。电脑可以学习玩象棋,围棋和 Atari 经典游戏。如果您曾经与聊天机器人进行过交谈,那么它很有可能正在使用神经网络来提供适当的响应。
互联网搜索可以从神经网络中受益匪浅,因为高效的并行处理模型可能会引起混乱快速处理大量数据。神经网络还可以学习您的习惯,以个性化您的搜索结果或预测您不久的将来要搜索的内容。该预测模型显然对营销人员(以及需要预测复杂的人类行为的其他人)非常有价值。
图像识别,光学字符识别,股票市场预测,路线查找,大数据处理,医疗成本分析,销售预测,视频游戏AI…可能性几乎是无限的。神经网络学习模式,进行概括并成功预测行为的能力使其在无数情况下都具有价值。
神经网络的未来
神经网络已从非常简单的模型中发展而来进行高度复杂的学习模拟。它们位于我们的手机,平板电脑中,并运行着我们使用的许多网络服务。还有许多其他的机器学习系统。
但是神经网络由于其与人脑的相似性(以非常简化的方式)而令人着迷。在我们继续开发和完善模型的过程中,并没有说出它们的功能。
您知道神经网络的任何有趣用途吗?你自己和他们有经验吗?您对这项技术最感兴趣的是什么?在下面的评论中分享您的想法!