深度学习之激活函数

激活函数 Sigmod 及其导数 sigmod 是最常见的激活函数之一。其图像和导数如文章所示。 阅读详情

 

在开始学习之前推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

要了解什么是激活函数,首先要了解神经网络模型的基本工作原理。

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。信号从一个神经元进入,经过非线性的激活函数,传入到下一层神经元;再经过该层神经元的激活,继续往下传递,如此循环往复,直到输出层。正是由于这些非线性函数的反复叠加,才使得神经网络有足够的capacity来抓取复杂的pattern,在各个领域取得state-of-the-art的结果。显而易见,激活函数在深度学习中举足轻重,也是很活跃的研究领域之一。

1|2作用

激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 那么激活函数应该具有什么样的性质呢?

1|3性质

  • 可微性: 当优化方法是基于梯度的时候,这个性质是必须的。 
  • 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。 
  • 输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况少,一般需要更小的learning rate。

2|0常见的激活函数

如图,是激活函数的大分类:

目前来讲,选择怎样的激活函数不在于它能否模拟真正的神经元,而在于能否便于优化整个深度神经网络。在分别介绍各种激活函数并进行优劣对比和决策分析之前,先科普一个非常重要的概念——饱和。

2|1饱和

假设h(x)是一个激活函数,对于其导数h′(x)而言:

  • 当xx趋近于正无穷时,函数的导数趋近于0,我们称其为右饱和;

    limx→+∞h′(x)=0

  • 当xx趋近于负无穷时,函数的导数趋近于0,称其为左饱和。

    limx→−∞h′(x)=0

若一个函数既满足左饱和又满足右饱和,则该函数为饱和函数,否则为非饱和函数。

典型的饱和激活函数有如Sigmoid和tanh,非饱和激活函数有ReLU。相较于饱和激活函数,非饱和激活函数可以解决“梯度消失”的问题,加快收敛。

硬饱和和软饱和

对于任意的x,若存在常数c,当x>c时,恒有h′(x)=0成立,则称其为右硬饱和。同理,若存在常数c,当x<c时,恒有h′(x)=0成立,则称其为左硬饱和。当一个函数既满足又硬饱和和左硬饱和,则称该函数为硬饱和。

对于任意的x,若存在常数c,当x>c时,恒有h′(x)=0,则称其为右软饱和。同理,若存在常数c,当x<c时,恒有h′(x)=0,则称其为左软饱和。当一个函数既满足右软饱和和左软饱和,则称该函数为软饱和。

2|2Sigmoid

Sigmoid函数的一般形式是:

σ(x;a)=a1+e−ax

这里,参数aa控制Sigmoid函数的形状,对函数基本性质没有太大的影响。在神经网络中,一般设置a=1,直接省略。

Sigmoid 函数的导数:

σ′(x)=σ(x)(1+σ(x))

特性:Sigmoid是使用范围最广的一类激活函数,具有指数函数的形状,平滑易于求导,在物理上最接近神经元。它的输出范围为[0, 1],可表示成概率或者用于数据的归一化。

三大缺点

一、梯度消失问题(Gradien Vanishing)

Sigmoid函数在深度网络中常常会导致导数逐渐变为0,使得参数无法被更新,神经网络无法被优化。原因在于两点:

(1)Sigmoid是饱和函数,具有软饱和性。从上图左可以看出,当σ(x)中x较大或较小时,导数接近00,而反向传播的数学依据是微积分求导的链式法则,当前层的导数需要之前各层导数的乘积,几个小数的相乘,结果会很接近00。同时,对于权重矩阵的初始化,为了防止饱和,也必须特别留意:如果初始化权重过大,可能很多神经元得到一个比较小的梯度,致使神经元不能很好的更新权重提前饱和,神经网络就几乎不学习。

(2)从上图右也可看出Sigmoid的导数都是小于0.25的,这意味着导数在每一层至少会被压缩为原来的1/4,通过两层后被变为1/16,…,通过10层后为1/1048576。那么在进行反向传播的时候,梯度相乘结果会慢慢地趋近于0。这样,几乎就没有梯度信号通过神经元传递到前面层的梯度更新中,使得前面层的权值几乎没有更新,前层网络很难得到有效训练,这类梯度消失跟网络深度有关。

