如今提及人工智能,大家期待的一定是某种可以“学习”的方法,这种方法使用数学模型从数据中获取模式的某种表示。在众多“学习”方法中,获得最多关注,承载最多期望的非“神经网络”莫属。既然我们将这种数学方法称作神经网络,那么他必然和广泛存在于生物体内的神经网络存在某种联系。让我们考察一个典型的神经连接。

每个神经元(细胞)都向外伸出许多分支,其中用来接收输入的分支称作树突(dendrities),用来输出信号的分支称作轴突(axon),轴突连接到树突上形成一个突触(synapse)。每个神经元可以通过这种方式连接多个其他神经元,每个神经元也可以接受多个其他神经元的连接。很多连接起来的神经元形成了网状结构,海量具有传感和伸缩功能的体细胞通过神经纤维连接在这个网状结构的输入和输出端,中枢神经系统正是通过这种网状结构获得了“智能”,至少是驱动机体做出了趋利避害的选择。

模式识别中的分类问题就是一种典型的选择。看起来,这给出了一种解决分类问题的启示。但是这种网状结构是怎么工作的呢?生物学家已经观察到的事实是,当有外界刺激时,网络上的某些神经元会被次第激活。神经元被激活的意思是这个神经元会向外传递信号或者对外传递的信号强度较大。

为了便于利用,需要对激活过程建立数学模型。首先将目光聚焦在一个突触上,轴突释放递质被树突吸收或者电信号从树突传递到轴突就完成了信息的传递。如何表示突触传递的信息呢?给出选择是用一个数值来表示,这寓示着将信息只归为一个类别,并用数值的大小表示其数量方面的属性。这样粗暴的简化有意义吗?实际递质可是多种多样的啊[1]!显而易见将一个轴突的输出表示成一个多维向量才是更合理的。但是我们可以引入多个虚拟突触来实现这个多维向量的各个维度的信息的传递,既然都是同样结构的突触,为何不先只考察其中一个呢。

接下来考察神经元的激活。激活可以有两种模型结构——跳变式和连续式。跳变式激活方式是:引入一个阈值,当输入信息经过某种处理后大于阈值即表示激活,小于阈值表示未激活。连续式激活方式表示神经元不是只有激活和未激活两种状态,而是有不同的激活水平,输入信息经过某种处理后直接输出激活水平。同样,因为在突触中可能[几乎是确定的]同时传递了多种信息,是否应该为一个神经元提供多个激活模型呢?对这个问题解答同样是同形重复,引入虚拟神经元,让一个神经元只表示其中一个激活模型。让这个虚拟神经元接收所有树突上的输入信息,经过激活模型处理后生成一维的激活水平。什么?激活水平也应该是多维的?好办,再引入虚拟神经元,每个神经元只管生成其中某一维的激活水平。

多维变一维,显然数学模型应该是加权和,给每一维找到一个权重相乘再加起来。

但是这个模型是线性的,所有输入和输出组成的点集落在一个超平面上。是不是太简单了点,不管怎么调整这几个权重参数可以表示的情形都是平面。那么再引入一个非线性[2]函数以这个加权和为输入,将其输出作为激活水平,这个非线性函数称作激活函数。至此神经元的数学模型算是初步建立起来了。

激活函数该如何选取呢?很可惜,答案是不知道。目前对生物神经网络的了解,不能给予确定激活函数的启示。不知道那么就可以随意安排,早期常用的激活函数是Sigmoid。其函数图像和公式如下。

这是一个关于(0,0.5)中心对称的函数,以加权和作为输入形成的超平面总是关于(0,0.5)中心对称的,这多少让人感觉有些不安。那么在激活函数的自变量上增加一个偏移量,这个偏移量将会导致函数图像在z轴上平移。至此构成神经网络的基本元素——处理输入产生输出的神经元模型已经建立好了。


激活函数的偏移量使得超平面可以离开原点了,这仅仅是数学上的意义;其实它还完成了对跳变式激活方式的建模。参考上图,假设水平蓝线以上的数值才能表示激活,那么对于蓝色的图像来说处于持续激活状态,绿色的图片表示只要有输入就激活,而红色的部分则表示当输入数值超过5时才忽然进入激活状态,这就是跳变了。

