当前位置: 代码迷 >> 综合 >> sigmoid,softmax,ReLu激活函数
  详细解决方案

sigmoid,softmax,ReLu激活函数

热度:43   发布时间:2023-12-11 21:21:06.0

每个激活函数的输入都是一个数字,然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素,如果不用激活函数的话,无论神经网络有多少层,输出都是输入的线性组合。

激活函数的发展经历了Sigmoid -> Tanh -> ReLU -> Leaky ReLU ->
Maxout这样的过程,还有一个特殊的激活函数Softmax,因为它只会被用在网络中的最后一层,用来进行最后的分类和归一化。

Sigmoid 值范围[0,1]

输入实数值并将其“挤压”到0到1范围内,适合输出为概率的情况。
在这里插入图片描述

在这里插入图片描述
面试点:
在这里插入图片描述

(推导)

Tanh 值范围[-1,1]

在这里插入图片描述
在这里插入图片描述
Tanh解决了Sigmoid的输出非0中心的问题,但仍然存在饱和问题。
为了防止饱和,现在主流的做法会在激活函数前多做一步Batch Normalization,尽可能保证每一层网络的输入呈均值较小、0中心的分布。

ReLU

在这里插入图片描述
相较于sigmoid和tanh函数,ReLU对于随机梯度下降的收敛有巨大的加速作用;sigmoid和tanh在求导时含有指数运算,而ReLU求导几乎不存在任何计算量。
在这里插入图片描述
对比sigmoid类函数主要变化是:

  1. 单侧抑制
  2. 相对宽阔的兴奋边界
  3. 稀疏激活性

存在问题:
ReLU单元比较脆弱并且可能“死掉”,而且是不可逆的,因此导致了数据多样化的丢失通过合理设置学习率,会降低神经元“死掉”的概率。解释:什么是死亡?假设非常小的数值,放在Relu之后,那么几乎为0,那么在更新的过程中,也是为0,也就是死亡了。

为什么ReLu激活函数是非线性的

  • 在这里插入图片描述

Softmax

在这里插入图片描述
Softmax是Sigmoid的扩展,当类别数k=2时,Softmax回归退化为Logistic回归。
(详细的)

面试补充

1、为什么用Softmax怎么不用Hardmax?反向传播有什么不同?(阿里面试中问过)

  • Hardmax就是简单的大于阈值为1,小于阈值为0,反向传播时,导数为0,无法进行反向传播。
  • 而Softmax在反向传播时,则可以正常进行梯度更新。

2、激活函数的作用

  • 每个激活函数的输入都是一个数字,然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素,如果不用激活函数的话,无论神经网络有多少层,输出都是输入的线性组合。通过引入激活函数提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。

3、Relu比Sigmoid的效果好在哪里?

  • Sigmoid的导数只有在0的附近时有较好的激活性,而在正负饱和区域的梯度趋向于0,从而产生梯度消失的现象,
  • 而relu在大于0的部分梯度为常数,所以不会有梯度消失现象。Relu的导数计算的更快。Relu在负半区的导数为0,所以神经元激活值为负时,梯度为0,此神经元不参与训练,具有稀疏性。

4、为什么用relu就不用sigmoid了

  • Sigmoid的导数只有在0的附近时有比较好的激活性,在正负饱和区域的梯度都接近0,会导致梯度弥散。
  • 而relu函数在大于0的部分梯度为常数,不会产生梯度弥散现象。Relu函数在负半区导数为0,也就是说这个神经元不会经历训练,就是所谓稀疏性。而且relu函数的导数计算的更快。
  相关解决方案