首页 > 编程知识 正文

bp神经网络sigmoid函数(神经网络损失函数)

时间:2023-05-05 23:18:17 阅读:95766 作者:3454

从GitHub中选择

作者:大卫谢汉恩

机器的心编译

本文对包括Relu、Sigmoid在内的26种激活函数进行了可视化,附加了神经网络的相关属性,为了解激活函数提供了良好的资源。

在神经网络中,激活函数决定给定输入集从节点的输出。 这个非线性激活函数允许网络复制复杂的非线性行为。 正如大多数神经网络利用某种形式的梯度下降进行优化一样,激活函数必须是可微分的。 另外,复杂的激活函数有可能引起梯度消失和爆炸的问题。 因此,神经网络倾向于引入一些特定的激活函数(identity、sigmoid、ReLU及其变体)。

以下是26个激活函数的图表及其一阶导数,图表的右侧是与神经网络相关的几个属性。

1 .步骤

激活函数Step倾向于理论上而非实际上,模仿生物神经元是否全部存在的属性。 由于导数为0,因此不适用于神经网络。 这意味着基于梯度的优化方法是不可能的,除非定义了零点导数。

2 .身份

当函数Identity处于活动状态时,节点的输入等于输出。 最适合于潜在行为为线性(类似线性回归)的任务。 如果存在非线性,则单独使用该激活函数是不够的,但在最终输出节点上仍可以作为激活函数用于回归任务。

3 .雷卢u

修正线性单元(Rectified linear unit,ReLU )是神经网络中最常用的激活函数。 保持了step函数的生物学启发。 只有在输入超过阈值时神经元才会激活。 但是,如果输入为正,则导数不为零,因此可以进行基于梯度的学习。 但是,如果x=0,则导数未定义。 使用此函数可以加快计算,因为函数和导数都不包含复杂的数学运算。 但是,如果输入为负值,ReLU的学习速度会变慢,神经元有时会直接无效。 在这种情况下,由于输入小于零,坡度为零,因此权重不会更新,在剩下的训练中会一直保持安静。

4. Sigmoid

Sigmoid在logistic回归中的重要地位而闻名,值域在0到1之间。 Logistic Sigmoid (或在常规称呼中,Sigmoid )激活函数在神经网络中引入了概率的概念。 的导数不是零,很容易计算(初始输出的函数)。 但是,在分类任务中,sigmoid正在被Tanh函数所取代。 这是因为后者是奇函数。

5. Tanh

在分类任务中,双曲正切函数(Tanh )取代了Sigmoid函数成为标准的激活函数,具有许多神经网络所喜爱的特点。 它完全可以微分,相反对称,对称的中心在原点。 为了解决学习缓慢或没有梯度的问题,可以使用此函数的更平缓的变量log-log、softsign、symmetrical sigmoid等

6 .断开连接

一种经典的(并且广泛使用的) ReLU激活函数变体,带有泄漏修正线性单元)的输出对负值的输入具有很小的梯度。 由于导数不总是零,因此可以减少静默神经元的出现,从而可以进行基于梯度的学习(虽然会变慢)。

7 .预配置

参数化修正线性单元(参数化线性单元,PReLU )是ReLU修正系统激活函数的一部分。 和RReLU和Leaky ReLU有共同点。 也就是说,在负值的输入中添加了线性项。 最重要的区别是,这个线性项的斜率实际上是通过模型训练学习的。

8.r雷露

具有随机泄漏的修正线性单元(Randomized Leaky R

ectified Linear Unit,RReLU)也属于 ReLU 修正类激活函数的一员。和 Leaky ReLU 以及 PReLU 很相似,为负值输入添加了一个线性项。而最关键的区别是,这个线性项的斜率在每一个节点上都是随机分配的(通常服从均匀分布)。

9. ELU

指数线性单元(Exponential Linear Unit,ELU)也属于 ReLU 修正类激活函数的一员。和 PReLU 以及 RReLU 类似,为负值输入添加了一个非零输出。和其它修正类激活函数不同的是,它包括一个负指数项,从而防止静默神经元出现,导数收敛为零,从而提高学习效率。

10. SELU

扩展指数线性单元(Scaled Exponential Linear Unit,SELU)是激活函数指数线性单元(ELU)的一个变种。其中λ和α是固定数值(分别为 1.0507 和 1.6726)。这些值背后的推论(零均值/单位方差)构成了自归一化神经网络的基础(SNN)。

11. SReLU

