sigmoid函数求导_激活函数综述

话不多说,开干!

激活函数将非线性引入网络,因此激活函数自身也被称为非线性。神经网络是普适的函数逼近器,而深度神经网络基于反向传播训练,因此要求可微激活函数。反向传播在这一函数上应用梯度下降,以更新网络的权重。理解激活函数非常重要,因为它对深度神经网络的质量起着关键的作用。本文将罗列和描述不同的激活函数。

本文主要介绍常用的几种激活函数。

重点写在前面: 选择激活函数时,优先选择ReLU及其变体,而不是sigmoid或tanh。同时ReLU及其变体训练起来更快。如果ReLU导致神经元死亡,使用Leaky ReLU或者ReLU的其他变体。sigmoid和tanh受到消失梯度问题的困扰,不应该在隐藏层中使用。隐藏层使用ReLU及其变体较好。使用容易求导和训练的激活函数。

  1. softmax函数

softmax 也被称为归一化的指数函数,是逻辑函数的扩展。作用是将K维的实数域上的数值压缩到K维的(0,1)值域上,并且K个数值的和为1.在概率论中,这个公式可以描述一个有K种不同取值的离散变量的分布。因此,在分类问题中经常使用softmax函数进行分类。

公式如下:

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是

a5948bccb10cbc8791fc8b14cd621fac.png

更形象的如下图表示

e3ceae50000be341cfbd9e209744139d.png

softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!

2.线性激活函数

恒等函数(Identity)线性激活(Linear activation)函数是最简单的激活函数。输出和输入成比例。线性激活函数的问题在于,它的导数是常数,梯度也是常数,梯度下降无法工作。

2ce6b2f6d5712e029a2996192d950870.png

值域:(-∞, +∞)

例子:f(2) = 2或f(-4) = -4

6b0360b8ac4b3780bc1d1041b35af05c.png

3. 阶跃函数

阶跃函数(Heaviside step function)通常只在单层感知器上有用,单层感知器是神经网络的早期形式,可用于分类线性可分的数据。这些函数可用于二元分类任务。其输出为A1(若输入之和高于特定阈值)或A0(若输入之和低于特定阈值)。感知器使用的值为A1 = 1、A0 = 0.

0a49f994101e9ee15e4c5c2aa07eb9a3.png

值域:0或1

例子:f(2) = 1、f(-4) = 0、f(0) = 0、f(1) = 1

94e5c477c864f0fb5e49e4409485467a.png

4. sigmoid函数

sigmoid函数,也称逻辑激活函数(Logistic activation function)最常用于二元分类问题。它有梯度消失问题。在一定epoch数目之后,网络拒绝学习,或非常缓慢地学习,因为输入(X)导致输出(Y)中非常小的改动。现在,sigmoid函数主要用于分类问题。这一函数更容易碰到后续层的饱和问题,导致训练变得困难。计算sigmoid函数的导数非常简单。

就神经网络的反向传播过程而言,每层(至少)挤入四分之一的误差。因此,网络越深,越多关于数据的知识将“丢失”。某些输出层的“较大”误差可能不会影响相对较浅的层中的神经元的突触权重(“较浅”意味着接近输入层)。

33b4448c44ae05a1cff173791b9e0824.png

sigmoid函数定义

adbdf81d35c526ff7bdfa91cbc65e97b.png

sigmoid函数的导数

值域:(0, 1)

例子:f(4) = 0.982、f(-3) = 0.0474、f(-5) = 0.0067

1d3b25acadeaf1e916d1efcadc21cb57.png

44d7558e5c41ac7347a04a198b65a9a8.png

5. tanh函数

tanh函数是拉伸过的sigmoid函数,以零为中心,因此导数更陡峭。tanh比sigmoid激活函数收敛得更快。

ab29de78a94e086bd2048052dd3854df.png

值域:(-1, 1)

例子:tanh(2) = 0.9640、tanh(-0.567) = -0.5131、tanh(0) = 0

64e2e8c9001eb8d1a2fd42d69bfb57d3.png

图片来源:维基百科

6. ReLU函数

