NN中的激活函数【转载】

时间:2023-03-09 00:05:51
NN中的激活函数【转载】

转自:https://blog.csdn.net/edogawachia/article/details/80043673

1.sigmoid

NN中的激活函数【转载】

特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firing rate)

缺陷:

  1. 有饱和区域,是软饱和,在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。
  2. 只有正数输出(不是zero-centered,均值为0?),这就导致所谓的zigzag现象:

NN中的激活函数【转载】

也就是说,w始终是朝着一直为正或者一直为负去变化的。

NN中的激活函数【转载】

也就是说,更新只能朝着一个方向更新。

2.tanh函数

NN中的激活函数【转载】

NN中的激活函数【转载】

计算量大。

tanh和sigmoid函数是具有一定的关系的,可以从公式中看出,它们的形状是一样的,只是尺度和范围不同。

3.ReLU

NN中的激活函数【转载】

CNN中常用。对正数原样输出,负数直接置零。在正数不饱和,在负数硬饱和。relu计算上比sigmoid或者tanh更省计算量,因为不用exp,因而收敛较快。但是还是非zero-centered。

relu在负数区域被kill的现象叫做dead relu,这样的情况下,有人通过初始化的时候用一个稍微大于零的数比如0.01来初始化神经元,从而使得relu更偏向于激活而不是死掉,但是这个方法是否有效有争议。

4.LeakyReLU

NN中的激活函数【转载】

PReLU

parametric rectifier:

f(x) = max(ax,x)

但是这里的a不是固定下来的,而是可学习的。

ELU

NN中的激活函数【转载】