在实际操作中对于激活函数的选取是有一定指导原则的——层数越深,激活函数越平缓。这个原则并不是来自于对神经网络模型的深入洞察,而来自于反向传播(BP)训练方法的缺陷。(对于这个缺陷我会新开一篇,并附上代码专门说明。)然而,随着对生物神经网络更进一步的了解,是否能给出更好的激活函数模型呢?答案还是不知道,甚至启示我们要放弃这种神经网络模型都是有可能的。

有了神经元,就可以构建网络了。在构建网络之前,先对神经元的图示结构进行简化。如下图所示,最终我们用一个圆圈表示了神经元,用带箭头的线表示了它可以接收的输入和可以产生的输出。

既然神经元是一个处理输入产生输出的模型,是否可以随意地把一个神经元的输出连接到另一个神经元的输入。当然可以!卷积神经网络(CNN)和回返神经网络(RNN)这两款分别在计算机视觉和自然语言处理中发挥巨大价值的神经网络结构正是源自于神经网络模型的这种灵活性。当然,这种灵活性也是“深度学习专家们”的学术灌水手段!。为了便于模型求解和编程实现,有一种简单的层状结构的构网方法。某一层的神经元仅接收且完全接受紧前层神经元的输入。采用这种原则构建出来的神经网络称作全连接神经网络。

让我们回到给生物神经网络建立数学模型的目的上去——分类。怎么才能用神经网络进行分类呢?分类的数学语言描述是,找从特征空间到类别空间的映射。特征空间的确立比较简单,比如为了确定一个人是男是女,可以使用体重、身高、胸围、腰围、臀围这几个属性组成的特征空间。类别空间的确立有两种比较显然的方案。第一种,只用一个维度,0表示女,1表示男。第二种,用两个维度,那个维度取值大就认为属于哪个类别,如:(1,0)表示女,(0,1)表示男。通常用第二种方案表示类别空间,第一种用于解决回归问题。并没有什么特殊的原因,只是第二种比较便于建立目标函数模型(通常是损失函数)以实现最优化,这也是尽量把待解决问题向分类问题上转换的原因。

让神经网络的输入层神经元的个数等于特征空间的维数,输出层神经元的个数等于类别空间的维数,中间层随意安排。然后将已知的数据带入模型,求解模型的参数。将不确定男女的(体重,身高,胸围,腰围,臀围)带入模型,求出一个解(女,男);然后判断那一维的数值大,女>男就认为输入的是女性的特征,男>女就为认为输入的是男性的特征。

[1]Bilingual neurons release glutamate and GABA

https://www.nature.com/articles/nn.3840
[2]激活函数也可以是分段线性函数

本文作者:唐锐,毕业于长安大学遥感科学与技术专业,曾从事基于计算机视觉的智能交通系统研发3年,也在互联网公司锻炼过几年,现加入了原同事及朋友创办的北京天地智绘科技有限公司,从事卫星影像解译系统研发。比较擅长系统架构设计、算法研发以及开发过程管理;喜欢钻研,不随大流。

转载请联系本公众号

