机器学习-人工神经网络 最基础的单层神经网络编写

单层神经网络使用案例

前言:

人工神经网络(Artificial Neural NetworksANN)是人工智能中机器学习的一种较为流行的算法, 可以处理大型复杂的机器学习任务。人工神经网络模仿生物体的神经网络,其本质上是一组带有权值的边和节点组成的相互连接的层,称为神经元。通过人工神经网络,我们可以使得计算机进行机器学习,从而实现某些目的。

技术原理:

概要:

人工神经网络由一个输入层,一个输出层和若干个隐藏层组成。人工神经网络的工作原理与大脑的结构类似。一组神经元被赋予一个随机权重,以确定神经元如何处理输入数据。通过对输入数据训练神经网络来学习输入和输出之间的关系。在训练阶段,系统可以通过给定的标签访问正确的答案。如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。训练的本质就是调整权重。

神经元:

神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,

而输出可以类比为神经元的轴突,计算则可以类比为细胞核。

下图是一个典型的神经元模型:包含有3个输入,1个输出,以及2个计算功能。

注意中间的箭头线。这些线称为连接。每个上有一个权值

(ps:求和为一次计算, 非线性函数中也是一次计算)

连接是神经元中最重要的东西。每一个连接上都有一个权重。

一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。(重点!!!!!!!!!!!!)

我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成a*w,因此在连接的末端,信号的大小就变成了a*w。

在其他绘图模型里,有向箭头可能表示的是值的不变传递。而在神经元模型里,每个有向箭头表示的是值的加权传递。

(该图表示一个连接)

如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。

 

最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的

单层神经网络(感受器):

在原来MP模型的输入位置添加神经元节点,标志其为输入单元。其余不变,于是我们就有了下图:从本图开始,我们将权值w1, w2, w3写到连接线的中间。

图为单层神经网络

感知器中,有两个层次。分别是输入层输出层输入层里的输入单元只负责传输数据,不做计算。输出层里的输出单元则需要对前面一层的输入进行计算

我们把需要计算的层次称之为计算层,并把拥有一个计算层的网络称之为单层神经网络。有一些文献会按照网络拥有的层数来命名,例如把感知器称为两层神经网络。但在本文里,我们根据计算层的数量来命名。

同时,神经网络的输出层可增加,增加N个输出层就要增加对应的连接/权重

但是,单层的神经网络仍然存在局限性,它只能生成一个逻辑回归的模型,只能做到线性回归类的任务

下图显示了在二维平面中划出决策分界的效果,也就是感知器的分类效果。

两层神经网络(多层感知器):

两层神经网络和单层神经网络相比较,其本质区别就是增加了一个隐藏层。

达成的效果是使得人工神经网络由原来的仅能处理线性分类问题变为可以无限逼近任意函数。

两层神经网络(决策分界)

可以看到,这个两层神经网络的决策分界是非常平滑的曲线,而且分类的很好,与之前的单层神经网络的仅能实现线性分类形成很好的对比。

多层神经网络(深度学习):

在两层神经网络的输出层后面,继续添加层次。原来的输出层变成中间层,新加的层次成为新的输出层。所以可以得到下图

图为多层神经网络

依照这样的方式不断添加,我们可以得到更多层的多层神经网络。

与两层神经网络不同的是多层神经网络的层数增加了很多。

增加层数的好处可以这样理解:

随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是边缘的特征,第二个隐藏层学习到的是由边缘组成的形状的特征,第三个隐藏层学习到的是由形状组成的图案的特征,最后的隐藏层学习到的是由图案组成的目标的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。

      关于逐层特征学习的例子,可以参考下图。

多层神经网络(特征学习)

不同的层次的神经网络的效果:

从单层神经网络,到两层神经网络,再到多层神经网络,上图说明了,随着网络层数的增加,以及激活函数的调整,神经网络所能拟合的决策分界平面的能力。可以看出,随着层数增加,其非线性分界拟合能力不断增强。图中的分界线并不代表真实训练出的效果,更多的是示意效果。

尝试动手完成一个简单的单层神经网络

实现一个最简单的单层神经网络

1.如图所示是展示问题的表格:

2.分析图中的数据:

       我们不难发现,输出层的输出内容仅仅与输入层的内容有关,也就是说,可以将图中的问题表示为下图

如上图所示,

原先图中所给的数据想要实现的目标大致为使得输出层输出与输入层第一个数据相同的数据.也就是说在训练中我们的目的就是把权重w1尽量设置大,权重w2,w3尽量小,使得a2,a3对最后输出的结果尽量小。

以下链接为笔者通过Python实现该例的视频

https://www.bilibili.com/video/BV1J34y1r72Q?spm_id_from=333.999.0.0

参考文献:

神经网络——最易懂最清晰的一篇文章_illikang的博客-CSDN博客_神经网络

https://blog.csdn.net/qq_40739970/article/details/84992923?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164007214916780269859786%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164007214916780269859786&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-84992923.pc_search_result_control_group&utm_term=Python+%E5%8D%95%E5%B1%82%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&spm=1018.2226.3001.4187

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值