神经网络常用的sigmoid和softmax激活函数

1、Sigmoid

-- 函数公式:

 

公式中,z是单个原始输出值,如原始输出值为[-0.5,0.3, 1.5, -2.0],则z1=-0.5,z2=0.3,z3=1.5,z4=-2.0;

神经网络常用的sigmoid和softmax激活函数_第1张图片

 

sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。sigmoid函数把一个实数压缩到(0,1),当z无穷大时,函数值趋于1,反之趋于0;我们知道(0,1)与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。

我们经常说的logistic函数,就是sigmoid函数,表征的是类别概率。

 

-- sigmoid的应用:

神经网络分类问题中,在输出层中,我们可以应用sigmoid函数。例如原始输出值为[-0.5, 1.2, 0.1, 2.4],经过sigmoid函数后,输出为概率值[0.37, 0.77, 0.48, 0.91],如下图:

(蓝色框内输出的是原始输出值,红色框为sigmoid计算出的概率值)

神经网络常用的sigmoid和softmax激活函数_第2张图片

 

我们发现概率值总和不为1,即 0.37+0.77+0.48+0.91≠1,是因为Sigmoid 在解决多标签分类问题,Sigmoid分别处理每一个原始输出值,其结果相互独立,允许多种可能性并存,概率总和不一定为1。如果模型原始输出值为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值。

-- sigmoid的不足

sigmoid具有明显的饱和性,其两侧导数趋近于0,在反向传播的过程中,sigmoid的梯度会包含一个

f '(x)因子,在两端的饱和区内,f '(x)会趋于0,导致反向传播的梯度边的非常小,甚至不更新,也是常说的梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。

sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

 

2、Softmax

-- 函数公式:

 

分子是某个原始输出值的e^zi,分母是1到k的所有原始输出值的e^zj,也就是说,softmax将所有原始输出值映射到(0,1)之间的值,且所有输出的映射总和就是1;

 

-- softmax应用

神经网络分类问题中,在输出层中,我们可以应用sigmoid函数。例如原始输出值为[-0.5, 1.2, 0.1, 2.4],经过softmax函数后,输出为概率值[0.04, 0.21, 0.05, 0.70],如下图:

(蓝色框内输出的是原始输出值,红色框为softmax计算出的概率值)

神经网络常用的sigmoid和softmax激活函数_第3张图片

 

我们发现概率值总和为1,即 0.04+0.21+0.05+0.70=1,符合概率模的性质,我们将映射输出的结果理解为概率值,最后选出概率最大的值所在节点作为分类的label输出。所以如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。

Softmax函数的输出值相互关联,其概率的总和始终为1。因此,为了增大某一类别的概率,其他类别的概率必须相应减少。

如果预测的是多类别分类问题,且只有一个正确答案,那么就选用softmax函数处理原始输出值。

-- softmax的不足

softmax对样本类别覆盖较全的数据,可以按照分类个数进行划分,保证类别可分,即保证可分性;但是Softmax并不要求类内紧凑和类间分离,这一点非常不适合人脸识别任务,因为相对全世界70亿人口,我们的训练样本微不足道。

 

欢迎关注我的公众号!

你可能感兴趣的:(深度学习,深度学习,机器学习)