人工神经网络( Artificial Neural Networks, 简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model)。
人工神经网络是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作状态响应而进行信息处理。
通俗来讲,人工神经网络是模拟动物神经网络形成的。我们的大脑中有数十亿个神经元细胞,他们连接成了一个神经网络。人类大脑神经元细胞的树突接收来自外部的多个强度不同的刺激,并在神经元细胞体内进行处理,然后将其转化为一个输出结果。
1、神经元
生物神经元的组成包括细胞体、树突、轴突、突触。树突可以看作输入端,接收从其他细胞传递过来的电信号;轴突可以看作输出端,传递电荷给其他细胞;突触可以看作I/O接口,连接神经元,单个神经元可以和上千个神经元连接。细胞体内有膜电位,从外界传递过来的电流使膜电位发生变化,并且不断累加,当膜电位升高到超过一个阈值时,神经元被激活,产生一个脉冲,传递到下一个神经元。
神经元是多输入单输出的信息处理单元,具有空间整合性和阈值性,输入分为兴奋性输入和抑制性输入。
基于这个原理,科学家麦卡洛克(McCulloch)和皮茨(Pitts)提出了人工神经元的简易数学模型M-P模型:将接收到的一个输入中多个分量加权求和后通过硬限幅函数输出。M-P模型是对生物神经元的建模,作为人工神经网络中的一个神经元。
从M-P模型示意图中,我们可以看到与生物神经元的相似之处。其中,xi表示多个输入;wij表示权值,其正负模拟了生物神经元的兴奋和抑制;Σ表示将全部输入信号进行累加整合;f为激活函数;Oj为输出。
2、激活函数
所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。
为什么要用激活函数?
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
常用的激活函数
(1)Sigmoid函数
Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。公式如下:
Sigmoid函数曲线,x可以是正无穷到负无穷,但是对应的y却只有0~1的范围,所以,经过Sigmoid函数输出的函数都会落在0~1的区间里,即Sigmoid函数能够把输入的值“压缩”到0~1之间。
(2)Tanh函数
Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。公式如下:
Tanh函数曲线,其x取值也是从正无穷到负无穷,对应的y值变为-1~1之间,相对于Sigmoid函数有更广的值域。
(3)ReLU函数
Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出,是人工神经网络中的一种激活函数。通常情况下,ReLU 是最常使用的激活函数。其主要原因在于 ReLU 不会遇到梯度消失问题。图形和公式如下: