从零开始:神经网络(1)——什么是人工神经网络

  声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。


          人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络结构和功能的计算模型。它由大量的节点(或称神经元)相互连接而成,这些节点通常按照分层的方式组织。

         人工神经网络的基本思想是通过模拟生物神经元的工作方式来处理信息。每个神经元接收来自其他神经元的输入信号,并对这些信号进行加权求和,然后通过一个激活函数来产生输出信号。这些输出信号又可以作为其他神经元的输入,从而形成一个复杂的网络结构。下面让我们从生物神经网络说起。

1. 什么是生物神经网络

 1.1 生物神经元

      众所周知,人类大脑是人体最复杂的器官,由神经元、神经胶质细胞、神经干细胞和血管组成。 神经元(Neuron),也叫神经细胞(Nerve Cell),是携带和传输信息的细胞,是人脑神经系统中最基本的单元。神经元结构如下图所示:

图1  神经元结构图

神经元结构组成部分介绍:

(1) 胞体(soma):是神经元的中心部分,含有细胞的染色体,能够迅速评估同时接收到的数百上千条信息。其中有些信息可能是兴奋性的(“放电”),有些是抑制性的(“不要放电”),胞体的唤起程度取决于所有传入信息的汇总。胞体相当于一个信息处理器,对来自其他神经元的信号进行求和,并产生神经脉冲输出信号。对应生理活动:兴奋或抑制
(2) 细胞突起是由细胞体延伸出来的细长部分,又可分为树突和轴突.

  • 树突(Dendrite):树枝状的纤维从细胞体向外伸出,分叉且非常多,这些纤维被称为树突。树突主要是收集来自感觉器官的直接刺激或来自相邻神经元的活动信息,并把传入信息传递给神经元的中心部分即胞体。 每个神经元可以有一或多个树突。总的来说,树突主要起感受器的作用,并且可以接受一个或者多个输入。
  •  轴突(axon):从胞体上伸出,上有髓鞘(轴突覆盖物),传递被唤起的神经元自己的信息(兴奋大于抑制)。轴突有时很长,有的人连接脊与脚趾的轴突可以长达一米多。轴突有时会非常短,大脑里中间神经元之间的轴突可能只有不到1厘米长。每个神经元只有一个轴突。总的来说,轴突主要起传输的作用,且只有一个输出

了解生物神经网络前,我们先了解一些基础概念:

  • 动作电位(action potential):当细胞体的唤起达到临界水平时,触发轴突中的电脉冲,轴突内外电荷发生逆转,导致电信号沿轴突传递,我们称之为神经元“放电”
  • 全或无原则(all-or-none principle):动作电位没有中间状态,要么放电,要么不放电。
  • 静息电位(resting potential):在正常的静止状态时,细胞中的离子使轴突带有少量的负电荷,此时状态即为静息电位。
  • 突触小体(terminal buttons):位于轴突末端,灯泡一样的结构。
  • 神经递质(neurotransmitter):突触小体中气泡状的小囊泡中所包含的化学物质
  • 去极化:减小神经元内的负电位。
  • 超极化:增大神经元内的负电位。
  • 兴奋阈限:引发动作电位的最低膜电位值。

图2   一个神经元的动作电位图

 1.2 生物神经网络

        在生物神经网络中,神经元之间没有物理连接,中间留有20纳米左右的缝隙。 每个神经元与其它神经元,通过突触联接进行互联来传递信息,形成一个神经网络,即神经系统

1.2.1 神经元自身的信息传递

          一个典型的神经元能够通过树突和胞体一次接收上千条信息。当胞体被充分唤起时,它自己的信息便会被传递给轴突。轴突通过动作电位将信息传递到突触小体。这个含有神经递质的小泡破裂,将神经递质释放到突触间隙中。形状合适的神经递质分子来到突触后膜时,会停留在受体上并刺激接收细胞。多余的神经递质通过再摄取过程被回收到“发送”神经元中。

图3 神经元自身的信息传递过程

神经元自身的信息传递具体传递步骤为:

第一步:当胞体的唤起达到临界水平时,触发轴突中的电脉冲。

