神经网络中的一些激活函数

作者: b424191ea349 | 来源:发表于2019-04-02 14:13 被阅读0次

产生背景

在机器学习领域,线性模型是最基础的模型,以逻辑回归和线性回归为例,这两个模型无论通过凸优化还是闭式解都能够高效且可靠的拟合数据。但是现实问题往往是线性不可分的,比如我们在学习svm的时候svm很难解决线性不可分的问题,所以采用和核函数,将一个非线性可分的映射到一个高维空间,进而变得线性可分。我们的激活函数也是为了解决非线性的问题的,它们通过给每个神经元增加非线性函数,进而达到整个神经网络具有拟合非线性的能力。

常见激活函数

sigmoid函数

sigmoid函数是最常用的一个激活函数,在逻辑回归的部分我们使用sigmoid来解决二分类的问题,其公式为:
f(z)=\frac{1}{1+\exp (-z)}

求导公式为:
f^{\prime}(z)=f(z)(1-f(z))

图像为:


Tanh函数

tanh函数也是一个较常用的函数,其函数式为:
f(z)=\tanh (z)=\frac{\mathrm{e}^{z}-\mathrm{e}^{-z}}{\mathrm{e}^{z}+\mathrm{e}^{-z}}

求导公式是:
f^{\prime}(z)=1-(f(z))^{2}

图像为:


Relu函数

relu函数是日常使用中用的最多的函数,而且其形式非常简单:
f(z)=\max (0, z)

其导函数是:
f^{\prime}(z)=\left\{\begin{array}{l}{1, z>0} \\ {0, z \leqslant 0}\end{array}\right.

其函数图像是:


为什么sigmoid函数和tanh函数会出现梯度消失的情况?

首先看sigmoid函数,它是将一个输入映射到一个(0,1)区间,当z很小时,f(x)趋向于0,当z很大时,f(z)趋向于1,而它的导数是f^{\prime}(z)=f(z)(1-f(z)),这会导致不管z是极大还是极小它的导函数都趋向于0,造成了梯度消失。

而Tanh函数也是一样的,导函数是f^{\prime}(z)=1-(f(z))^2,和sigmoid是一样的情况。

Relu函数和sigmoid以及Tanh相比好处在哪?

优点:

  1. 首先Relu计算不用计算指数,计算上比后两者简单很多
  2. Relu的非饱和性可以有效的解决梯度消失问题(但是不能完全解决,只能说好一点,同样达到饱和区,也就是z极大或者极小时,后两者梯度一直都是0,Relu最起码保证了正方向的不是0),提供一个相对较宽的边界。(关于饱和的问题可以参考链接2)
  3. Relu的单侧抑制提供了网络稀疏表达的能力,我们都知道希望学习的参数是稀疏的,这样能够有效的抑制过拟合。

缺点:
缺点很直观,当然是函数为负的时候,梯度是0。

为了解决这个缺点,设计了新的激活函数,Leaky ReLU(LReLU):
f(z)=\left\{\begin{array}{ll}{z,} & {z>0} \\ {a z,} & {z \leqslant 0}\end{array}\right.

求导公式是:
f'{\prime}z)=\left\{\begin{array}{ll}{1,} & {z>0} \\ {a,} & {z \leqslant 0}\end{array}\right.

函数图像是:


这个函数即保证能够实现单侧抑制,又保证负梯度不会完全丢失,但是这里面存在一个问题,就是超参数a的调节,可能需要多次调节才能找到最好的。

基于解决这个问题,出现了参数化的PReLU(Parametric ReLU)。 它与LReLU的主要区别是将负轴部分斜率a作为网络中一个可学习的参数, 进行反向传播训练, 与其他含参数网络层联合优化。

还有一种LReLU的变种增加了“随机化”机制, 具体地, 在训练过程中, 斜率a作为一个满足某种分布的随机采样; 测试时再固定下来。 Random ReLU(RReLU) 在一定程度上能起到正则化的作用。

参考

  1. 百面机器学习
  2. What does the term saturating nonlinearities mean?

相关文章

  • 3. 深度学习- 常用的激活函数

    在学习神经网络中,我们会常常碰到激活函数这个名词。那么什么是激活函数?激活函数激活的是什么?在神经网络中,有什么用...

  • 机器学习笔记(五)——激活函数

    激活函数区别和作用 本质:    激活函数是来向神经网络中引入非线性因素,通过激活函数,神经网络就可以拟合各种曲线...

  • 机器学习中常见函数

    1、激活函数 常用于神经网络,激活函数增加了神经网络模型的非线性特征 2、损失函数 机器学习过程中中,我们期望样本...

  • 神经网络的激活函数总结

    导言 激活函数在神经网络中具有重要的地位。在SIGAI之前的公众号文章“理解神经网络的激活函数”中,我们回答了3个...

  • 常用的激活函数

    激活函数的作用 激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。我们知...

  • 机器学习常见面试问题及答案汇总

    一些常见的机器学习面试题(不定时更新)。 激活函数的作用?激活函数为神经网络提供了非线性。如果不使用激活函数,每一...

  • ReLU和Dropout

    概述 从解决最小的问题开始。 1 激活函数 ReLU家族的激活函数通常是神经网络中激活函数的首选项,其优点在于: ...

  • 深度学习中的激活函数

    激活函数: 神经网络神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 A...

  • 激活函数

    如果没有激活函数,神经网络只能做线性变换,激活函数可以引入非线形因素。 概念:神经网络中的每个神经元节点接受上一层...

  • 独家连载 | 常用激活函数讲解

    4.4 常用激活函数讲解 神经网络的激活函数其实有很多种,在前面的章节中我们介绍过两种激活函数,sign函数和pu...

网友评论

    本文标题:神经网络中的一些激活函数

    本文链接:https://www.haomeiwen.com/subject/mwqgbqtx.html