Sigmoid
sigmoid非线性激活函数的公式是,如上上图左。之前的章节提过,它将实数压缩到0 1 区间。而且,大的负数变成0,大的正数变成1。sigmoid函数由于其强大的解释力,在历史上被最经常地用来表示神经元的活跃度:从不活跃(0)到假设上最大的(1)。在实践中,sigmoid函数最近从受欢迎到不受欢迎,很少再被使用。它有两个主要缺点:
1.sigmoid过饱和、丢失了梯度。sigmoid神经元的一个很差的属性就是神经元的活跃度在0和1处饱和,它的梯度在这些地方接近于0。回忆在反向传播中,某处的梯度和其目标输出的梯度相乘,以得到整个目标。因此,如果某处的梯度过小,就会很大程度上干掉梯度,使得几乎没有信号经过这个神经元以及所有间接经过此处的数据。除此之外,人们必须额外注意sigmoid神经元权值的初始化来避免饱和。例如,当初始权值过大,几乎所有的神经元都会饱和以至于网络几乎不能学习。
2.sigmoid的输出不是零中心的。这个特性会导致为在后面神经网络的高层处理中收到不是零中心的数据。这将导致梯度下降时的晃动,因为如果数据到了神经元永远时正数时,反向传播时权值w就会全为正数或者负数。这将导致梯度下降不希望遇到的锯齿形欢动。但是,如果采用这些梯度是由批数据累加起来,最终权值更新时就会更准确。因此,这是一个麻烦一些,但是能比上面饱和的激活问题结果好那么一些。
tanh
Tanh.Tanh如上图右。其将实数映射到[-1,1]。就像sigmoid神经元一样,它的激活也会好合,但是不像sigmoid函数,它是零中心的。因此在实际应用中tanh比sigmoid更优先