30行代码,带你分分钟创建神经网络!(附工具&教程)

简介:

image

本文含大量代码,如需原文请从文末来源链接获取。

自己搭建神经网络太复杂?

image

使用Synaptic.js(https://synaptic.juancazala.com/#/ )创建和训练神经网络。
利用这款工具,我们可以在浏览器中用Node.js进行深度学习。
今天我们要讲的例子是一个非常简单的神经网络,我们将用它来学习逻辑异或方程(XOR equation)。
同时,我也在Scrimba上创建了一个交互式屏幕录像。你也可以通过观看视频来学习本教程。(https://scrimba.com/casts/cast-1980
在开始编程之前,让我们先快速浏览神经网络的一些基本概念。

image

神经网络的第一个模块,是神经元。
神经元类似一个函数,你输入一些值,它就会输出返回值。
神经元有各种不同的类型。我们的神经网络将用到sigmoid神经元(https://en.wikipedia.org/wiki/Sigmoid_function ),它能将任何输入的给定值压缩至0到1之间。
下图中的圆圈就代表一个sigmoid神经元。它的输入值是5,输出值是1。箭头则代表的是神经元的突触,用来连接神经网络中其它层的神经元。

image

为什么会有一个红色的数字5呢?它是连接到神经元的三个突触(左边3个箭头)的值之和。
在最左边,我们看到有两个值与所谓的偏差值进行了加法运算。数值1和0是绿色的,而偏差值-2是棕色的。
首先,两个输入值与他们的权重分别相乘,权重就是蓝色数字7和3。
然后,我们把上述运算结果和偏差值加起来,所得的结果是5,对应红色数字。这个红色数字就是我们人工神经元的输入值。

image

由于我们的神经元是sigmoid神经元,它会将任何值压缩到0到1的区间范围内,所以输出值被压缩到1。
如果将这些神经元的网络连接起来,就形成了一个神经网络。通过神经元间的突触连接,从输入到输出进行正向传播。如下图所示:

image

神经网络的目标是训练其泛化能力,例如识别手写的数字或者垃圾邮件。做到好的泛化重要的是通过神经网络找到合适的权重和偏差值,如上述例子中的蓝色和棕色数字。
当训练神经网络时,我们只需要加载大量示例数据,如手写的数字,然后让神经网络来预测正确的数字。
在每次预测后,你需要计算预测的偏差程度,然后调整权重和偏差值使得神经网络在下一次运算中可以预测的更加准确,这种学习过程被称为反向传播。如此重复上千次,你的神经网络很快会精于泛化。
本教程不包括反向传播的工作原理介绍,但是我找到了3个好的教程帮助大家理解:
分步介绍反向传播案例-作者:Matt Mazur
https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/
神经网路骇客指南-作者:Andrej Karpathy
http://karpathy.github.io/neuralnets/
神经网络和深度学习-作者:Michael Nielsen
http://neuralnetworksanddeeplearning.com/chap1.html

image

现在,你应该已经对神经网络有了基础概念,那就让我们进入代码部分吧。

1.创建神经网络层

在synaptic中我们使用new layer()函数来创建。函数中传递的数字表示的是每一层会有多少个神经元。

image

接下来我们将这些层进行连接并实例化一个神经网络,代码如下,

image

这是一个2-3-1结构的神经网络,可视化表示如下:

image

2.训练神经网络

image

我们共进行了20,000次的训练,每一次都进行四次正向传播和反向传播运算,分别传递四个可能的输入到神经网络:[0,0] [0,1] [1,0] [1,1]。
我们从myNetwork.activate([0,0])激活函数开始,[0,0]是神经网络的输入值,这个过程是正向传播,也被称为激活网络。在每一次正向传播后我们需要做一次反向传播,从而更新神经网络的权重和偏差值。

image

learningRate是一个常数,用来告诉神经网络每次应该对权重值进行多大程度的调整。第二个参数0表示的是当输入为[0,0]时,正确的输出参数是0.
然后,神经网络将预测值和真实值进行对比,来判断预测是否正确。
它将比较的结果作为调整权重和偏差值的基础,以便下次的预测可以更加准确。
在执行这个过程20,000次后,我们可以通过传递四个可能的值输入到激活网络,从而判断目前神经网络的预测情况:

image

如果我们将这些值四舍五入到最近的整数,就将得到异或方程的正确结果。万岁!

image
image

原文发布时间为:2017-09-21
本文作者:Per Haiald Borgen
本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关文章
|
2月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
483 1
|
4月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
|
3月前
|
Web App开发 API 虚拟化
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
313 15
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
|
4月前
|
监控 安全 网络安全
网络安全工具及其使用方法:保护数字安全的第一道防线
在信息时代,网络攻击变得日益复杂且频繁,保护个人和企业数据安全的重要性日益凸显。幸运的是,各种网络安全工具为用户提供了有效的防护手段。从防火墙到密码管理器,这些工具覆盖了威胁检测、攻击防御和数据保护的方方面面。本文将介绍几款常用的网络安全工具,并提供其使用方法,以帮助您构建强大的网络安全防线。
200 1
|
4月前
|
监控 数据可视化 Java
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
113 0
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
|
5月前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
7月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1082 31
|
7月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
246 7
|
7月前
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
|
9月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
313 20