ReLU(Rectified Linear Unit,修正线性单元)训练速度比tanh快6倍。当输入值小于零时,输出值为零。当输入值大于等于零时,输出值等于输入值。当输入值为正数时,导数为1,因此不会出现sigmoid函数反向传播时的挤压效应。

不幸的是,ReLU在训练时可能很脆弱,可能“死亡”。例如,通过ReLU神经元的较大梯度可能导致权重更新过头,导致神经元再也不会因为任何数据点激活。如果这一情况发生了,经过这一单元的梯度从此以后将永远为零。也就是说,ReLU单元可能在训练中不可逆地死亡,因为它们被从数据流形上踢出去了。例如,你可能发现,如果学习率设置过高,40%的网络可能“死亡”(即神经元在整个训练数据集上永远不会激活)。 设置一个合适的学习率可以缓解这一问题。

ad907746f3db1c4c8066f756e5747d69.png

值域:[0, x)

例子:f(-5) = 0、f(0) = 0、f(5) = 5

332f344ce45f84f3dbdad5815a34c4c7.png

7. Leaky ReLU函数

Leaky ReLU让单元未激活时能有一个很小的非零梯度。这里,很小的非零梯度是0.01.是对ReLU函数的一个改进。

988189e18731ec9e8c4d8f0135cbeb08.png

值域:(-∞, +∞)

03d786fd18241649d9fc0233b475fd73.png

8. PReLU函数

PReLU(Parametric Rectified Linear Unit)函数类似Leaky ReLU,只不过将系数(很小的非零梯度)作为激活函数的参数,该参数和网络的其他参数一样,在训练过程中学习。

2eba10679d7fd2d5220e19d96599efb7.png

值域:(-∞, +∞)

03d786fd18241649d9fc0233b475fd73.png

9. RReLU函数

RReLU也类似Leaky ReLU,只不过系数(较小的非零梯度)在训练中取一定范围内的随机值,在测试时固定。

8526f7581e7f90f5851b0cc5b75805ab.png

值域:(-∞, +∞)

0019d669f3ec3f1a264eafebe5cd62f1.png

10. ELU函数

ELU(Exponential Linear Unit,指数线性单元)尝试加快学习速度。基于ELU,有可能得到比ReLU更高的分类精确度。这里α是一个超参数(限制:α ≥ 0)。

37bec857e94d2b48cd5f84e624dfddd4.png

值域:(-α, +∞)

d2538e28160ec2708999e01fca2ae871.png

11. SELU函数

SELU(Scaled Exponential Linear Unit,拉伸指数线性单元)是ELU经过拉伸的版本。

19e9f48d7b1748856c9072f2adfa0533.png

12. SReLU函数

SReLU(S-shaped Rectified Linear Activation Unit,S型修正线性激活单元)由三个分段线性函数组成。系数作为参数,将在网络训练中学习。

697568bfcb73df6e60080cf2dc42a950.png

值域:(-∞, +∞)

65ca659465d08c752ff58985aa463c2f.png

13. APL函数

APL(Adaptive Piecewise Linear,自适应分段线性)函数

da1e26f7891db71d035a6d9033294389.png

图片来源:arXiv:1512.07030

值域:(-∞, +∞)

9e3e455448ca6e1e5c54d7789a6a8901.png

14. SoftPlus函数

SoftPlus函数的导数为逻辑(logistic)函数。大体上,ReLU和SoftPlus很相似,只不过SoftPlus在接近零处平滑可微。另外,计算ReLU及其导数要比SoftPlus容易很多。

bfe3e54f2f3f972ac6662e73e4e5d7dc.png

值域:(0, ∞)

ec80f0e0d0a469f766b11e53d088a13b.png

332f344ce45f84f3dbdad5815a34c4c7.png

15. bent identity函数

bent identity函数,顾名思义,将恒等函数弯曲一下。

abeca19929dc67c8a130b91d67b0943b.png

值域:(-∞, +∞)

b5810c322c00dd2abf84495118e0afd2.png

参考如下:

  1. 激活函数初学者指南人工智能_机器人之家
  2. 忆臻:详解softmax函数以及相关求导过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值