第二步:轴突靠近胞体的一小片膜中的小孔打开,正电子流便可以迅速通过,这部分轴突的内部电荷便从负变成了正。

第三步:之后就像推倒了多米诺骨牌,这些改变沿着轴突前进,使得电信号从胞体被传到轴突末梢。

1.2.2 神经元之间的信息传递

        神经元之间通过一种特殊的电信号传递信息。有些信号将身体外面的信息,比如你看到的、听到的或者闻到的,传递给大脑。有些信号则是给身体里的器官,腺体和肌肉的指令。神经元通过自己的树突从它相邻的神经元那里接收信号。接着,这些信号被传递到细胞主体,也就是胞体。然后,信号离开胞体,沿着轴突一路向下到达突触。在这个过程中,髓鞘包裹着轴突,将电信号们和外界隔离开来,加快信号传递的速度。最后,信号离开突触,并被传递给下一个神经细胞。

       神经元之间的“信息”传递,属于化学物质传递。一个神经元可被视为一种仅有两种状态的细胞:兴奋(放电)和抑制(不放电)。神经元的状态取决于从其它的神经细胞收到的输入信号量,及突触的强度(抑制或加强)。 当信号量总和超过了某个阈值时,细胞体就会被“激活(activation)”,也就会兴奋。当它“兴奋(fire)”时,就会向与它相连的神经元发送化学物质(神经递质, neurotransmiter),从而改变这些神经元的电位;如果某些神经元的电位超过了一个“阈值(threshold)”,那么,它也会“兴奋”起来,接着向其它神经元发送化学物质,犹如涟漪一般,一层接着一层传播,如图所示。

图4 神经元间的信息传递

神经元间的信息传递具体传递步骤为:

第一步:当电脉冲抵达突触小体时,突触小体中气泡状的小泡会破裂,释放出其中的化学物质,即神经递质。

第二步:这些神经递质会尝试着将神经信息传过与相邻神经元的间隙,即神经递质嵌入邻近神经元上的特定受点,胞体被唤起,将信息传递下去。

第三步:没有与之相匹配的受点的神经递质则会被再摄取,回收到囊泡中去,其余的神经递质被相应的酶所分解。

2、什么是人工神经网络

 2.1  人工神经元

           1943 年,心理学家 Warren McCulloch 和数学家 Walter Pitts 最早提出并给出了人工神经网络的概念及人工神神经元的数学模型,这种神经元模型称为MP 模型(即McCulloch-Pitts模型),是最早的神经元模型之一,至此开启了人工神经网络研究的序幕。下图是MP 模型图。看不懂,别着急,往下看,和生物神经元类比就明白了。

     图5  M-P神经元模型图

人工神经元模型是一个包含输入,输出与计算功能的模型。

  •  对于生物神经网络中的单个神经元而言, 人工神经元的前半端(下图中红色虚线框)相当于生物神经元的树突,是输入端,用来接受多个神经元输出的信号(如图中的a、b、c)并进行组合;
  • 人工神经元的后半端(下图中绿色虚线框)相当于生物神经元的轴突,是输出端,用来输出信号(如图中的y) 给接下来更多的神经元;
  • 前后端中间的分界线是激活函数,相当于生物神经元的阀值函数,用来对输入的组合信号判断是否达到阀值,如果达到阀值则该神经元激活,向输出端输出信号,否则抑制信号,不进行输出。
  • 神经元间的连接强度的强弱用权重表示(如图中的wa、wb、wc)。权重可以看作是连接上的“放大器”或“调节器”,决定着输入信号在通过连接时被增强或减弱的程度。

