谈谈神经网络中的非线性激活函数 | 您所在的位置:网站首页 › relu函数计算矩阵 › 谈谈神经网络中的非线性激活函数 |
神经网络中的非线性激活函数(ReLu,Sigmoid,Tanh)什么是激活函数? 激活函数是指在多层神经网络中,上层神经元的输出和下层神经元的输入存在一个函数关系,这个函数就是激活函数。如下图所示,上层神经元通过加权求和,得到输出值,然后被作用一个激活函数,得到下一层的输入值。引入激活函数的目的是为了增加神经网络的非线性拟合能力。 ![]() ![]() 在神经网络中使用ReLu激活函数作为非线性变换得到的输出结果是: ReLu函数的特点是 Sigmoid,是常用的连续、平滑的s型激活函数,也被称为逻辑(Logistic)函数。可以将一个实数映射到![]() ![]() 引入非线性激活函数的目的是提高神经网络的非线性拟合能力,增强模型的表达能力。因此,在表诉过程中,在没有明确指明的情况下,激活函数指代非线性激活函数。经过严格的数学推导,如果网络中没有使用激活函数,每一层的节点的输入都是上层输出的线性函数,无论神经网络中的隐含层有多少,最后的输出结果都是网络输入的线性拟合,即隐含层没有发挥其作用。为此,引入非线性函数作为激活函数来提高模型的表达能力。 举个栗子:如果不使用非线性函数作为激活函数,对于二分类问题,可以使用逻辑回归做简单的线性划分,如下图所示: ![]() 使用简单的线性划分无法有效划分数据类别,对此需要引入非线性,为数据集划分提高有效的方式。如下图所示: ![]() 由此可见,引入激活函数能够正确有效划分数据类别。引入非线性因素,使得神经网络能够更好地解决复杂问题。 激活函数采用非线性函数的数学推导 即证明当激活函数采用线性函数时,对于多层神经网络,其输出是输入的多层拟合。 激活函数
即 ReLU函数虽然在 由于ReLu激活函数是分段线性函数,且每段的导数都能简单,导数要么为0,要么为1。计算简单,使用梯度下降法时收敛的更快。因此,在训练过程中能够大幅加快训练速度。 ReLu激活函数的非线性拟合能力ReLu函数相比于Sigmoid函数和Tanh函数具有更强的非线性拟合能力。其更强大的非线性拟合能力表现为:没有梯度消失;能够最大化的发挥神经元的筛选能力。目前为止是默认的最好的非线性激活函数。 从ReLU函数及其表达式可以看出,ReLu其实就是一个取最大值的函数。在输入是负值的情况下,其输出为0,表示神经元没有被激活。这意味着在网络的前向传播过程中,只有部分神经元被激活,从而使得网络很稀疏,进而提高运算效率。 没有饱和区,不存在梯度消失问题对比Sigmoid函数,ReLu不存在梯度消失,即当z越来越大时,其函数梯度趋于0。当使用梯度下降法时,每次迭代更新时参数变化很小,这会减缓网络收敛速度。使用激活函数的目的是尽量区分出z值的变化,这样每个神经元的表达能力更强,即非线性拟合能力更强。 最大化发挥神经元的筛选能力Relu函数能够最大化发挥神经元的筛选能力,相比于sigmoid函数,其收敛速度快ReLU激活函数存在的不足2.参考文献 浅析激活函数之Relu函数激活函数_百度百科https://zhuanlan.zhihu.com/p/41135605ReLU 函数_百度百科RELU是分段线性函数,怎么实现非线性呢?_M&H的博客-CSDN博客_relu是线性还是非线性 |
CopyRight 2018-2019 实验室设备网 版权所有 |