cs231n笔记-激活函数与权重初值

在这里插入图片描述

1. Sigmoid

在这里插入图片描述

存在的问题:

  • 饱和神经元使得梯度消失。 当输入x过大或者过小时,从sigmoid的曲线都可以看到,区域水平,这将导致梯度消失。
  • sigmoid不是一个零中心函数。 上游回传的梯度 d L d f \frac{dL}{df} 的数值正负皆有可能,权重的梯度 d f d W = x \frac{df}{dW}=x ,如果输入x恒为正,则相当于保留了上游梯度的符号,所有关于W的梯度总朝着一个方向移动。导致梯度更新非常低效。
    在这里插入图片描述
    当权重的梯度恒正或者恒负时,只允许产生一三象限方向的优化,假设最优权重向量是图中蓝色向量,那么梯度更新的过程需要经过非常多步,如图中红色向量的更新方向。
    所以一般情况下我们倾向于使用均值为0的数据,这样能够得到正负都含有的数值,避免上述问题的产生。
  • 指数函数计算量大,计算慢。

2. tanh

在这里插入图片描述

优点:零中心函数

问题:饱和神经元使得梯度消失

ReLU (Rectified Linear Unit)

在这里插入图片描述

优点:

  • 正区间不会产生饱和
  • 计算简单、速度快
  • 收敛速度大概在sigmoid和tanh的6倍
  • 比sigmoid在生物学上更合理

问题:

  • 不是零中心函数
  • 存在dead ReLU问题,即负半轴区域无作为。dead ReLU是常见的问题,产生的原因可能为①不合适的初始化配置,初始权重没有设置好,恰巧不在数据云内,导致一个能激活神经元的数据输入也无法产生合适的回传梯度,神经元既不会更新也不回被激活。(示意图如下)所以我们通常使用较小的正偏置来初始化ReLU,以增加它在初始化时被激活的可能性,并获得更新。也有学者认为这种做法并没有什么意义,仍旧使用全0初始偏置。
    在这里插入图片描述

3. Leaky ReLU | PReLU

都是ReLU的改进,赋予其负区间微小的斜率。
在这里插入图片描述

优点

  • 不会有饱和的神经元
  • 不会产生dead ReLU

PReLU (Parametric Rectifier) 和 Leaky ReLU类似,但负区间的斜率由alpha参数确定,不需要特殊地指定alpha,而是把alpha作为一个可以反向传播和学习的参数,拥有更高的灵活性。

4. ELU(Exponential Linear Units)

可以认为ELU介于ReLU 和 Leaky ReLU 之间。
在这里插入图片描述

优点

具有ReLU的所有有点,且输出均值更接近0

问题

负区间存在饱和问题

5. Maxout Neuron 最大输出神经元

泛化ReLU和Leaky ReLU,不会产生饱和也不会消亡。

f ( x ) = m a x ( w 1 T x + b 1 , w 2 T x + b 2 ) f(x)=max(w_{1}^{T}x+b_{1}, w_{2}^{T}x+b_{2})

形式不同: 没有使用先做点积运算,然后把这个元素级的非线性特征放在它的前面的方式。而是分别计算 w 1 T x + b 1 w_{1}^{T}x+b_{1} w 2 T x + b 2 w_{2}^{T}x+b_{2} ,取其中的最大值。

问题

每个神经元的参数数量翻倍,即原来每个神经元只需要权重W,现在需要权重 W 1 W_{1} W 2 W_{2}

6. 常用情况

  1. 使用ReLU并谨慎调整学习速率
  2. 尝试Leaky ReLU / Maxout / ELU (实验性强于实用性)
  3. 尝试tanh(实验性强于实用性)
  4. 一般不使用sigmoid

7. 初始化网络权重

我们的期望是不同的神经元可以学到不同的知识,如果所有神经元的初始权重相同,神经元将进行相同的操作,用相同的方式更新,与期望不符。

一般从一个概率分布中抽样选择一个小的随机数推荐:Xavier初始化法

注意,初始权重不宜太大也不宜太小。
在这里插入图片描述
如果初始值过小,激活值和权重都将渐渐趋近于0,因为它们都在不断乘一个很小的值。
如果初始值过大,不断乘以值过大的权值矩阵,数值会爆炸增长。

猜你喜欢

转载自blog.csdn.net/AG9GgG/article/details/87799824