二、输出不是关于原点中心对称的(zero-centered)

关于激活函数不zero-centered所带来的问题,先讲一下三个概念:

收敛速度

模型的最优解即是模型参数的最优解。通过逐轮迭代,模型参数会被更新到接近其最优解。这一过程中,迭代轮次多,则我们说模型收敛速度慢;反之,迭代轮次少,则我们说模型收敛速度快。

参数更新

深度学习一般的学习方法是反向传播。简单来说,就是通过链式法则,求解全局损失函数L(x→)对某一参数w的偏导数(梯度);而后辅以学习率η,向梯度的反方向更新参数w。

w←w−η⋅∂L∂w

考虑学习率ηη是全局设置的超参数,参数更新的核心步骤即是计算∂L∂w。再考虑到对于某个神经元来说,其输入与输出的关系是

f(x→;w→,b)=f(z)=f(∑iwixi+b)

因此,对于参数wi来说,$$\frac{L}{w_i] = \frac{\partial L}{\partial f} \frac{\partial f}{\partial z} \frac{\partial z}{\partial w_i} = x_i\cdot \frac{\partial L}{\partial f} \frac{\partial f}{\partial z}$$

因此,参数的更新步骤变为

wi←wi−ηxi⋅∂L∂f∂f∂z

更新方向

由于wiwi是上一轮迭代的结果,此处可视为常数,而ηη是模型超参数,参数wiwi的更新方向实际上由xi⋅∂L∂f∂f∂zxi⋅∂L∂f∂f∂z决定。

又考虑到∂L∂f∂f∂z∂L∂f∂f∂z对于所有的$w_i来说是常数,因此各个wiwi更新方向之间的差异,完全由对应的输入值xixi的符号决定。

至此,为了描述方便,我们以二维的情况为例。亦即,神经元描述为

f(x→;w→,b)=f(w0x0+w1x1+b)

现在假设,参数w0,w1w0,w1的最优解w∗0,w∗1满足条件

