大家好,又见面了,我是你们的朋友全栈君。
一、人工神经网络算法概念
1、神经元
正如我们日常生活中,遇到美女眼睛移不开、闻到香味流口水等生理现象等,其实都是神经所支配进行的,这就涉及到神经细胞。神经细胞(nerve cell)又称神经元或神经原,是神经系统的结构与功能单位之一。它能感知环境的变化,再将信息传递给其他神经细胞,并发出指令以做出反应。据估计,人类中枢神经系统中约存在1000亿个神经元,仅大脑皮层中就约有140亿。在眼的视网膜上有感光细胞能接受光的刺激,在鼻粘膜上有嗅觉细胞能接受气味的变化,在味蕾中有能接受化学物质刺激的味觉细胞等,这些细胞都属于神经细胞(如图1所示)。
图1 神经元及其组成
根据神经元的不同分类角度可以得到不同的分类细节,神经细胞按照传输方向及功能分为感觉神经元、运动神经元和联络神经元三种。其形态各异,依照突起的多寡又分成多极神经元、单极神经元和双极神经元。
神经系统的细胞,主要包括神经元和神经胶质细胞。虽然神经元形态与功能多种多样,但结构上大致都可分成细胞体(soma)和突起(neurite)两部分。突起又分树突(dendrite)和轴突(axon)两种。轴突往往很长,由细胞的轴丘(axon hillock)分出,其直径均匀,开始一段称为始段,离开胞体若干距离后始获得髓鞘,成为神经纤维,习惯上把神经纤维分为有髓纤维与无髓纤维两种,实际上所谓无髓纤维也有一薄层髓鞘,并非完全无髓鞘。
在生命活动中,正式通过神经系统这一基本单位结构和功能单位—-神经元获取信息并实现信息传递的。就神经元如何进行信息的传递以及神经元的各种分类,可以详见
B站大神YJango设计制作的一个神片:《大脑的神经元工作机制》,对于理解神经元运作和工作原理非常重要。
根据笔者自己的理解并结合神经学资料,可以总结如下,神经元的功能分区可分为:
①输入(感受)区 :就一个运动神经元来讲,胞体或树突膜上的受体是接受传入信息的输入区,该区可以产生突触后电位(局部电位)。
②整合(触发冲动)区: 始段属于整合区或触发冲动区,众多的突触后电位在此发生总和,并且当达到阈电位时在此首先产生动作电位。
③冲动传导区: 轴突属于传导冲动区, 动作电位以不衰减的方式传向所支配的靶器官。
④输出(分泌)区 轴突末梢的突触小体则是信息输出区,神经递质在此通过胞吐方式加以释放。
2、人工神经网络
人工神经网络(Artificial Neural Network,ANN),正是基于生物学中神经网络的基本工作原理,并在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统以实现对复杂信息的处理机制的一种数学模型。该模型具有并行分布的处理能力、高容错性、自适应性、智能化和自学习等能力为特征,将信息的加工和存储结合在一起,以其独特的知识表示方式和智能化的自适应学习能力,引起各学科领域的关注。作为一种有着大量简单元件相互连接而成的复杂网络,ANN具有高度的非线性,能够进行复杂的逻辑操作和非线性关系实现的系统,显然正正式机器学习等研究的重要方向之一。如图2所示。
图2 人工神经网络
神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),神经网络就是通过这种方式来模拟人类的记忆。网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。神经网络的构筑理念是受到生物的神经网络运作启发而产生的。人工神经网络则是把对生物神经网络的认识与数学统计模型相结合,借助数学统计工具来实现。另一方面在人工智能学的人工感知领域,我们通过数学统计学的方法,使神经网络能够具备类似于人的决定能力和简单的判断能力,这种方法是对传统逻辑学演算的进一步延伸。
人工神经网络中,神经元处理单元可表示不同的对象,例如特征、字母、概念,或者一些有意义的抽象模式。网络中处理单元的类型分为三类:输入单元、输出单元和隐单元。输入单元接受外部世界的信号与数据;输出单元实现系统处理结果的输出;隐单元是处在输入和输出单元之间,不能由系统外部观察的单元。神经元间的连接权值反映了单元间的连接强度,信息的表示和处理体现在网络处理单元的连接关系中。人工神经网络是一种非程序化、适应性、大脑风格的信息处理,其本质是通过网络的变换和动力学行为得到一种并行分布式的信息处理功能,并在不同程度和层次上模仿人脑神经系统的信息处理功能。
3、人工神经网络算法演进过程
通过梳理人工神经网络算法的演进历史,我特此将其分为四个阶段。
二、人工神经算法技术过程
经典人工神经网络本质上是解决两大类问题:①分类(Classification);②回归(Regression)。当然现在还有图像分割、数据生成等问题,但经典机器学习中已经讨论过,把图像分割归为分类问题,把数据生成归为回归问题。分类是给不同的数据划定分界,如人脸识别,输入x 是人脸照片,输出y 是人的ID 号,这个值是一个整数。回归问题要解决的是数据拟合,如人脸年龄预测,输入x 同样是人脸照片但输出y 是人的年龄,这个值是一个连续浮点数。因此,也就是说关于分类问题和回归问题均可以尝试采用RNN优化解决,但是对于不同的问题,ANN可能出现不同的效果。
BP 人工神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向反馈,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP 神经网络预测输出逼近期望输出。反向传播算法分二步进行,即正向传播和反向传播,正向传播是输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。反向传播是把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。其具体流程如下:
1、隐含层数的确定
如图2所示的BP神经网络,输入层包含m个节点,输出层包含n个节点,可以看做是一个m维向量到一个n维向量的映射。
隐层节点的选择有一个经验公式:
其中h为隐含层节点数目,m为输入层节点数目,n为输出层节点数目,a为1~10之间的调节常数。
2、激活函数的确定
激活函数有很多中类型,其中以激活函数f(x)=signoid(x)最为常用。 |
(9) |
3、BP神经网络算法的数学证明过程
以单隐藏层的BP神经网络为例,各阶段原理公式如下:
-
前向传播。设输入层有n个节点,隐藏层有q个节点,输出层有m个节点,输入层与隐藏层间的权重为V,隐藏层与输出层的节点为W,输入变量为X,则隐藏层和输出层的输出分别为:
-
误差函数。设有p个输入样本,则每个输入样本的误差函数为:
-
根据误差调整权重。函数是沿梯度的方向变化最快,BP神经网络中也是通过梯度下降法更新权重。根据链式法则及上述关系,可以得到权重W和V的变化公式分别为:
三、BP人工神经网络算法的劣势分析
BP网络主要用于以下四个方面。
(1)函数逼近:用输入向量和相应的输出向量训练一个网络逼近一个函数。
(2)模式识别:用一个待定的输出向量将它与输入向量联系起来。
(3)分类:把输入向量所定义的合适方式进行分类。
(4)数据压缩:减少输出向量维数以便于传输或存储。
虽然BP网络得到了广泛的应用,但自身也存在一些缺陷和不足,主要包括以下四个方面的问题。
(1)学习速率的设置问题:由于学习速率是固定的,因此网络的收敛速度慢,需要较长的训练时间。对于一些复杂问题,BP算法需要的训练时间可能非常长,这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进,但是如何设置学习速率以及如何按照问题的类型设置学习速率是笔者将继续开展的研究内容。
(2)输出结果的误差问题:BP算法可以使权值收敛到某个值,但并不保证其为误差平面的全局最小值,这是因为采用梯度下降法可能产生一个局部最小值。对于这个问题,可以采用附加动量法来解决。
(3)网络隐含层层数和节点数目的确定问题:网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也增加了网络学习的负担。
(4)网络的学习和记忆具有不稳定性。此问题主要表现于当增加了学习样本,训练好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148739.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...