独家 | 一文读懂人工神经网络

简介:

当听到“神经”这个词的时候,首先出现在我脑海中的是大脑中的神经元,这是我们决策过程的一部分。

这也是人类与机器人(或正常的计算机程序)主要的不同特征之一。人类可以看到事物,分析事物,并且从中学习,以期下次做得更好。

另一方面,常规程序也遵循着同样的指示,而不是自行发展。我们可以对其进行编程让它们完成某些指定任务,根据指令得到理想的结果。

但是如果我们制定程序对其进行学习,我们可以做很多事情。然后它们会随着时间的推移自行发展,这就是“机器学习”。人工神经网络(ANN)是一种用于机器学习的计算模型,它的工作方式和生物的神经元类似。

当信息到达神经元,它们(神经元)通过调整网络去感知和获取这些信息得出一个理想的结果。通过神经元传输尽量多的数据会有助于得到更精准的结果。这就是神经网络中的“训练”。

在使用神经网络之前,我们需要训练和调试,以得到理想的决策结果。为此,我们使用测试数据,包括输入进网络和相对应的预期的输出。通过适当的训练,对网络进行教学,之后就可以用它对未知的数据做出决策。

从根本上来讲,人工神经网络被用于那些输入和输出之间存在复杂关系的非线性统计数据模型。训练的主要目的是发现那些数据中的复杂关系和模式。 

“人工神经网络(英文:artificial neural network,缩写ANNs),简称神经网络(英文:neuralnetwork,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,通常是通过一个基于数学统计学类型的学习方法(LearningMethod)得以优化。——维基百科”

在需要基于计算机的预测中,神经网络非常常见。通常情况下,他们能够做出精准的预测。一部分应用于股市趋势的预测、手写识别、语音识别、土地滑坡预测等。另外像Facebook这样的社交媒体和Google这样的搜索引擎也使用神经网络来丰富用户体验。

神经网络存在许多种类:

  • 前馈神经网络
  • 循环神经网络
  • 常规反馈神经网络
  • 径向性神经网络

“前馈”网络是最早也是最简单的一种。在这种神经网络类型中,数据从输入层到隐藏层最后到输出层,没有循环或其他环形传输路线。

331f7c00c9427b0cab723379a1d9f3108bf8ebe7

NeuralNetworkwith multiple layers (https://blog.ttro.com/wp-content/uploads/2017/01/TB010-Deep-Neural-Network.jpg)

另一方面,循环神经网络中,数据前向也后向地传输着。在预测次序的时候,循环神经网络的输出也被用作输入。

我在YouTube上找到的一个简单例子来帮助理解这个概念(https://www.youtube.com/watch?v=ZzWaow1Rvho)。有红色和蓝色两种花,它们的宽度和长度的样本数据已经给出。要求使用这些已知的数据预测未知的花朵的颜色。

95e10b3c7f43b5ab087ba4ce17c1ea4e205c488c

这里使用前馈神经网络来预测正确的花朵(颜色)。我们将使用Python和Numpy库来实现。你可以通过安装“Miniconda”(https://conda.io/miniconda.html)来建立此模型。

这个简易的神经网络有花瓣的长度和宽度两个输入,输出是0或1,表示红色或蓝色。

6112bf7d95bd3682c51ce1cfa1b93963f97a0424

Oursimple neural network 

这个网络的最终输出是0或1,我们使用一个特别的函数,在这里叫做“Sigmoid”,它将任何值转换到0和1的范围内。根据它接近0或1的程度进行预测。

“Sigmoid函数是一个拥有“S”形曲线(sigmoid曲线)的数学函数。通常情况下sigmoid函数指的是逻辑函数的特例。”

7f11503d2a7c27400be318d33387f9fe2573f41d

Sigmoidfunction (https://qph.ec.quoracdn.net/main-qimg-05edc1873d0103e36064862a45566dba)

 

我们尝试通过 w1 * 长度 + w2 * 宽度 +b 对给定数据建模,其中w1,w2是两个权重,b是一个偏差。这样的方法可以用来找出数据中的任何非线性关系。

最初,我们在训练过程中随机分配给w1,w2和b一些数字,改变这些值,这样指定的模型就代表了指定的测试数据。通过使用期望值和预测值计算成本值,同时尝试使用基本的微积分理论来降低成本值实现。在训练的最后,我们将会得到一个精确的模型,同时我们将在未来使用这个模型来预测未知的数据。

在这个例子中,我们将成本方程用链式规则分别对w1,w2和b进行分解,并找到了使成本最小化的常数。这个模型很简单,所以我们手动对它进行分析。然而,有些库可以自动分析这些任务。最后,它们被用作找出神秘花朵的类型。

下图显示了训练完成后成本是如何被降低的。它在逐步减少的同时做出了更准确的预测。

52128fc6aa9ad7cf00a91eb75203f3e67a68cb72

Costvariation while learning 

正如上诉提及的那样,这个例子来自一个很棒的YouTube视频系列,想要了解更多信息,建议各位去这里一探究竟!(https://www.youtube.com/watch?v=ZzWaow1Rvho)


原文发布时间为:2018-02-1

本文作者:Sidath Asiri

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
人工智能之从零理解人工神经网络
人工智能并非是一个新型的词汇,从十九世纪五十年代开始,人们就开始探索为机器赋予类似人的智能能力。限于当时的基础数学理论不够完善,人工智能的发展并不顺利。直到九十年代发展出了基于统计学的数学工具,人工智能才得到飞速的发展。
178 5
人工智能之从零理解人工神经网络
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
脑科学与人工神经网络ANN的发展历程
脑科学与人工神经网络ANN的发展历程
112 0
|
8月前
|
机器学习/深度学习 调度
【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)
【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)
|
9月前
|
机器学习/深度学习 计算机视觉
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
120 1
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
|
4月前
|
机器学习/深度学习 自然语言处理 算法
一分钟了解人工神经网络(ANN)
人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络的算法数学模型,用于进行信息处理和模式识别。 人工神经网络的基本原理是模拟人脑中神经元之间的相互连接和信息传递。它由多个人工神经元(节点)组成,这些神经元通过连接权重相互传递信号,并通过激活函数对输入信号进行处理。如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
|
4月前
|
机器学习/深度学习 自然语言处理 算法
Python高级算法——人工神经网络(Artificial Neural Network)
Python高级算法——人工神经网络(Artificial Neural Network)
86 0
|
4月前
|
机器学习/深度学习 人工智能 算法
数学建模——人工神经网络模型
数学建模——人工神经网络模型
|
11月前
|
机器学习/深度学习 人工智能 算法
基于Transformer的人工神经网络,将有机结构的图像转换为分子结构
基于Transformer的人工神经网络,将有机结构的图像转换为分子结构
178 0
|
8月前
|
机器学习/深度学习 算法 调度
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
基于Kaggle训练集预测的多层人工神经网络的能源消耗的时间序列预测研究(Matlab代码实现)
基于Kaggle训练集预测的多层人工神经网络的能源消耗的时间序列预测研究(Matlab代码实现)