{w0<w∗0w1≥w∗1

这也就是说,我们希望w0w0适当增大,但希望w1适当减小。考虑到上一小节提到的更新方向的问题,这就必然要x0x0和x1x1符号相反。

但在 Sigmoid 函数中,输出值恒为正。这也就是说,如果上一级神经元采用 Sigmoid 函数作为激活函数,那么我们无法做到x0和x1符号相反。此时,模型为了收敛,不得不向逆风前行的风助力帆船一样,走Z字形逼近最优解。

如图,模型参数走绿色箭头能够最快收敛,但由于输入值的符号总是为正,所以模型参数可能走类似红色折线的箭头。如此一来,使用Sigmoid函数作为激活函数的神经网络,收敛速度就会慢上不少了。 

三、计算耗时

指数函数的幂运算,计算量大,相对比较消耗计算资源,时间较长。

2|3tanh

tanh 函数全称 Hyperbolic Tangent,即双曲正切函数。它的表达式是

tanh(x)=2σ(2x)−1=ex−e−xex+e−x

双曲正切函数的导数:

tahn′(x)=1−tahn2(x)

 

特性:tanh和Sigmoid非常相似,实际上,tanh是Sigmoid的变形:tanh(x)=2sigmoid(2x)−1。与Sigmoid不同的是,tanh是“零为中心”的。因此,实际应用中,tanh会比Sigmoid更好一些。但是在饱和神经元的情况下,tanh还是没有解决梯度消失问题。

缺点:依然是幂运算,相对耗时;导数值较小(小于1),也具有软饱和性,对梯度消失问题依旧无能为力;

2|4ReLU

ReLU是目前使用最频繁的一个函数,如果你不知道你的激活函数应该选择哪个,那么建议你选择ReLU试试。一般情况下,将ReLU作为你的第一选择。

ReLU全称是Rectified Linear Unit,中文名字:修正线性单元。ReLU是Krizhevsky、Hinton等人在2012年《ImageNet Classification with Deep Convolutional Neural Networks》论文中提出的一种线性且不饱和的激活函数。它的数学表达式为:

 

f(x)=max(0,x)

导数为:

ififz<0,σ′(x)=0z≥0,σ′(x)=1

ReLU的优点

(1)ReLU一定程度上缓解了梯度消失的问题,至少xx在正区间内(x > 0),神经元不会饱和;

(2)由于ReLU线性(正区间)、非饱和的特性,在SGD中能够快速收敛,比Sigmoid与tanh要快很多;

(3)运算速度要快很多。ReLU函数只有线性关系(正区间),不需要指数计算,不管在前向传播还是反向传播,计算速度都比Sigmoid和tanh快。

ReLU的缺点

(1)ReLU的输出不是“零为中心”(Not zero-centered output)。

(2)随着训练的进行,可能会出现神经元“死亡”,权重无法更新的情况,且这种神经元的死亡是不可逆转的死亡。

 

这里重点讲一下

Dead ReLU Problem

神经元“死亡”,意味着表示某些神经元可能永远不会被激活, 导致其相应的参数永远不能被更新,其本质是由于Relu在x<0x<0时其梯度为00所导致的。

假设有一个神经网络的输入W遵循某种分布,对于一组固定的参数(样本),w的分布也就是ReLU的输入的分布。假设ReLU输入是一个低方差中心在+0.1的高斯分布。

在这个场景下:

  • 大多数ReLU的输入是正数,因此
  • 大多数输入经过ReLU函数能得到一个正值(ReLU is open),因此
  • 大多数输入能够反向传播通过ReLU得到一个梯度,因此
  • ReLU的输入w一般都能得到更新(通过随机反向传播SGD)

现在,假设在随机反向传播的过程中,有一个巨大的梯度经过ReLU,由于ReLU是打开的,将会有一个巨大的梯度传给输入w。这会引起输入w巨大的变化,也就是说输入w的分布会发生变化,假设输入w的分布现在变成了一个低方差的,中心在-0.1高斯分布。

在这个场景下:

  • 大多数ReLU的输入是负数,因此
  • 大多数输入经过ReLU函数能得到一个0(ReLU is close),因此
  • 大多数输入不能反向传播通过ReLU得到一个梯度,因此
  • ReLU的输入w一般都得不到更新

发生了什么?只是ReLU函数的输入的分布函数发生了很小的改变(-0.2的改变),导致了ReLU函数行为质的改变。我们越过了0这个边界,ReLU函数就几乎永久的关闭了。更重要的是ReLU函数一旦关闭,参数w就得不到更新,这就是所谓的"dying ReLU"。

从数学上说,这是因为ReLU的数学公式导致的f(x)=max(x,0),导数:∇xf(x)=0(x≤0)。所以可以看出,如果在前向传播的过程中ReLU is close(输出是0),那么反向传播时,ReLU也是close的(梯度是0)。

结论:出现Dead ReLU Problem一般有两种情况:

(1)learning rate太高导致在反向传播的过程中参数更新太大,而大的梯度更新可能会导致参数W的分布小于0,当流经过ReLU单元时可能导致神经元不会在以后任何数据节点再被激活,如当进入Relu单元的数都是负数时,Relu将其非线性化成0。当这发生时,经过此神经元的梯度也将永远为0,参数就不会被更新,导致神经元不再学习。也就是说,ReLU单元可能不可逆地在训练中的数据流中关闭(死亡),之后的参数永久不更新将导致训练数据多样化的丢失。

(2)非常不幸的参数初始化,这种情况比较少见 ;

解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

 

引出的问题:神经网络中ReLU是线性还是非线性函数?为什么relu这种“看似线性”(分段线性)的激活函数所形成的网络,居然能够增加非线性的表达能力?

  • ReLU是非线性激活函数。
  • 让我们先明白什么是线性网络?如果把线性网络看成一个大的矩阵M。那么输入样本A和B,则会经过同样的线性变换MA,MB(这里A和B经历的线性变换矩阵M是一样的)
  • 的确对于单一的样本A,经过由relu激活函数所构成神经网络,其过程确实可以等价是经过了一个线性变换M1,但是对于样本B,在经过同样的网络时,由于每个神经元是否激活(0或者Wx+b)与样本A经过时情形不同了(不同样本),因此B所经历的线性变换M2并不等于M1。因此,ReLU构成的神经网络虽然对每个样本都是线性变换,但是不同样本之间经历的线性变换M并不一样,所以整个样本空间在经过ReLU构成的网络时其实是经历了非线性变换的。

在实际训练中,如果学习率设置的太高,可能会发现网络中40%的神经元都会死掉,且在整个训练集中这些神经元都不会被激活。所以,设置一个合适的较小的学习率,会降低这种情况的发生。而为了解决神经元节点死亡的情况,有人提出了Leaky ReLU、P-ReLu、R-ReLU、ELU等激活函数。

2|5Leaky ReLU

ReLU是将所有的负值设置为0,造成神经元节点死亡情况。相反,Leaky ReLU是给所有负值赋予一个非零的斜率。Leaky ReLU激活函数是在声学模型(2013)中首次提出来的。它的数学表达式为:

f(x)={x,αx,ifx>0ifx≤0

导数:

f′(x)={1αx>0x≤0

优点:

  1. 神经元不会出现死亡的情况。
  2. 对于所有的输入,不管是大于等于0还是小于0,神经元不会饱和。
  3. 由于Leaky ReLU线性、非饱和的形式,在SGD中能够快速收敛。
  4. 计算速度要快很多。Leaky ReLU函数只有线性关系,不需要指数计算,不管在前向传播还是反向传播,计算速度都比sigmoid和tanh快。

缺点:Leaky ReLU函数中的参数αα需要通过先验知识人工赋值。

总结:Leaky ReLU很好的解决了“dead ReLU”的问题。因为Leaky ReLU保留了x小于0时的梯度,在x小于0时,不会出现神经元死亡的问题。对于Leaky ReLU给出了一个很小的负数梯度值α,这个值是很小的常数。比如:0.01。这样即修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。但是这个α通常是通过先验知识人工赋值的。

2|6P-ReLU

Parametric ReLU是基于参数的方法,是对Leaky ReLU的改进:可以自适应地从数据中学习参数。P-ReLU具有收敛速度快、错误率低的特点,可以用于反向传播的训练,可以与其他层同时优化。其数学表达式和导数与Leaky ReLU一样,区别只是参数α由back propagation学出来,而并非人工赋值:

 

Δai=μΔai+ϵ∂ϵ∂ai

特性:P-ReLU只增加了极少量的参数,也就意味着网络的计算量以及过拟合的危险性都只增加了一点点。特别的,当不同channels使用相同的α时,参数就更少了。

2|7R-ReLU

R-ReLU的英文全称是“Randomized Leaky ReLU”,中文名字叫“随机修正线性单元”,即Leaky ReLU的随机版本。它首次是在Kaggle的NDSB比赛中被提出来的,其图像和表达式如下图所示:

数学表达式:

yij={xijajixjiifxij≥0ifxji<0whereaji∼U(l,u),l<uandl,u∈[0,1)

R-ReLU的核心思想是:在训练过程中,α是从一个高斯分布U(l,u)中随机出来的值,然后再在测试过程中进行修正。在测试阶段,把训练过程中所有的aijaij取平均值。

特性:(1)RReLU是Leaky ReLU的random版本,在训练过程中,α是从一个高斯分布中随机出来的,然后再测试过程中进行修正。(2)数学形式与P-ReLU类似,但R-ReLU是一种非确定性激活函数,其参数是随机的。

2|8ReLU、Leaky ReLU、PReLU和RReLU的比较

总结

(1)P-ReLU中的α是根据数据变化的;

(2)Leaky ReLU中的α是固定的;

(3)R-ReLU中的α是一个在给定范围内随机抽取的值,这个值在测试环节就会固定下来。

2|9ELU

ELU的英文全称是“Exponential Linear Units”,中文全称是“指数线性单元”,是对ReLU激活函数的一种演变。将激活函数更能够保持一个noise-robust状态,所以提出一个具有负值的激活函数,这可以使得平均激活接近于零,从而加快学习速度。同时,它还能通过正值的标识来避免梯度消失的问题。根据一些研究显示,ELU分类精确度是高于ReLU的。

数学表达式为:

f(x)={x,α(ex−1),ifx>0otherwise

导数:

f′(x)={1,f(x)+α,ifx>0otherwise

特性:ELU通过在正值区间取输入xx本身减轻了梯度弥散问题(x>0x>0区间导数处处为1),这一点特性这四种激活函数都具备。四者当中只有ReLU的输出值没有负值,所以输出的均值会大于0,当激活值的均值非0时,就会对下一层造成一个bias,如果激活值之间不会相互抵消(即均值非0),会导致下一层的激活神经元有bias shift。如此叠加,神经元越多时,bias shift就会越大。相比ReLU,ELU可以取到负值,这让神经元元激活均值可以更接近0,类似于Batch Normalization的效果但是只需要更低的计算复杂度。虽然Leaky ReLU和P-ReLU都也有负值,但是它们不保证在不激活状态下(就是在输入为负的状态下)对噪声鲁棒。反观ELU在输入取较小值时具有软饱和(左侧软饱和,右侧无饱和,右侧的线性部分可以解决梯度消失问题),左侧的软饱和提升了对输入噪声的鲁棒性。如图所示,其中αα是一个可调整的参数,它控制着ELU负值部分在何时饱和。

总结:ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及不会有Dead ReLU问题,输出的均值接近0(zero-centered)。但它的一个小问题在于计算量稍大,需要计算指数,计算效率较低。

2|10Maxout

Maxout出现在ICML2013上(论文《Maxout Networks》),是由Goodfellow等人提出的一种很有特点的神经元。它的激活函数、计算的变量、计算方式和普通的神经元完全不同,并有两组权重。先得到两个超平面,再进行最大值计算。激活函数是对ReLU和Leaky ReLU的一般化归纳,没有ReLU函数的缺点,不会出现激活函数饱和神经元死亡的情况。

Maxout可以看作深度学习网络中的一层,如池化层、卷积层,我们可以把Maxout看成是网络的激活函数层,我们假设网络某一层的输入特征向量为:X=(x1,x2,…,xd,也就是我们输入是dd个神经元。Maxout隐藏层每个神经元的计算公式如下:

fi(x)=maxj∈[1,k]zij

其中,kk就是Maxout层所需要的参数了,由我们人为设定大小。就像Dropout一样,也有自己的参数p(每个神经元dropout概率),Maxout的参数是k。公式中z的计算公式为:其中zij=xTW...ij+bij。

权重WW是一个大小为(d,m,k)三维矩阵,b是一个大小为(m,k)的二维矩阵,这两个就是我们需要学习的参数。如果我们设定参数k=1,那么这个时候,网络就类似于以前我们所学普通的MLP网络。

我们可以这么理解,本来传统的MLP算法在第ii层到第i+1层,参数只有一组,然而现在我们不这么干了,我们在这一层同时训练nn组的w、b参数,然后选择激活值zz最大的作为下一层神经元的激活值,这个max(z)函数即充当了激活函数。

假设W是2维的,那么我们可以得出公式:f(x)=max(wT1x+b1,wT2x+b2)

可以注意到,ReLU和Leaky ReLU都是它的一个变形。Maxout的拟合能力非常强,它可以拟合任意的凸函数。Goodfellow在论文中从数学的角度上也证明了这个结论,只需要2个Maxout节点就可以拟合任意的凸函数,前提是“隐含层”节点的个数足够多。

优点:Maxout具有ReLU的所有优点,线性、不饱和性;同时没有ReLU的一些缺点。如:神经元的死亡。

缺点:从最后的激活函数公式14可以看出,每个神经元将有两组w,那么参数就增加了一倍。这就导致了整体参数的数量激增。

2|11Softmax

tanh函数和Sigmoid函数的作用是将输入映射到(0,1)(0,1)区间,从而判断属于某个类别,因此Sigmoid一般用于Logic Regression二分类,比如判断一个数是否大于0就是二分类,只有两个结果:是或否。但是现实中经常遇到更为复杂的分类问题比如MNIST问题,即识别手写数字是0~9中的哪一个,这里的分类就成了10类,就无法用Sigmoid来处理,Softmax就可以大展身手了。

Softmax的函数表达式:

y=eai∑Ck=1eaki∈1…C

这样可能并不是很清晰,换一个方式表达:

y=ei∑Cj=1eji∈1…C

假设分类结果有C种(MNIST中即有10种),y代表的就是第ii种的概率,那么结果会是一个C维向量(y1,y2,…,yc),其中y1代表该输出是第一类的概率,y2代表该输出是第2类的概率以此类推,然后我们选取其中概率最大的一个作为我们的结果。更通俗理解就是Softmax将输入值映射成属于每个类别的概率,且含有softmax激活函数的网络层有这样一个性质:∑ji=1σi(z)=1。

这里只介绍了Softmax的原理,而在反向传播中要用到Softmax的导数,这个导数的求解看似复杂其实也就是一个高中数学导数题,而这里有篇文章专门来介绍导数的求解,有兴趣的可以去看看:Softmax函数与交叉熵。

Softplus数学表达式:

f(x)=log(ex+1)

Softsign数学表达式:

f(x)=1|x|+1

3|0决策原则

目前还不存在定论,在实践过程中更多还是需要结合实际情况,考虑不同激活函数的优缺点综合使用。几点建议。

(1)深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。

(2)通常来说,不能把各种激活函数串起来在一个网络中使用。

(3)如果你不知道应该使用哪个激活函数, 那么请优先选择Relu。

(4)如果使用ReLU,那么一定要小心设置学习率(learning rate),并且要注意不要让网络中出现很多死亡神经元。如果死亡神经元过多的问题不好解决,可以试试Leaky ReLU、PReLU或者Maxout。

(5)除非在二分类问题中,否则请尽量不要使用sigmoid激活函数,可以试试tanh,不过预期效果可能还是比不上ReLU和Maxout。

(整理自网络)

参考资料:

https://www.cnblogs.com/wyshen/archive/2004/01/13/13399578.html

https://www.cnblogs.com/XDU-Lakers/p/10557496.html

https://blog.youkuaiyun.com/disiwei1012/article/details/79204243

https://zhuanlan.zhihu.com/p/25110450

https://zhuanlan.zhihu.com/p/44398148

https://zhuanlan.zhihu.com/p/41894523

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

 

数据库顶级会议 SIGMOD和另外两大数据库会议VLDB、ICDE构成了数据库领域的三个顶级会议。相对而言,SIGMOD比另外两个会议的含金量更高,被录取的难度更大。         ACM SIGMOD的论文录取率是很低的,平均录取率大约仅为15%-17%。以ACM SIGMOD 2007年在中国北京举行的那次为例,会议共收到论文480篇,录用了70篇。录用率仅为14.6%。而同为顶级会议的VLDB和ICDE 阅读详情

相关推荐

数据库领域顶会SIGMOD背后的故事,这篇文章全部告诉你~

SIGMOD数据管理国际会议(Special Interest Group on Management Of Data.)是由美国计算机协会(ACM)数据管理专业委员会(SIGMOD)发起、在数据库领域具有最高学术地位的国际性学术会议,所收录的论文代表了行业内的最高水平。会议的目的是在全球范围内为数据库领域的研究者、开发者以及用户提供一个探索最新学术思想和研究方法、交流开发技巧、工具以及经验的平台,引导和促进数据库学科的发展。 SIGMOD第一届会议于1974年在美国密西根(Michigan)召开,传统上

巨杉数据库技术社区 2316

从0到1 激活函数(一)sigmod函数

引言 本节主要是介绍神经网络中常见的激活函数-----sigmod函数。 sigmod的函数 简介 sigmod的函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,常被用作神经网络的激活函数,将变量映射到0,1之间。-------------摘自《百度百科》 sigmod函数也叫作Log...

秋水顽石 8万+

深度学习之激活函数选择

深度学习激活函数汇总 如果没有激活函数,即便再添加更多隐藏层,依然只能与仅含输入层的单层神经网络等价 常见网络: CNN:RNN:非线性、可微性、计算简单、非饱和性、单调性、参数少 GeLU、Mish > SELU > ELU > Leaky ReLU > ReLU 以原点为中心的激活函数更好,如ReLU、Leaky ReLU等σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}σ(x)=1+e−x1​ 优点: 1、将很大范围数据压缩到(0,1),标准化化神经元输出; 2、处处可

ueke1的博客 1980

Sigmod/Softmax变换

softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布。多个logistic回归通过叠加也同样可以实现多分类的效果,但是 softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。

皮皮blog 1万+

2021哈工大网安837考研初试经验贴

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_41797880的博客 6523

倍加福(P+F)R2000修改雷达IP

在调试车子的时候,用到了倍加福R2000的一款雷达,设备启动建图时发现建不了图,于是查看/scan发现话题无数据,尝试ping雷达接口发现ping不通,应该是IP地址与上位机端口的IP地址不对。首先查看雷达的IP地址,这个在雷达上有两个按键,按下后可以显示IP: 按两下右边的键再按一下左边的键雷达上会显示出IP号,这里拍的不是很清楚。查看到开始时雷达IP地址为192.168.111.10,而上位机ping的IP地址为192.168.188.50.与实际不同,所以需要对雷达进行配置。一台windows笔记本

YiYeZhiNian的博客 5890

深度学习——激活函数

当 x0 时,则不存在饱和问题。所以,ReLU 能够在 x>0 时保持梯。ReLU 激活函数将小于 0 的值映射为 0,而大于 0 的值则保持不变,它。即:Softmax 就是将网络输出的。通过 softmax 函数,就。(也就是值对应最大的)节。,这种激活函数运算更为。,那么我们将它理解成。

batian123的博客 5260

oracle19c 无备份情况下重建ocr 和 votedisk

无备份情况下重建ocr 和 votedisk – 19c 备注:测试环境基本上都有ocr自动备份文件,建议参考有备份情况下恢复ocr和votedisk Deconfigure and reconfigure entire cluster will rebuild OCR and Voting Disk, user resources (database, instance, service, ...

fangang001的专栏 4181

DL - 激活函数

激活函数 1、阶跃函数 2、Sigmoid 函数 3、tanh 函数 4、ReLU 5、ELU 6、Softmax

AI工程化、开源分享、文档翻译、代码笔记 1818

ADS 2013安装教程

1.2013和2014安装过程是一样的,运行ads2013_06_shp_windows文件进行安装 2.点击“NEXT”。 3.选择I accept,然后点击“NEXT”。 4.选择“complete”,然后点击“NEXT”。 5.选择安装路径,最好默认安装路径,安装路径不要有中文,然后点击“NEXT”。 6.点击“NEXT”. 7.如下路径默认安装,然后点击“NEXT”。 8.点击“NEXT”。 ...

谢谢关注“小鱼教你模数电”,各平台同号 6009

【Konva】解决图形加入group后无法获取到绝对坐标,以及group内绘制新图形坐标偏移的问题

解决konva绘图开发时“图形加入group后坐标不会变动,无法获取到绝对坐标”的问题

近10年前端开发工作经验,为你分享日常经验所得 1499

深度学习 - 激活函数

激活函数具体效果常见问题及解决方案Sigmoid训练速度较慢,梯度消失问题显著,适用于输出层概率预测。梯度消失:使用 ReLU 或其他激活函数。训练不稳定:标准化输入数据。慢收敛:调整学习率。ReLU通常能提供较好的训练效果和模型性能,但可能会遇到 Dying ReLU 问题。Dying ReLU:使用 Leaky ReLU 或 Parametric ReLU。输出不平衡:使用 Batch Normalization。过拟合:应用正则化技术。Leaky ReLU。

weixin_47552266的博客 2050

Monocle2拟时轨迹基因模块的GO富集解析

本文详细解析了如何对Monocle2拟时分析中得到的基因表达模块进行GO富集分析。通过从热图对象中提取聚类模块,并利用clusterProfiler等工具进行功能注释,将抽象的基因表达时序模式转化为可解释的生物学功能主题,如免疫应答、细胞外基质组织等,从而深入理解细胞命运转变的驱动机制。

gpt4scribbler的博客 500

[DL]常见的激活函数

深度学习中的激活函数是指用于神经网络中每个神经元的非线性变换函数。它的作用是将神经元的输入(加权和)映射到输出,并引入非线性来增强网络的表达能力和适应性,从而使神经网络可以更好地拟合复杂的非线性模式。激活函数的主要目的是在神经网络中引入非线性变换。如果没有使用激活函数,神经网络的每层都只是做线性变换,多层输入叠加后也还是线性变换。使用激活函数可以使神经网络具有一定的非线性表达能力,从而可以更好地拟合非线性模式,提升神经网络的性能。

sinat_41506268的博客 281

【数字孪生与仿真技术】05:从原理到实战:MATLAB/Simulink在航空航天GNC系统开发中的深度解析(含全流程代码与认证指南)

摘要:本文系统阐述MATLAB/Simulink在航空航天制导、导航与控制(GNC)系统开发中的核心应用。通过解析GNC系统高保真动力学建模、多源导航传感器融合、鲁棒控制算法设计等关键技术原理,结合Virgin Orbit运载火箭、CubeSat等真实案例,展示从需求分析、模型搭建、仿真验证到代码生成与认证的完整开发流程。文中提供1200余行关键代码、8个可复用Simulink模型及详细执行结果展示,涵盖DO-178C认证支持、实时性能优化等工业级开发规范,为航空航天工程师、科研人员提供可落地的参考方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1657

深度学习笔记——激活函数

本笔记介绍深度学习中常见的激活函数。

haopinglianlian的博客 981

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-06-激活函数

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-06-激活函数 -- 激活函数也是神经网络中一个很重的部分。每一层的网络输出都要经过激活函数。比较常用的有linear,sigmoid,tanh,softmax等。Keras内置提供了很全的激活函数,包括像LeakyReLU和PReLU这种比较新的激活函数。

 啸林  1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

深度学习中常用激活函数介绍

常用激活函数介绍Sigmoid、LogSigmoid、Tanh、ReLu、LeakyReLu、PReLu、ELu、SeLu、CeLu、GeLu、ReLu6、SiLu、HardSwish、SoftPlus、Mish

weixin_44144773的博客 1684

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【深度学习入门】深度学习中的激活函数盘点

在深度学习中,激活函数是神经网络中不可或缺的组成部分。它们引入了非线性,使得网络能够学习和模拟复杂的函数映射。选择合适的激活函数对模型的性能有着显著的影响。本文将介绍各种激活函数,包括传统的和最新的研究成果,并探讨它们的特性、适用场景以及如何在代码中实现它们。

m0_51098495的博客 1417

深度学习中常见激活函数总结

激活函数(Activation Function)是神经网络中神经元的非线性变换函数,作用于神经元的加权输入(加权和)后,决定该神经元的输出。其数学形式通常为 ( a = f(z) ),其中 ( z = w^T x + b ) 是神经元的加权和(( w ) 为权重,( x ) 为输入,( b ) 为偏置)。核心意义:若没有激活函数(或仅用线性函数),无论多少层的神经网络都只能拟合线性关系,无法处理图像、文本等复杂非线性数据。激活函数是深度学习的核心组件,其选择需权衡非线性能力、梯度传播效率和任务特性。

qq_45464126的博客 1577

深度学习常用的激活函数

那就让我们来整理一下深度学习中离不开的激活函数! 激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。 在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。因此,激活函数是确定神经网络输出的数学方程式,本文概述了深度学习中常见的十种激活函数...

人无远虑,必有近忧 1352

深度学习中的激活函数

本文详细介绍了深度学习中常见的激活函数,包括它们的数学原理、实现方式、优缺点以及在实际应用中的选择策略。理解这些激活函数的特性对于设计和优化神经网络至关重要。在实践中,ReLU及其变种通常是隐藏层的首选,而输出层的选择则取决于具体任务类型。结合适当的参数初始化方法,可以显著提高模型的训练效果和收敛速度。

wyy202206174248的博客 1461
上一篇: 深度学习之数据预处理
下一篇: 深度学习之损失函数
iFlyAI
博客等级 码龄9年 238粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值