作家
登录

30行JavaScript代码,教你分分钟创建神经网络

作者: 来源: 2017-09-15 14:30:52 阅读 我要评论

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!


30行JavaScript代码,教你分分钟创建神经收集

本身搭建神经收集太复杂?

我们共进行了20,000次的练习,每一次都进行四次正向传播和反向传播运算,分别传递四个可能的输入到神经收集:[0,0] [0,1] [1,0] [1,1] 。

别怕!

今天我们将手把手教你若何用30行代码轻松创建一个神经收集

在本篇文┞仿中,你将学到:

若何应用Synaptic.js(https://synaptic.juancazala.com/#/)创建和练习神经收集。

应用这款对象,我们可以在浏览器顶用Node.js进行深度进修。

今天我们要讲的例子是一个异常简单的神经收集,我们将用它来进修逻辑异或方程(XOR equation)。

同时,我也在Scrimba上创建了一个交互式屏幕录像。你也可以经由过程不雅看视频来进修本教程。(https://scrimba.com/casts/cast-1980)

在开端编程之前,让我们先快速浏览神经收集的一些根本概念。

当练习神经收集时,我们只须要加载大年夜量示例数据,如手写的数字,然后让神经收集来猜测精确的数字。

神经元和突触

神经收集的第一个模块,是神经元。

神经元类似一个函数,你输入一些值,它就会输出返回值。

神经元有各类不合的类型。我们的神经收集将用到sigmoid神经元(https://en.wikipedia.org/wiki/Sigmoid_function),将任何输入的给定值,紧缩到0到1之间。

learningRate是一个常数,用来告诉神经收集每次应当对权重值进行多大年夜程度的调剂。第二个参数0表示的是当输工资[0,0]时,精确的输出参数是0.

下图中的圆圈就代表一个sigmoid神经元。它的输入值是5,输出值是1。箭头则代表的是神经元的突触,用来连接神经收集中其它层的神经元。

为什么会有一个红色的数字5呢?它是连接到神经元的三个突触(左边3个箭头)的值之和。

在最左边,我们看到有两个值与所谓的误差值进行了加法运算。数值1和0是绿色的,而误差值-2是棕色的。

因为我们的神经元是sigmoid神经元,它会将任何值紧缩到0到1的区间范围内,所以输出值被紧缩到1。

起首,两个输入值与他们的权重分别相乘,权重就是蓝色数字7和3。

然后,我们把他们和误差值加起来,所得的结不雅是5,对应红色数字。这个红色数字就是我们人工神经元的输入值。

如不雅将这些神经元的收集连接起来,就形成了一个神经收集。经由过程神经元间的突触连接,大年夜输入到输出进行正向传播。如下图所示:

神经收集的目标是练习其泛化才能,例如辨认手写的数字或者垃圾邮件。做稻?锬泛化重要的是经由过程神经收集找到合适的权重和误差值。如上述例子中的蓝色和棕色数字。

在每次猜测后,你须要计算猜测的误差程度,然后调剂权重和误差值使得神经统??下一次运算中可以猜测的加倍精确。这种进修过程被称为反向传播。如斯反复上千次,你的神经收集很快会精于泛化。

本教程不包含反向传播的工作道理介绍,然则我找到了3个好的教程赞助大年夜家懂得:

  • 分步介绍反向传播案例(https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/) – 作者:Matt Mazur
  • 神经网路骇客指南(http://karpathy.github.io/neuralnets/) – 作者:Andrej Karpathy
  • 神经收集和深度进修(http://neuralnetworksanddeeplearning.com/chap1.html) – 作者:Michael Nielsen

用代码搭建神经收集

如今,你应当已经对神经收集有了基本概念,那就让我们进入代码部分吧。

1.创建神经收集层

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

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

这是一个2-3-1构造的神经收集,可视化表示如下:

2.练习神经收集

我们大年夜myNetwork.activate([0,0])激活函数开端,[0,0]是神经收集的输入值,这个过程是正向传播,也被称为激活收集。在每一次正向传播后我们须要做一次反向传播,大年夜而更新神经收集的权重和误差值。


  推荐阅读

  给 Android 开发者的 31 个 Pro 版进阶小贴士

像专业人士一样开辟 Android 应用法度榜样的 30+ Kickass 对象28. 时不时的审核下所有你依附的第三方库 51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 成>>>详细阅读


本文标题:30行JavaScript代码,教你分分钟创建神经网络

地址:http://www.17bianji.com/lsqh/37453.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)