神经元是构成神经网络的基本单元,模拟生物神经元的结构和特性,接受输入信号并且产生输出。输入信号要进行加权和激活函数,然后才输出神经元的活性值。
激活函数用来增强网络的表示能力和学习能力,需要连续可求导(允许少数点不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数(反向传播算法)。并且激活函数及其导数要尽可能简单,减少计算复杂度。然后激活函数的导函数要在一个合适区间内,保证训练的效率和稳定性。
下面介绍几种常见的激活函数。
sigimod型函数是一类两端饱和的s型曲线,有logistic函数和tanh函数。logistic激活函数的神经元输出结果可以直接看作是概率分布,使得神经元更好的和统计学习模型相结合,另外就是可以看作是一个软性门,用来控制其他神经元输出信息的数量。然后这个tanh函数的输出是零中心化的,但logistic函数输出恒大于0,logistic函数输出非零中心化,会使后一层的神经元输入发生偏置偏移,并且使梯度下降的收敛速度变慢。
relu函数是一斜坡函数,相比于之前两个激活函数,计算更加高效。sigmoid型激活函数会导致一个非稀疏的神经网络,而ReLu却具有很好的稀疏性。在优化方面,相比于sigmoid型函数的两端饱和,relu函数为左饱和函数,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。此外,relu神经元在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个relu神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度可能永远都是0,在以后的训练中永远不能激活,这称为死亡relu问题。
前馈网络中各个神经元按接受信息的先后分为不同的组。每一个组可以看作一个神经层。每一层的神经