当前位置: 首页 > 科技观察

从生物神经网络到人工神经网络

时间:2023-03-12 17:48:52 科技观察

如今提到人工智能,大家期待的一定是某种“学习”的方法,利用数学模型从数据中获取某种模式的表示。在众多的“学习”方法中,最受关注、承载最多期待的莫过于“神经网络”。既然我们把这种数学方法称为神经网络,那么它一定与广泛存在于生物体内的神经网络有某种联系。让我们检查一个典型的神经连接。每个神经元(细胞)都有许多向外延伸的分支,用于接收输入的分支称为树突,用于输出信号的分支称为轴突,轴突与树突相连形成突触。每个神经元都可以通过这种方式连接到多个其他神经元,每个神经元也可以接受来自多个其他神经元的连接。许多相连的神经元形成一个网络结构,大量具有感知和伸展功能的体细胞通过神经纤维连接到这个网络结构的输入输出端。正是通过这种网络结构,中枢神经系统获得“智能”,至少驱使身体做出趋利避害的选择。模式识别中的分类问题是一个典型的选择。这似乎给了解决分类问题的提示。但是这个网格是如何工作的呢?生物学家观察到这样一个事实,即当有外部刺激时,网络上的某些神经元会顺序激活。一个神经元的激活意味着这个神经元会向外界传递一个信号或者对外传递的信号强度比较大。为了便于使用,需要激活过程的数学模型。首先关注一个突触,轴突释放递质被树突吸收或电信号从树突传递到轴突,完成信息传递。如何表示突触传递的信息?给定的选择用一个数值来表示,即信息只归为一类,用数值的大小来表示其数量属性。这样粗略的简化有意义吗?实际的发射器是多种多样的[1]!将轴突的输出表示为多维向量显然更合理。但是我们可以引入多个虚拟突触来实现这个多维向量各个维度的信息传递。由于它们都是具有相同结构的突触,为什么不先检查其中一个。接下来我们检查神经元的激活。激活可以有两种模型结构——跳跃和连续。跳跃激活方法是:引入一个阈值,当输入信息经过某种处理后大于阈值时,表示激活,小于阈值表示不激活。连续激活法是指神经元不仅有激活和失活两种状态,而且有不同的激活水平,输入信息经过一些处理后直接输出激活水平。此外,由于多个消息可能[几乎肯定]在一个突触处同时传输,是否应该为一个神经元提供多个激活模型?这个问题的答案也是同态重复,引入虚拟神经元,让一个神经元只能代表其中一种激活模型。让这个虚拟神经元接收所有树突上的输入信息,经过激活模型处理后生成一个一维的激活级。什么?激活水平也应该是多维的吗?好办,然后引入虚拟神经元,每个神经元只产生其中一个维度的激活水平。从多维到一维,很明显数学模型应该是加权求和,对每一维求一个权重,相乘相加。但是这个模型是线性的,所有的输入输出点集都落在一个超平面上。是不是太简单了?不管你怎么调整这些权重参数,能代表的情况都是一个平面。然后引入一个非线性[2]函数,它将这个加权和作为输入,它的输出作为激活水平。这种非线性函数称为激活函数。至此,神经元的数学模型已经初步建立。如何选择激活函数?不幸的是,答案是否定的。目前对生物神经网络的理解无法给出确定激活函数的启示。如果你不知道,你可以随意安排。早期常用的激活函数是Sigmoid。其函数形象及公式如下。这是一个关于(0,0.5)中心对称的函数,而以加权和为输入形成的超平面总是关于(0,0.5)中心对称,这有点令人不安。然后向激活函数的参数添加一个偏移量,这将导致函数图像在z轴上平移。至此,构成神经网络的基本要素——处理输入并产生输出的神经元模型已经建立。激活函数的偏移量允许超平面离开原点,这只是数学上的意义;其实也完成了跳跃激活方式的建模。参考上图,假设水平蓝线以上的值可以表示激活,那么蓝色图像是持续激活状态,绿色图像表示只要有输入就激活,红色部分表示当输入值超过5时才突然进入激活状态,这是一个跳转。在实际操作中,激活函数的选择有一定的指导原则——层越深,激活函数越平滑。该原理并非来自对神经网络模型的深入洞察,而是来自反向传播(BP)训练方法的缺陷。(这个缺陷我会另开一篇文章,附上代码的特殊说明。)但是,随着对生物神经网络的进一步了解,能否给出更好的激活函数模型呢?答案还是未知数,我们甚至有可能放弃这个神经网络模型。使用神经元,可以构建网络。在构建网络之前,先简化神经元的示意结构。如下图所示,我们最终用圆圈表示一个神经元,带箭头的线表示它能接收的输入和能产生的输出。由于神经元是一种处理输入以产生输出的模型,那么是否可以随意将一个神经元的输出连接到另一个神经元的输入。当然!卷积神经网络(CNN)和递归神经网络(RNN)这两种分别在计算机视觉和自然语言处理中发挥巨大价值的神经网络结构,正是源于神经网络模型的这种灵活性。当然,这种灵活性也是“深度学习专家”的一种学术灌溉方式!.为了便于模型求解和编程实现,有一种简单的分层网络构造方法。某一层中的神经元只接收并完全接收前一层神经元的输入。利用这一原理构建的神经网络称为全连接神经网络。让我们回到建立生物神经网络数学模型的目的——分类。神经网络如何用于分类?分类的数学语言描述就是寻找特征空间到类别空间的映射。特征空间的建立比较简单。例如,为了确定一个人是男性还是女性,可以使用由体重、身高、胸围、腰围和臀围等几个属性组成的特征空间。建立类别空间有两种明显的方案。第一种仅使用一个维度,0表示女性,1表示男性。第二种是使用二维。维度的较大值被认为属于哪个类别,如:(1,0)表示女性,(0,1)表示男性。第二种方案通常用于表示类别空间,第一种用于解决回归问题。没有什么特别的原因,但是第二个更方便建立目标函数模型(通常是损失函数)来实现优化,这也是尽可能将要解决的问题转化为分类问题的原因。神经网络输入层神经元个数等于特征空间维数,输出层神经元个数等于类别空间维数,中间层随机排列。然后将已知数据带入模型,求解模型的参数。将未确定的性别(体重、身高、胸围、腰围、臀围)带入模型,求出解(女、男);然后判断维度的值大,如果female>male,则认为输入是女性特征,male>female表示输入是男性特征。[1]双语神经元释放谷氨酸和GABAhttps://www.nature.com/articles/nn.3840[2]激活函数也可以是分段线性函数