人工神经网络(简称:神经网络)的思路是利用计算模拟生物神经网络的信息处理的能力,来进行数据分析。它是人工智能研究的范畴,更是属于机器学习算法领域。是一种分析数据的模型。
我们先来看一下生物神经元的构造:
神经元主要由中心的细胞核、多个树突和一个轴突组成:
1、通过树突的端口突触接受来自外界的信号输入;
2、细胞核对输入的信号进行处理;
3、轴突将细胞核处理后的信息传递到神经末梢并由末端端口传给下一层的多个神经元。
这样单个神经元就完成了信号处理的过程。
那么神经网络是怎么模拟神经元的信号处理来分析数据的呢?
从单层感知器说起
最早的神经网络–单层感知器是由1957年Rosenblatt提出来的。思路是:利用数据计算来模拟单个生物神经元的信息处理的能力。当时主要用于模式识别和二分类过程。
计算过程:
1、通过加权求和求得输入的数据总和,每个输入会有一个影响权重w1,w2,w3,…wn。利用赫布理论通过不断刺激调整权重。
2、用阈值函数对总和进行判断,大于阈值的输出为1,小于阈值的输出为0.
计算过程非常像信号中的信号感知,信号强就输出促进的信号,信号弱的输出抑制的信号或者不输出。
单层感知器的结构很简单,能模拟任何线性的函数,能对任何线性二分类可分的情况进行处理。但是很难处理非线性的数据情况。
多层神经网络
后来基于单层感知器的计算原理,多层感知器甚至各种神经网络被提出来了。神经网络是由多个神经元相互连接,通过神经元之间的刺激不断调整之间的节点关系(权重)的自适应系统。
神经网络是一个有向循环图,由输入层,中间层(可以没有,也可以多层),输出层组成。每层的神经元逐层跟下一层的神经元进行连接,每一个的神经元的输出由输入,连接权重以及**函数决定。
输入层:特殊层,没有信息处理。
中间层:每个神经元对输入进行加权求和,以及**函数的处理得到中间输出。多个中间层相当于从不同角度和维度对特征进行提取和处理的功能。
输出层:每个神经元对输入进行加权求和,以及**函数的处理得到最后的预测值。
每一层之间的连接会有非常多的权重,这些权重是怎么进行训练和更新的呢?
这就要讲到神经网络的训练过程了 正向传播和反向训练
比如我现在输入一只猫的各种特征,通过正向逐层计算输出预测值,假如预测出来一只猫,或者一只狗。这就完成了一次正向预测的过程;不管是一只猫还是一只狗,神经网络都会这次训练都会记录下来,并且计算偏差,也叫做损失函数,通过梯度下降法找到损失下降的最快的方向更新权重。这就是反向训练的过程。
以下是单个权重的损失函数图,通过通过梯度下降的方法找到每个点的切线方向进行权重更新的过程,当到达低点(梯度为0)时权重为最优权重且不再更新。
当有多个极小值点时,会陷入局部最优
梯度下降法只能找到局部最优点,也就是鞍点。当有多个鞍点时,找到的最优点并不是全局最优,而是局部最优。
解决办法:
1、多次随机初始化权重;
2、随机梯度下降可以跳出局部最优。
总结:神经网络通过不断的正向传播和反馈训练来调整连接权重得到最优的参数,当所有的权重定下来了,神经网络模型就定下来了。