图6  人工神经元的基本原理

 2.2人工神经网络

     人工神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。芬兰计算机科学家Teuvo Kohonen对神经网络定义为:“神经网络,是一种由具有自适应性简单单元(即神经元)构成的广泛并行互联的网络,它的组织结构能够模拟生物神经系统对真实世界所作出的交互反应。”

     仿照生物神经网络,构建多层人工神经网络,每一层的人工神经元都与其前后层的神经元相互连接,如图7所示。在每个连接上显示了相关的连接权重,较小的权重将弱化信号,而较大的权重将放大信号。

         图7  人工神网络的基本原理

  • 输入层(输入节点):相当于生物神经元的树突,是输入端,用来接受多个神经元输出的信号并进行组合。在输入节点中,不进行任何的计算——仅向隐藏节点传递信息
  • 中间层(也叫隐藏层或隐藏节点):相当于生物神经元的阀值函数,用来对输入的组合信号判断是否达到阀值,如果达到阀值则该神经元激活,向输出端输出信号,否则抑制信号,不进行输出。隐藏层和外部世界没有直接联系(由此得名)。这些节点进行计算,并将信息从输入节点传递到输出节点。
  • 输出层(输出节点):相当于生物神经元的轴突,是输出端,用来输出信号给接下来更多的神经元。主要负责计算,并从网络向外部世界传递信息。

        图中输入层有3个输入单元,隐藏层有3个单元,输出层有3个单元。

       因此,神经网络的基本原理是将神经网络的输出值y与训练样本中标定的真实输出值进行比较,计算出输出误差,之后再使用这个误差值来指导前后两层中每两个神经元之间连接权重的调整,进而逐步改善神经网络的输出值,直至与训练样本的真实输出值之间的误差达到很小,在设定的可容忍范围内为止。可以看出,前后两层中每两个神经元之间的连接权重就是神经网络需要进行学习的内容,对这些连接权重持续进行优化,才能使神经网络的输出越来越好,达到我们满意的结果。

 注意:

  1. 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
  2. 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
  3. 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。

3. 人工神经网络的发展

3.1 神经网络的发展历程

    下面了解一下人工神经网络发展的历程。从单层神经网络(感知器)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。详见下图。

3.2 神经网络的分类

下面重点介绍下单层神经网络、两层神经网络和多层神经网络。

(1)神经元模型

由上面的介绍已知神经元模型。我们可将神经元模型用下图表示:包含有3个输入,1个输出。

图8   神经元模型

(2)单层神经网络(感知器)

          继MP模型提出后,于1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络。他给它起了一个名字--“感知器”(Perceptron)(有的文献翻译成“感知机”,下文统一用“感知器”来指代)。感知器是当时首个可以学习的人工神经网络。

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

图9    单层神经网络 

       在“感知器”中,有两个层次。分别是输入层和输出层。输入层里的“输入单元”只负责传输数据,不做计算。输出层里的“输出单元”则需要对前面一层的输入进行计算。我们把需要计算的层次称之为“计算层”,并把拥有一个计算层的网络称之为“单层神经网络”。有一些文献会按照网络拥有的层数来命名,例如把“感知器”称为两层神经网络。

具体的感知机内容详见:从零开始:神经网络(2)——MP模型-CSDN博客

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

        单层神经网络无法解决异或问题。但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。

         两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层(如下图中的a1、a2)。此时,中间层和输出层都是计算层。我们扩展上节的单层神经网络,在右边新加一个层次(只含有一个节点)。

图10    两层神经网络 

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

      两层神经网络虽然轻松解决了异或问题,但仍存在很多问题,如训练时长久,容易陷入局部最优。此外,隐藏层的节点数需要进行调整,而这个过程比较繁琐,不太方便使用。

      在2006年,Hinton在《Science》和相关期刊上发表了论文,首次提出了“深度信念网络”的概念。与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。他给多层神经网络相关的学习方法赋予了一个新名词--“深度学习”。

  我们延续两层神经网络的方式来设计一个多层神经网络。在两层神经网络的输出层后面,继续添加层次。原来的输出层变成中间层,新加的层次成为新的输出层。依照这样的方式不断添加,我们可以得到更多层的多层神经网络。所以可以得到下图。

图11   多层神经网络

          多层神经网络中,输出也是按照一层一层的方式来计算。从最外面的层开始,算出所有单元的值以后,再继续计算更深一层。只有当前层所有单元的值都计算完毕以后,才会算下一层。有点像计算向前不断推进的感觉。所以这个过程叫做“正向传播”。   

