0
点赞
收藏
分享

微信扫一扫

Redis 数据结构—跳跃表(Skiplist)深度解析

爱做梦的夏夏 2024-07-24 阅读 24

激活函数

sigmod

  1. 梯度消失问题:

    • sigmoid函数的导数在输入值较大或较小时接近于0。
    • 在反向传播过程中,这些小梯度会相乘,导致深层网络的梯度变得非常小。
    • 结果是,深层网络的参数几乎不会更新,训练变得非常困难。
    • 这就是为什么在5层以上的网络中,sigmoid函数容易导致梯度消失。
  2. 非零中心化:

    • sigmoid函数的输出范围是(0, 1),均值不是0。
    • 这会导致后续层的神经元接收到的输入总是正的,影响梯度下降的效率。
  3. 在实践中的使用限制:

    • 由于上述问题,sigmoid在隐藏层中很少使用。
    • 现代神经网络更常用ReLU等其他激活函数。
  4. 在二分类输出层的应用:

    • sigmoid函数输出范围(0,1),可以解释为概率。
    • 这使它非常适合二分类问题的输出层,где输出可以直接解释为属于某类的概率。

tanh激活函数 

 与 Sigmoid 相比,它是以 0 为中心的,使得其收敛速度要比 Sigmoid 快,减少迭代次数。然而,从图中可以看出,Tanh 两侧的导数也为 0,同样会造成梯度消失。

 在隐藏层使用tanh函数,在输出层使用sigmoid函数

  1. 非中心化数据的情况:

    • 这就像在一个狭长的山谷里。
    • 山谷的一边可能很陡,另一边可能很缓。
    • 你在这里行走时,可能会反复横跳:在陡峭的一侧迈大步,在平缓的一侧迈小步。
    • 这样走起来很不顺畅,需要很多次调整才能到达最低点。
  2. 中心化数据的情况:

    • 这更像是在一个圆形的碗状山谷里。
    • 四周的坡度大致相同。
    • 你可以更直接地朝着中心(最低点)走去。
    • 不需要太多的左右摇摆,你的路径会更直接、更高效。
  3. 在机器学习中:

    • "走路"就是优化算法(如梯度下降)调整参数的过程。
    • "山谷的形状"就是损失函数的等高线。
    • 中心化的数据tends to创造更"圆"的等高线,使得优化过程更顺畅。
  4. 为什么会这样:

    • 非中心化数据可能在某些维度上有很大的值,在其他维度上有很小的值。
    • 这会导致损失函数在不同维度上的变化速率差异很大。
    • 中心化后,数据在各个维度上的尺度更接近,使得损失函数的行为更均匀。
  5. 实际效果:

    • 使用中心化数据,优化算法通常能更快地找到最优解。
    • 需要的迭代次数可能会减少。
    • 最终得到的解可能会更好(更接近全局最优)。

Relu激活函数

 

        从上述函数图像可知,ReLU 激活函数将小于 0 的值映射为 0,而大于 0 的值则保持不变,它更加重视正信号,而忽略负信号,这种激活函数运算更为简单,能够提高模型的训练效率。

        从图中可以看到,当x<0时,ReLU导数为0,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入小于0区域,导致对应权重无法更新。这种现象被称为“神经元死亡”。

        ReLU是目前最常用的激活函数。与sigmoid相比,RELU的优势是:

        采用sigmoid函数,计算量大(指数运算),反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。 sigmoid函数反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。 Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

softmax

举报

相关推荐

0 条评论