谈谈神经网络中的非线性激活函数 您所在的位置:网站首页 relu函数计算矩阵 谈谈神经网络中的非线性激活函数

谈谈神经网络中的非线性激活函数

2024-05-08 18:21| 来源: 网络整理| 查看: 265

神经网络中的非线性激活函数(ReLu,Sigmoid,Tanh)什么是激活函数?

激活函数是指在多层神经网络中,上层神经元的输出和下层神经元的输入存在一个函数关系,这个函数就是激活函数。如下图所示,上层神经元通过加权求和,得到输出值,然后被作用一个激活函数,得到下一层的输入值。引入激活函数的目的是为了增加神经网络的非线性拟合能力。

三种常见的激活函数ReLu,全称是Rectified Linear Unit,中文名称是线性整流函数,是在神经网络中常用的激活函数。通常意义下,其指代数学中的斜坡函数,即 f(X)=max(0, X) 。其对应的函数图像如下所示:

在神经网络中使用ReLu激活函数作为非线性变换得到的输出结果是: Output=max(0, W^{T}X+B) .

ReLu函数的特点是

Sigmoid,是常用的连续、平滑的s型激活函数,也被称为逻辑(Logistic)函数。可以将一个实数映射到 (0, 1) 的区间,用来做二分类。其函数定义为 f(x)=\frac{1}{1+e^{-x}} ,函数图像如下所示: Tanh函数称为双曲正切函数,函数定义为 f(x)=tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}},值域为 (-1,1)(0, 1) ,函数图像如下:非线性激活函数

引入非线性激活函数的目的是提高神经网络的非线性拟合能力,增强模型的表达能力。因此,在表诉过程中,在没有明确指明的情况下,激活函数指代非线性激活函数。经过严格的数学推导,如果网络中没有使用激活函数,每一层的节点的输入都是上层输出的线性函数,无论神经网络中的隐含层有多少,最后的输出结果都是网络输入的线性拟合,即隐含层没有发挥其作用。为此,引入非线性函数作为激活函数来提高模型的表达能力。

举个栗子:如果不使用非线性函数作为激活函数,对于二分类问题,可以使用逻辑回归做简单的线性划分,如下图所示:

使用简单的线性划分无法有效划分数据类别,对此需要引入非线性,为数据集划分提高有效的方式。如下图所示:

由此可见,引入激活函数能够正确有效划分数据类别。引入非线性因素,使得神经网络能够更好地解决复杂问题。

激活函数采用非线性函数的数学推导

即证明当激活函数采用线性函数时,对于多层神经网络,其输出是输入的多层拟合。

激活函数 g(z)=\lambda z ,以两p层神经网络为例,其最终输出为:

A^{[2]}=g(Z^{[2]})=\lambda(W^{[2]}A^{[1]}+B^{[2]}) =\lambda(W^{[2]}\lambda(W^{[1]}X+B^{[1]})+B^{[2]}) =\lambda^{2}W^{[2]}W^{[1]}X+\lambda^{2}W^{[2]}B^{[1]}+\lambda B^{[2]}

A^{[2]}=W^{'}X+B^{'} ,其中 W^{'}=\lambda^{2}W^{[2]}W^{[1]} B^{'}=\lambda^{2}W^{[2]}B^{[1]}+\lambda B^{[2]} 。经过推导,并将其拓展可得,无论网络中隐含层的层数为多少,其最终结果都是输入 X 的线性拟合。这表明没有引入非线性激活函数的神经网络和直接使用线性模型的最终效果相同。那么,也就是说神经网络中的隐含层不起作用。因此,要使神经网络能够发挥其作用,其激活函数必须是非线性函数。

ReLu函数的非线性

ReLU函数虽然在 X0 的区间上是导数恒为 0 的线性函数, X=0 的区间上是导数恒为 1 的线性函数。但是,从整体来看,在定义域为 -\inftyX+\infty 区间上却是一个非线性函数,或者说是分段线性函数。

由于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 实验室设备网 版权所有