S 型整流线性激活单元(S-shaped Rectified Linear Activation Unit,SReLU)属于以 ReLU 为代表的整流激活函数族。它由三个分段线性函数组成。其中两种函数的斜度,以及函数相交的位置会在模型训练中被学习。

12. Hard Sigmoid

Hard Sigmoid 是 Logistic Sigmoid 激活函数的分段线性近似。它更易计算,这使得学习计算的速度更快,尽管首次派生值为零可能导致静默神经元/过慢的学习速率(详见 ReLU)。

13. Hard Tanh

Hard Tanh 是 Tanh 激活函数的线性分段近似。相较而言,它更易计算,这使得学习计算的速度更快,尽管首次派生值为零可能导致静默神经元/过慢的学习速率(详见 ReLU)。

14. LeCun Tanh

LeCun Tanh(也被称作 Scaled Tanh)是 Tanh 激活函数的扩展版本。它具有以下几个可以改善学习的属性:f(± 1) = ±1;二阶导数在 x=1 最大化;且有效增益接近 1。

15. ArcTan

视觉上类似于双曲正切(Tanh)函数,ArcTan 激活函数更加平坦,这让它比其他双曲线更加清晰。在默认情况下,其输出范围在-π/2 和π/2 之间。其导数趋向于零的速度也更慢,这意味着学习的效率更高。但这也意味着,导数的计算比 Tanh 更加昂贵。

16. Softsign

Softsign 是 Tanh 激活函数的另一个替代选择。就像 Tanh 一样,Softsign 是反对称、去中心、可微分,并返回-1 和 1 之间的值。其更平坦的曲线与更慢的下降导数表明它可以更高效地学习。另一方面,导数的计算比 Tanh 更麻烦。

17. SoftPlus

作为 ReLU 的一个不错的替代选择,SoftPlus 能够返回任何大于 0 的值。与 ReLU 不同,SoftPlus 的导数是连续的、非零的,无处不在,从而防止出现静默神经元。然而,SoftPlus 另一个不同于 ReLU 的地方在于其不对称性,不以零为中心,这兴许会妨碍学习。此外,由于导数常常小于 1,也可能出现梯度消失的问题。

18. Signum

激活函数 Signum(或者简写为 Sign)是二值阶跃激活函数的扩展版本。它的值域为 [-1,1],原点值是 0。尽管缺少阶跃函数的生物动机,Signum 依然是反对称的,这对激活函数来说是一个有利的特征。

19. Bent Identity

激活函数 Bent Identity 是介于 Identity 与 ReLU 之间的一种折衷选择。它允许非线性行为,尽管其非零导数有效提升了学习并克服了与 ReLU 相关的静默神经元的问题。由于其导数可在 1 的任意一侧返回值,因此它可能容易受到梯度爆炸和消失的影响。

20. Symmetrical Sigmoid

Symmetrical Sigmoid 是另一个 Tanh 激活函数的变种(实际上,它相当于输入减半的 Tanh)。和 Tanh 一样,它是反对称的、零中心、可微分的,值域在 -1 到 1 之间。它更平坦的形状和更慢的下降派生表明它可以更有效地进行学习。

21. Log Log

Log Log 激活函数(由上图 f(x) 可知该函数为以 e 为底的嵌套指数函数)的值域为 [0,1],Complementary Log Log 激活函数有潜力替代经典的 Sigmoid 激活函数。该函数饱和地更快,且零点值要高于 0.5。

22. Gaussian

高斯激活函数(Gaussian)并不是径向基函数网络(RBFN)中常用的高斯核函数,高斯激活函数在多层感知机类的模型中并不是很流行。该函数处处可微且为偶函数,但一阶导会很快收敛到零。

23. Absolute

jqdym,绝对值(Absolute)激活函数返回输入的绝对值。该函数的导数除了零点外处处有定义,且导数的量值处处为 1。这种激活函数一定不会出现梯度爆炸或消失的情况。

24. Sinusoid

如同余弦函数,Sinusoid(或简单正弦函数)激活函数为神经网络引入了周期性。该函数的值域为 [-1,1],且导数处处连续。此外,Sinusoid 激活函数为零点对称的奇函数。

25. Cos

如同正弦函数,余弦激活函数(Cos/Cosine)为神经网络引入了周期性。它的值域为 [-1,1],且导数处处连续。和 Sinusoid 函数不同,余弦函数为不以零点对称的偶函数。

26. Sinc

Sinc 函数(全称是 Cardinal Sine)在信号处理中尤为重要,因为它表征了矩形函数的傅立叶变换(Fourier transform)。作为一种激活函数,它的优势在于处处可微和对称的特性,不过它比较容易产生梯度消失的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。