目录
激活函数
1、作用
2、常用激活函数
3、衡量激活函数好坏的标准:
4、不同的激活函数
1)sigmoid
2)tanh函数
3)RULE函数和leak-relu函数
4)softmax函数
激活函数
1、作用
如果只是线性卷积的话,会导致无法形成复杂的表达空间,因此需要激活函数来进行非线性映射,这样可以得到更高语义的信息,提升整个神经网络的表达能力。
2、常用激活函数
sigmoid、tanh、relu、softmax
3、衡量激活函数好坏的标准:
1)是否0-均值输出:即是否关于零点中心对称,这样可以使得收敛加速(不太理解)
2)是否会出现梯度消失现象:梯度消失现象主要是因为在反向传播时,由于链式求导原则,使得梯度从后一层传到前一层会出现减小的情况,如果网络深的话,传播到前面时,梯度变成了0
以BP后向传播为例,在求w11的导数时,若W1求值为[0,1],激活函数φ的导数小于1时会出现梯度消失
3)激活函数表达式是否会很复杂:若计算表达式出现幂运算、指数运算等,一般计算量都很大
4、不同的激活函数
1)sigmoid
sigmoid函数可以作为0-1二分类的分类器,也可以作为层数较少的神经网络的激活函数
优缺点如下:
2)tanh函数
tanh函数适用于激活函数,相较于sigmoid函数做到了零均值输出以及缓解了梯度消失
优缺点如下:
3)RULE函数和leak-relu函数
RELU函数因为其在正空间为线性的缘故,因此适用于深度很深的神经网络中,比如VGG16的实现。但是因为其在负空间直接将值置为0,导致导数为0,使得会出现参数不更新的情况,称之为Dead ReLU Problem,基于此,出现了leak-rule函数,它是给了一个非常小的系数,使得在负空间的导数接近于零而不等于零,优缺点如下:
注意(个人理解):在大量的实验种,发现relu函数会优于后者,原因可以是relu起到了一定的dropout的作用,可以有效地避免过拟合。因为relU在小于0的时候,梯度是0的,也就是有一部分神经元的参数是不会发生改变,所以这也相当于这部分神经元在训练的时候被丢弃了,只有一部分神经元参与到了训练当中。每次迭代都有不一样的神经元的参数不发生改变,这样的话就导致了多次训练得到了不一样的神经网络结构,相当于dropout的作用。
区别在于:dropout方法随即丢弃神经元,随机性更强,而relu的话因为导数为0这部分主要是集中在负半区,使得每次迭代“丢弃”的神经元种有大部分其实是相同的,因此效果没有直接用dropout来的好。
4)softmax函数
适用于多分类情景,是一个离散函数,输入是每一类的得分,输出是每一类的概率