本篇文章2438字,读完约6分钟

激活函数:在多层神经网络中,上节点的输出和下节点的输入之间存在函数关系,称为激活函数(也称为激励函数)

激活功能的本质:

激活函数将非线性因素引入神经网络。通过激活函数,神经网络可以拟合各种曲线。

举个例子来说明:如果我的任务是把下图中的三角形和圆分开,这是一个典型的二进制分类问题:

用肉眼,我们可以很容易地得出结论,我们不能用一条直线把这两个数字完全分开。例如,我在这里使用单层传感器:

等式:

这是上图右侧的直线。无论参数如何变化,都不能很好地完成二元分类问题,因为问题本身是线性不可分的。

在每一层叠加之后,我们在输出和输入之间添加一个激活函数,此时的等式如下:

这样,线性不可分性的问题就可以解决了。最后,可能是这样的:

常见激活功能:

1.relu是目前最常用的功能。如果你不知道你应该选择激活哪一个,我建议你选择relu来尝试。一般来说,relu是你的第一选择

公式:

导数:

首先,relu在一定程度上缓解了梯度问题(正区间)。其次,计算速度非常快,这是可以明显比较的。最后,relu加速了模型的收敛,比sigmoid和tanh快得多。

Relu是一个分段线性函数,它的非线性很弱,所以网络应该做得很深入。但这正好满足了我们的需求,因为在相同效果的前提下,深度比宽度更重要,并且更深的模型具有更好的泛化能力。因此,自relu激活函数产生以来,各种深层模型被提出。一个里程碑式的事件是vgg模型及其在imagenet上的成功。

人工智能

Relu还有几个需要特别注意的问题:

1)relu的输出不是以零为中心的

2)一些神经元可能永远不会被激活,导致相应的参数永远不会被更新。

有两个主要原因可能导致这种情况:

1)非常不幸的参数初始化,这是罕见的

2)学习率过高2)导致训练过程中参数更新过多,不幸的是使网络进入这种状态。解决方案是采用xavier初始化方法,避免将学习速率设置得太大或使用adagrad等算法自动调整学习速率。

人工智能

为了解决这个问题,人们提出将relu的前半部分设置为αx非0,通常α=0.01(leakyrelu函数:f(x)=max(αx,x))。为了解决以零为中心的问题,elu(指数线性单位)函数,f(x)= xifx >:0otherwisea(e^x−;1)。

人工智能

2.sigmoid函数

公式:

派生:

sigmod函数的导数:

尽管simoid函数有很多缺陷,但它仍然是主流的激活函数之一。它主要有以下缺陷:

如果我们将神经网络的权重初始化为介于[0,1]之间的随机值,从反向传播算法的数学推导中可以看出,当梯度从后向前传播时,梯度值将减少到原始值的0.25倍。如果神经网络中有很多隐藏层,经过多层后,梯度会变得很小,接近0,即梯度消失。当网络权值被初始化为(1,+∞)(1,+∞)(1,+∞)区间内的值时,将发生梯度爆炸。

人工智能

计算需要时间。在神经网络训练中,经常需要计算sigmid的值,而功率计算会导致时间消耗的增加。但这不是一个大问题,最多是更换显卡,而且这款机型运行时间很长。

人工智能

3.tanh功能:

公式:

导数:

它解决了sigmoid函数的输出不是以零为中心的问题。然而,梯度消失和功率操作的问题仍然存在。

4.leakyrelu函数(prelu)

函数表达式

为了解决这个问题,人们提出将relu的前半部分设置为αx,而不是0,通常α=0.01。另一个直观的想法是基于参数的方法,即parameter icle Lu:f(x)= max(αx,x),其中α可以通过方向传播算法来学习。从理论上讲,李克瑞路具有relu的所有优点,此外,不存在死的问题,但在实践中,并没有完全证明李克瑞路总是比relu好。

人工智能

5.5.elu(指数线性单位)函数

功能公式:

下图显示了函数及其导数的图像:

Elu也是为解决relu中存在的问题而提出的。显然,elu具备relu的所有基本优势,并且:

不会有死亡问题

输出的平均值接近0,以零为中心

它的一个小问题是计算量有点大。与李基鲁相似,尽管在理论上它比勒鲁好,但没有好的证据表明在实践中勒鲁总是比勒鲁好。

6.maxout函数

该功能可参考纸张maxoutnetworks。maxout是一层深度学习网络,就像汇集层和卷积层一样。我们可以把maxout作为网络的激活功能层。我们假设网络某一层的输入特征向量是:x = (x1,x2,… xd),也就是说,我们输入d个神经元。最大隐层中每个神经元的计算公式如下:

人工智能

以上公式是最大隐层神经元I的计算公式。其中,k是最大输出层需要的参数,我们人为设置大小。就像脱落一样,它也有自己的参数p(每个神经元的脱落概率),最大值的参数是k。公式中z的公式是:

人工智能

权重w是一个三维矩阵,大小为(d,m,k),b是一个二维矩阵,大小为(m,k),这是我们需要学习的参数。如果我们设置参数k=1,那么此时,网络类似于我们之前学习的普通mlp网络。

人工智能

我们可以理解,传统的mlp算法从I层到i+1层只有一组参数,但是现在我们没有这样做。我们在这一层同时训练N组W和B参数,然后选择最大激活值Z作为下一层神经元的激活值,这个最大(Z)函数作为激活函数。

人工智能

如何在应用中选择合适的激活函数?

目前,这个问题还没有确定的方法。让我们依靠一些经验。

1)深度学习往往需要花费大量的时间来处理大量的数据,而模型的收敛速度尤为重要。因此,总体而言,训练深度学习网络尽可能使用以零为中心的数据(这可以通过数据预处理来实现)和以零为中心的输出。因此,应尽可能选择以零为中心的激活函数,以加快模型的收敛速度。

人工智能

2)如果使用relu,我们必须仔细设置学习速率,注意不要让网络中出现许多“死”神经元。如果这个问题不容易解决,我们可以试试leakyrelu,prelu或maxout。

3)最好不要使用乙状结肠。你可以试试tanh,但是可以预料它的效果不会像relu和maxout那么好。

标题:人工智能

地址:http://www.hcsbodzyz.com/hcxw/426.html