3.3 神经网络发展的效果

         随着神经网络的发展,其表示性能越来越强。从单层神经网络,到两层神经网络,再到多层神经网络,下图说明了,随着网络层数的增加,以及激活函数的调整,神经网络所能拟合的决策分界平面的能力。

  可以看出,随着层数增加,其非线性分界拟合能力不断增强。图中的分界线并不代表真实训练出的效果,更多的是示意效果。神经网络的研究与应用之所以能够不断地火热发展下去,与其强大的函数拟合能力是分不开关系的

3.4 神经网络发展的外因

        当然,光有强大的内在能力,并不一定能成功。一个成功的技术与方法,不仅需要内因的作用,还需要时势与环境的配合。神经网络的发展背后的外在原因可以被总结为:更强的计算性能,更多的数据,以及更好的训练方法。只有满足这些条件时,神经网络的函数拟合能力才能得已体现,见下图。

图12   发展的外在原因

  在单层神经网络年代,由于当时的计算性能不足,导致Rosenblat无法制作一个双层分类器。而10年以后,计算机CPU的快速发展已经使得我们可以做两层神经网络的训练,并且还有快速的学习算法BP。但是在两层神经网络快速流行的年代。更高层的神经网络由于计算性能的问题,以及一些计算方法的问题,其优势无法得到体现。直到2012年,研究人员发现,用于高性能计算的图形加速卡(GPU)可以极佳地匹配神经网络训练所需要的要求:高并行性,高存储,没有太多的控制需求,配合预训练等算法,神经网络才得以大放光彩。

  互联网时代,大量的数据被收集整理,更好的训练方法不断被发现。所有这一切都满足了多层神经网络发挥能力的条件,所谓是“时势造英雄”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382331.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins集成allure测试报告

1.allure插件安装 (1)点击首页的【Manage Jenkins】-【Manage Plugins】 (2)选择【Available】选项,搜索输入框输入Allure,搜索出来的名字就叫Allure,当安装后名字会变为Allure Jenkins Plugi…

【MySQL】Ubuntu22.04 安装 MySQL8 数据库详解

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》《MySQL》《Qt》 ❤️感谢大家点赞👍收藏⭐评论✍️ 一、安装目录 1.1 更新软件源 sheepAron:/root$ sudo apt update1.2 安装mysql_ser…

《0基础》学习Python——第十九讲__爬虫/<2>

一、用get请求爬取一般网页 首先由上节课我们可以找到URL、请求方式、User-Agent以及content-type 即:在所在浏览器页面按下F12键,之后点击网路-刷新,找到第一条双击打开标头即可查看上述所有内容,将上述URL、User-Agent所对应的…

Vue3--

一、pinia (集中式状态(数据)管理) 1、准备一个效果 2、存储读取数据 3、修改数据三种方式 4、storeToRefs 5、getters 当state中的数据,需要经过处理后在使用时,可以使用getters配置 6、$subscribe的使用…

基于FPGA的YOLOV5s神经网络硬件部署

一 YOLOV5s 本设计以YOLOV5s部署于FPGA上为例进行分析概述。YOLOV5s网络主要包括backbone、neck、head三部分。 涉及的关键算子: Conv:卷积,包括3*3、1*1,stride1/2Concat:Upsample:Pooling:ADD 二 评估 …

独立开发者系列(32)——node开发周边命令

Node环境的本地代码实现了实时开发实时看到效果,但是node在各种情况下,经常容易报错。主要是各种依赖包和环境问题,这个是比较折腾人的。这里将各种常用命令行和开发进行一个整理。 命令行就是我们最常用的winR执行,打开的黑乎乎的窗口。 命…

P4-AI产品经理-九五小庞

从0开始做AI产品的完整工作方法 项目启动 项目实施 样本测试模型推荐引擎 构建DMP(数据管理平台) 项目上线

React 学习——行内样式、外部样式、动态样式

三种样式的写法 import "./index.css"; //同级目录下的样式文件 function App() {const styleCol {color: green,fontSize: 40px}// 动态样式const isBlock false;return (<div className"App">{/* 行内样式 */}<span style{{color:red,fontSiz…