从生物神经网络到人工神经网络相关推荐

  1. 深度神经网络和人工神经网络区别

    深度学习与神经网络有什么区别 找深度学习和神经网络的不同点,其实主要的就是:原来多层神经网络做的步骤是:特征映射到值.特征是人工挑选.深度学习做的步骤是 信号->特征->值. 特征是由网络 ...

  2. 人工神经网络与神经网络,对人工神经网络的理解

    人工神经网络,人工神经网络是什么意思 . 一.人工神经网络的概念人工神经网络(ArtificialNeuralNetwork,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理解和抽 ...

  3. 人工智能和神经网络区别,人工神经网络有哪几种

    人工智能的分类包括哪些呀? 人脑计算机对接技术项目名称:小发猫 人工智能领域六大分类: 1.深度学习: 深度学习是基于现有的数据进行学习操作,是机器学习研究中的一个新的领域,机在于建立.模拟人脑进行分 ...

  4. 人工神经网络,人工神经网络是什么意思

    人工神经网络,人工神经网络是什么意思 一. 人工神经网络的概念. 人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理 ...

  5. 生物神经网络与人工神经网络

    目录 一.生物神经网络 1.概念 2 神经元(Neuron) 3 工作流程 4 信息整合 5 电位 6 名词解释 二.人工神经网络 1.概念 2.基本介绍 3.数学模型 4.神经网络的学习形式 5.学 ...

  6. 人工神经网络_人工神经网络实践

    人工神经网络(Artificial Neural Network,ANN) 使一种受人脑生物神经网络信息处理方式启发而诞生的一种计算模型,得益于语音识别.计算机视觉和文本处理方面的许多突破性成果,人工 ...

  7. 人工智能与深度神经网络,人工智能人工神经网络

    人工智能中神经网络训练过程 谷歌人工智能写作项目:神经网络伪原创 人工智能深度学习的基础知识? 在提及人工智能技术的时候,对于深度学习的概念我们就需要了解,只有这样才能更加容易理解人工智能的运行原理, ...

  8. 【神经网络】人工神经网络学习方法

    学习方法是体现人工神经网络智能特征的主要标志,离开了学习算法,人工神经网络就失去了诱人的自适性,自组织和自学习的能力.目前,神经网络的学习方法有多种,按有无导师来分,可分为有教师学习(Sperrise ...

  9. 神经网络计算机硬件,人工神经网络的硬件设计研究

    摘 要:本文结合当前计算机智能化领域的发展情况,提出了在新的智能计算硬件平台上进行神经网络的计算,并以Gerstner的尖峰神经元模型为基础设计出硬件电路,以加快神经网络的计算能力. 关键词:人工神经 ...

  10. 深度神经网络预测模型,人工神经网络回归分析

    如何用神经网络实现连续型变量的回归预测? 神经网络最开始是机器学习的一种模型,但其训练的时间和其他几种模型相比不占优势,且结果也不尽人意,所以一直没有被广泛使用. 但随着数学的深入研究以及计算机硬件质 ...

最新文章

  1. 使用 SQL Server Mobile 创建移动应用程序
  2. Maven详解之聚合与继承
  3. jndi连接池链接mysql_使用容器提供的数据库连接池--JNDI用法
  4. [原创]Flex文本框自动提示(AutoSuggest)、自动完成(AutoComplete)
  5. UI5 plugin - uploadCollection
  6. Apache Camel 3.1 – XML路由的快速加载
  7. java 实体类 时间格式字段注解
  8. 程序猿在等电梯时都在想什么?
  9. 编译错误:vulkan/vulkan.h:没有那个文件或目录
  10. 【Java】java 读写 json文件,java读写文件
  11. 怎么计算crc16校验数据的校验码
  12. i3能装Linux虚拟机,使用i3wm重新安装Ubuntu
  13. linux中tftp怎么配置文件,linux的tftp命令参数及用法详解
  14. 动态规划之挖金矿(背包问题)
  15. Mil学习之 MimArith 图片逻辑运算
  16. cisco wlan 控制器配置
  17. 一场精彩的比赛——2019年ACM新生赛
  18. 28 | Pika:如何基于SSD实现大容量Redis?
  19. Android Provision源码分析
  20. MySQL和php搭建聊天室,用PHP MySQL搭建聊天室

热门文章

  1. ASP.NET Core 借助 Helm 部署应用至 K8S
  2. Bumblebee微服务网关之并发限制
  3. 向net core 3.0进击——April.WebApi从2.2爬到3.0
  4. 编程语言之父谈语言设计,龟叔大赞TypeScript
  5. .NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程
  6. AspNetCore微服务下的网关-Kong(一)
  7. EQueue 2.3.2版本发布(支持高可用)
  8. android防止左向右滑出程序,Android——ViewPager禁止左右滑动的实现
  9. 多种语言《九九乘法表》荟萃:C、C++、C#、JavaScript、SQL、VB、VBA、Python
  10. C语言试题八十三之输出左下三角形九九乘法表