激活函数(sigmoid、tanh、ReLU、softmax)

您所在的位置:网站首页 常见的求导函数公式有哪些图片 激活函数(sigmoid、tanh、ReLU、softmax)

激活函数(sigmoid、tanh、ReLU、softmax)

2024-07-15 01:32| 来源: 网络整理| 查看: 265

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。

典型的阶跃函数作为激活函数为例,下图展示了一个神经元是如何喂入激活函数以及如何得到该神经元最终的输出:

激活函数在神经网络中的作用有很多,主要作用是给神经网络提供非线性建模能力。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。常用的激活函数有 sigmoid、 tanh、 relu、 softmax等。

(一)sigmoid函数

sigmoid函数将输入变换为(0,1)上的输出。它将范围(-inf,inf)中的任意输入压缩到区间(0,1)中的某个值:

sigmoid函数是⼀个⾃然的选择,因为它是⼀个平滑的、可微的阈值单元近似。

当我们想要将输出视作⼆元分类问题的概率时, sigmoid仍然被⼴泛⽤作输出单元上的激活函数(你可以将sigmoid视为softmax的特例)。然而, sigmoid在隐藏层中已经较少使⽤,它在⼤部分时候被更简单、更容易训练的ReLU所取代。下面为sigmoid函数的图像表示,当输入接近0时,sigmoid更接近线形变换。

sigmoid函数的导数为下面的公式:

 sigmoid函数的导数图像如下所示。当输入值为0时,sigmoid函数的导数达到最大值0.25;而输入在任一方向上越远离0点时,导数越接近0。

什么情况下适合使用sigmoid?

sigmoid函数的输出范围是0到1。由于输出值在0和1之间,它相当于将每个神经元的输出归一化。 特别适合用于需要将预测概率作为输出的模型。因为任何概率值的范围是[0,1],而且我们往往希望概率值尽量确定(即概率值远离0.5),所以s型曲线是最理想的选择。 平滑梯度。显然,sigmoid函数在定义域上处处可导。 sigmoid函数是可微的,这意味着我们可以找到任意两点之间的斜率。 明确的预测值。也就是说倾向于接近0或1。

sigmoid有哪些缺点?

倾向于梯度消失。当输入值z zz的绝对值过大时,导数很小(远小于1),这将导致梯度消失以及深度神经网络学习能力变差。 函数输出不以0为中心,这会降低权值更新的效率。 sigmoid需要指数运算,计算机运算较慢。 (二)tanh函数

与sigmoid函数类似,tanh函数也能将其输入压缩转换到区间(-1,1)上,tanh函数的公式如下:

tanh函数的图像如下所示,当输入在0附近时,tanh函数接近线形变换。函数的形状类似于sigmoid函数,不同的是tanh函数关于坐标系原点中心对称。

tanh函数的导数是:

 tanh函数的导数如下,当输入接近0时,tanh函数的导数接近最大值1。与sigmoid函数图像中看到的类似,输入在任一方向上远离0点,导数越接近0。

tanh函数的函数图像和sigmoid的曲线很像,但tanh有一些优点:

当输入过大或过小时,输出几乎是平滑的,梯度小,不利于权值的更新。区别在于输出间隔。tanh的输出区间为1,整个函数以0为中心,优于sigmoid。 其主要优点是负数输入将被映射为接近-1,而零输入将被映射为tanh图中接近零的地方。 (三)ReLU (Rectified Linear Unit)

线性整流单元(ReLU),ReLU提供了一种非常简单的非线性变换。给定元素x,ReLU函数被定义为该元素与0的最大值。

ReLU函数通过将相应的活性值设为0,仅保留正元素并丢弃所有负元素。如下为ReLU函数的曲线图。

当输入为负时,reLU函数的导数为0,而当输入为正时,ReLU函数的导数为1。当输入值等于0时,ReLU函数不可导。如下为ReLU函数的导数:

ReLU函数的求导表现的很好:要么让参数消失,要么让参数通过。ReLU减轻了神经网络的梯度消失问题。ReLU函数有很多变体,如LeakyReLU,pReLU等。

ReLU (Rectified Linear Unit) 函数是目前在深度学习中较其他激活函数更受欢迎的激活函数。与sigmoid和tanh相比,ReLU有如下优点:

当输入值为正时,不存在梯度饱和问题(训练过程中,梯度逐渐接近0,导致权重几乎不更新)。 计算速度快。

缺点:

Dead ReLU问题。当输入值为负数时,将直接舍弃该输入值并用0代替,这样就导致使用链式求导法则求导时,求到这就中断了(或者说梯度为0)。这个问题在有些领域是敏感的,有些是不敏感的。但是在反向传播过程中,如果输入一个负数,梯度将完全为零,这与sigmoid函数和tanh函数的问题是一样的。 ReLU函数的输出要么为0,要么为正数,这意味着ReLU函数不是以0为中心的函数。 (四)softmax函数

在二分类任务时,经常使用sigmoid激活函数。而在处理多分类问题的时候,需要使用softmax函数。它的输出有两条规则。

每一项的区间范围的(0,1) 所有项相加的和为1.

假设有一个数组V,Vi​代表V中的第i个元素,那么这个元素的softmax值的计算公式为:

那么在搭建神经网络的时候,应该如何选择激活函数?

如果搭建的神经网络的层数不多的时候,选择sigmoid、tanh、relu都可以,如果搭建的网络层数较多的时候,选择不当不当会造成梯度消失的问题,此时一般不宜选择sigmoid、tanh激活函数,最好选择relu激活函数。 在二分类问题中,网络的最后一层适合使用sigmoid激活函数;而多分类任务中,网络的最后一层使用softmax激活函数。  


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3