博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
独家 | 一文读懂人工神经网络
阅读量:4226 次
发布时间:2019-05-26

本文共 2736 字,大约阅读时间需要 9 分钟。

作者:Sidath Asiri

翻译:Nicola

校对:卢苗苗

原文标题:MeetArticial Neural Networks

本文约1500字,建议阅读5分钟
本文通过使用浅显易懂的语言和介绍youtube上的实验方式带读者认识人工神经网络。

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

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

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

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

 

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

 

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

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

 

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

 

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

神经网络存在许多种类:

  • 前馈神经网络

  • 循环神经网络

  • 常规反馈神经网络

  • 径向性神经网络

 

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

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)。有红色和蓝色两种花,它们的宽度和长度的样本数据已经给出。要求使用这些已知的数据预测未知的花朵的颜色。

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

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

Oursimple neural network

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

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

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

 

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

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

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

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

Costvariation while learning

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

Nicola,北美东部大四在读,喜欢政治和数据的商科生。空余时候通过翻译学术文档扩充知识,假期会去不同的地方旅游,平时研究香氛研究护肤。同时也在联系数据库分析等,希望能认识更多未来的数据科学家们。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

你可能感兴趣的文章
关于springMVC重定向问题
查看>>
android封装get请求
查看>>
Java中访问自定义类常量的简化
查看>>
ArrayList简单实现Java版
查看>>
LinkedList基本实现Java版
查看>>
Stack的链表实现
查看>>
Stack简单实现向下增长数组版
查看>>
LinkedList实现队列简易版
查看>>
Springmvc拦截器实现网站非登录不能访问。
查看>>
SpringMVC中的注入参数问题
查看>>
springmvc接收参数和页面传值
查看>>
为什么要Autowired和Qualifier配合使用
查看>>
说说自己对ssm整合的看法
查看>>
EL表达式小节一下
查看>>
jstl的core标签库
查看>>
jstl的fmt标签库,最常用的几个
查看>>
jstl的fn常用方法库
查看>>
mybatis动态插入
查看>>
Mybatis动态更新
查看>>
Androidstudio如何去掉APP的标题
查看>>