❝脑机接口时代已经到来?作为万能分类器,各类神经网络在近年有了长足的发展
比如卷积神经网络,也在如今的图片识别领域取得最好的成绩
今天的目标是JS手撕通用神经网络🔥,无任何库依赖
❞
神经网络概述
-
人工神经网络( Artificial Neural Networks, 简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model) ,是对人脑或自然神经网络(Natural Neural Network) 「若干」基本特性的抽象和模拟。

-
俺们的神经元看上去很厉害
-
目前在神经网络研究方法上已形成多个流派,最富有成果的研究工作包括:多层网络BP算法,Hopfield网络模型,自适应共振理论,自组织特征映射理论等。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。
-
今天大致的学习流程,日常问题=>感知机=>向前传播=>向后传播=>多层BP神经网络->案例=>小结
-
为啥要学习?机器一直在学习,作为人类请保持学习😄
日常数据分类问题
简单感受一下
-
先看个动图

-
上图的过程,就是通过机器学习,最终确定一组参数,最后将2组数据尽可能分开😄
-
通过一条直线进行分类,就是线性分类器
再来看一个经典分类例子
-
逻辑电路中我们都学过与门,或门,与非门,或非门,异或门
-
「题外话」:门电路形成组合逻辑,触发器组合形成时序逻辑,2者共同实现数字逻辑,最终形成俺们的CPU💥。。。
-
输入=>输出 的真值表,如下图

-
除了XOR,其他逻辑操作真值表 都可以被一条直线划分,如下图


-
1条直线基本闯天下,但XOR呢,无法用一条直线搞定,那应该如何?😶一朵小乌云?

-
看一下 无法线性分类的动图,机器不断学习,但陷入震荡😶

类似XOR分类的解决方案
-
我们可以用各种机器学习完成,类XOR数据集分类,如下图

-
今天要用的是上图中, 左下模式-神经网络,实现非线性分类器🔥
人工神经网络
感知机
-
感知机(perceptron)是由美国学者 Frank Rosenblatt 在 1957 年提出来的,感知机是神经网络(深度学习)的起源算法
-
可以简单的认为一个感知机就是一个神经元,接受输入,处理后输出,也可以输入到下一个感知机😄
-

-
一个感知机,由多个输入,其中,参数w叫做权值向量(weight),b称为偏置(bias),activation function是激活函数,最终得出Oj
-
注意b 在上图没有明确标注出,可以认为是一个截距,每个感知机对应1个b
-
整个感知机,理解起来是很简单的,他模拟了生物神经元的特定功能😄
-
上面的f(x) ,你可以简单认为就是一条直线,所以对于除了XOR的逻辑门,我们可以通过1个感知机进行分类
-
下面我们会用JS建立一个感知单元类。
-
神经网络主要有三个基本要素: 「权重、偏置和激活函数」,我们的目标就是调整这3个参数
激活函数
-
起非线性映射的作用,其可将神经元的输出幅度限制在一定范围内,一般限制在(-1~1)或(0~1)之间。最常用的激活函数是Sigmoid函数。
-
Sigmoid函数在之前文章中有提及

-
下面代码中我们会实现,3种激活函数,及其导数
多层感知机-神经网络
-
先看动图

-
上图有1层输入层,2层隐藏层,1层输出层
-
输入层有2个维度输入,输出层有2个维度输出
-
大部分的分类工作,用2层隐藏层网络足矣
正向传播
-
多层神经网络的正向传播大约是这样的:

本文介绍了使用JavaScript实现人工神经网络的过程,从神经网络概述、日常数据分类问题,到感知机、向前传播、向后传播,重点讲解了多层神经网络的构建。通过JS代码实现多层感知机,演示了在XOR问题和鸢尾花分类问题上的应用,展现了神经网络在非线性分类中的能力。
1800

被折叠的 条评论
为什么被折叠?



