加推实战之全栈JS神经网络

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

脑机接口时代已经到来?作为万能分类器,各类神经网络在近年有了长足的发展

比如卷积神经网络,也在如今的图片识别领域取得最好的成绩

今天的目标是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层隐藏层网络足矣

正向传播

  • 多层神经网络的正向传播大约是这样的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值