【区块链 + 智慧政务】山东荣成:区块链政务诚信管理系统 | FISCO BCOS应用案例

2018 年 9 月&#xff0c;荣成市政府与山东观海数据技术有限公司合作&#xff0c;基于 FISCO BCOS 区块链技术推动智慧城市建设&#xff0c; 其中&#xff0c;信用管理是智慧城市核心之一。 荣成市区块链政务诚信管理系统&#xff0c;建设信用信息征集、评价、披露和应用于一体…

PY32F071单片机,主频最高72兆,资源丰富,有USB,DAC,运放

PY32F071 系列单片机是基于32 位 ARM Cortex-M0 内核的微控制器&#xff0c;宽电压工作范围的 MCU。芯片嵌入高达 128 Kbytes flash 和 16 Kbytes SRAM 存储器&#xff0c;最高72 MHz工作频率。芯片支持串行调试 (SWD)。PY32F071单片机提供了包含了HAL和LL两种不同层次的驱动库…

Qt SQLite数据库学习总结

到此为止&#xff0c;就使用Qt进行SQLite数据库的操作&#xff0c;做一次总结 1. Qt中数据库操作的相关概念和类 Qt 数据库编程相关基本概念https://blog.csdn.net/castlooo/article/details/140497177 2.表的只读查询--QSqlQueryModel QSqlQueryModel单表查询的使用总结htt…

力扣35题 二分查找(简单易懂)

力扣35题二分查找升级版讲解 文章目录 力扣35题二分查找升级版讲解一、题目描述二、思路第一种方法当然可以遍历 我们这里不做讲解二分查找 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目描述 给定一个排序数组和一个目标值&#xff0c…

BGP选路之Local Preference

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由。BGP首先比较的是路由信息的首选值&#xff08;PrefVal)&#xff0c;如果 PrefVal相同&#xff0c;就会比较本…

数据结构初阶(C语言)-二叉树-顺序表建堆

一&#xff0c;堆的概念与结构 如果有⼀个关键码的集合&#xff0c;把它的所有元素按完全⼆叉树的顺序存储方式存储&#xff0c;在⼀个⼀维数组中&#xff0c;并满足&#xff1a;&#xff0c;i0,1,2...则称为小堆(或⼤堆)。将根结点最大的堆叫做最大堆或大根堆&#xff0c;根结…

Python爬虫实战案例(爬取图片)

爬取图片的信息 爬取图片与爬取文本内容相似&#xff0c;只是需要加上图片的url&#xff0c;并且在查找图片位置的时候需要带上图片的属性。 这里选取了一个4K高清的壁纸网站&#xff08;彼岸壁纸https://pic.netbian.com&#xff09;进行爬取。 具体步骤如下&#xff1a; …

Unity ShaderLab基础

[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…

Java面试八股之Spring boot的自动配置原理

Spring boot的自动配置原理 Spring Boot 的自动配置原理是其最吸引人的特性之一&#xff0c;它大大简化了基于 Spring 框架的应用程序开发。以下是 Spring Boot 自动配置的基本原理和工作流程&#xff1a; 1. 启动类上的注解 Spring Boot 应用通常会在主类上使用 SpringBoot…

react中路由跳转以及路由传参

一、路由跳转 1.安装插件 npm install react-router-dom 2.路由配置 路由配置&#xff1a;react中简单的配置路由-CSDN博客 3.实现代码 // src/page/index/index.js// 引入 import { Link, useNavigate } from "react-router-dom";function IndexPage() {const …

elasticsearch-7.3.1安装注意事项

elasticsearch-7.3.1安装注意事项 一、背景二、步骤1、查看原ES版本2、新环境服务器2.1、是否有elasticsearch2.2、安装elasticsearch2.3、配置参数2.4、启动elasticsearch2.5、设置密码 三、报错-问题总结1、jdk不适用2、bootstrap checks failed3、Address already in use4、…

栈和队列(C语言)

栈的定义 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xff1a;…