共计 2741 个字符,预计需要花费 7 分钟才能阅读完成。
如果你刚刚开始学习神经网络,激活函数的原理一开始可能很难了解。然而如果你想开发弱小的神经网络,了解它们是很重要的。
但在咱们深入研究激活函数之前,先疾速回顾一下神经网络架构的根本元素。如果你曾经相熟神经网络的工作原理,能够间接跳到下一节。
神经网络架构
神经网络由称为神经元的链接节点层组成,神经元通过称为突触的加权连贯来解决和传输信息。
每个神经元从上一层的神经元获取输出,对其输出的和利用激活函数,而后将输入传递给下一层。
神经网络的神经元! 蕴含输出层、暗藏层和输入层。
输出层只接管来自域的原始数据。这里没有计算,节点只是简略地将信息 (也称为特色) 传递给下一层,即暗藏层。暗藏层是所有计算产生的中央。它从输出层获取特色,并在将后果传递给输入层之前对它们进行各种计算。输入层是网络的最初一层。它应用从暗藏层取得的所有信息并产生最终值。
为什么须要激活函数。为什么神经元不能间接计算并将后果转移到下一个神经元? 激活函数的意义是什么?
激活函数在神经网络中的作用
网络中的每个神经元接管来自其余神经元的输出,而后它对输出进行一些数学运算以生成输入。一个神经元的输入能够被用作网络中其余神经元的输出。
如果没有激活函数,神经元将只是对输出进行线性数学运算。这意味着无论咱们在网络中增加多少层神经元,它所能学习的货色依然是无限的,因为输入总是输出的简略线性组合。
激活函数通过在网络中引入非线性来解决问题。通过增加非线性,网络能够模仿输出和输入之间更简单的关系,从而发现更多有价值的模式。
简而言之,激活函数通过引入非线性并容许神经网络学习简单的模式,使神经网络更加弱小。
了解不同类型的激活函数
咱们能够将这些函数分为三局部: 二元、线性和非线性。
二元函数只能输入两个可能值中的一个,而线性函数则返回基于线性方程的值。
非线性函数,如 sigmoid 函数,Tanh, ReLU 和 elu,提供的后果与输出不成比例。每种类型的激活函数都有其独特的特色,能够在不同的场景中应用。
1、Sigmoid / Logistic 激活函数
Sigmoid 激活函数承受任何数字作为输出,并给出 0 到 1 之间的输入。输出越正,输入越靠近 1。另一方面,输出越负,输入就越靠近 0,如下图所示。
它具备 s 形曲线,使其成为二元分类问题的现实抉择。如果要创立一个模型来预测一封电子邮件是否为垃圾邮件,咱们能够应用 Sigmoid 函数来提供一个 0 到 1 之间的概率分数。如果得分超过 0.5 分,则认为该邮件是垃圾邮件。如果它小于 0.5,那么咱们能够说它不是垃圾邮件。
函数定义如下:
然而 Sigmoid 函数有一个毛病——它受到梯度隐没问题的困扰。当输出变得越来越大或越来越小时,函数的梯度变得十分小,减慢了深度神经网络的学习过程,能够看下面图中的导数(Derivative)曲线。
然而 Sigmoid 函数依然在某些类型的神经网络中应用,例如用于二进制分类问题的神经网络,或者用于多类分类问题的输入层,因为预测每个类的概率 Sigmoid 还是最好的解决办法。
2、Tanh 函数(双曲正切)
Tanh 函数,也被称为双曲正切函数,是神经网络中应用的另一种激活函数。它承受任何实数作为输出,并输入一个介于 - 1 到 1 之间的值。
Tanh 函数和 Sigmoid 函数很类似,但它更以 0 为核心。当输出靠近于零时,输入也将接近于零。这在解决同时具备负值和正值的数据时十分有用,因为它能够帮忙网络更好地学习。
函数定义如下:
与 Sigmoid 函数一样,Tanh 函数也会在输出变得十分大或十分小时遭逢梯度隐没的问题。
3、线性整流单元 / ReLU 函数
ReLU 是一种常见的激活函数,它既简略又弱小。它承受任何输出值,如果为正则返回,如果为负则返回 0。换句话说,ReLU 将所有负值设置为 0,并保留所有正值。
函数定义如下:
应用 ReLU 的益处之一是计算效率高,并且实现简略。它能够帮忙缓解深度神经网络中可能呈现的梯度隐没问题。
然而,ReLU 可能会遇到一个被称为“dying ReLU”问题。当神经元的输出为负,导致神经元的输入为 0 时,就会产生这种状况。如果这种状况产生得太频繁,神经元就会“死亡”并进行学习。
4、Leaky ReLU
Leaky ReLU 函数是 ReLU 函数的一个扩大,它试图解决“dying ReLU”问题。Leaky ReLU 不是将所有的负值都设置为 0,而是将它们设置为一个小的正值,比方输出值的 0.1 倍。他保障即便神经元接管到负信息,它依然能够从中学习。
函数定义如下:
Leaky ReLU 已被证实在许多不同类型的问题中工作良好。
5、指数线性单位 (elu) 函数
ReLU 一样,他们的指标是解决梯度隐没的问题。elu 引入了负输出的非零斜率,这有助于避免“dying ReLU”问题
公式为:
这里的 alpha 是管制负饱和度的超参数。
与 ReLU 和 tanh 等其余激活函数相比,elu 已被证实能够进步训练和测试的准确性。它在须要高准确度的深度神经网络中特地有用。
6、Softmax 函数
在须要对输出进行多类别分类的神经网络中,softmax 函数通常用作输入层的激活函数。它以一个实数向量作为输出,并返回一个示意每个类别可能性的概率分布。
softmax 的公式是:
这里的 x 是输出向量,i 和 j 是从 1 到类别数的索引。
Softmax 对于多类分类问题十分有用,因为它确保输入概率之和为 1,从而便于解释后果。它也是可微的,这使得它能够在训练过程中用于反向流传。
7、Swish
Swish 函数是一个绝对较新的激活函数,因为其优于 ReLU 等其余激活函数的性能,在深度学习社区中受到了关注。
Swish 的公式是:
这里的 beta 是管制饱和度的超参数。
Swish 相似于 ReLU,因为它是一个能够无效计算的简略函数。并且有一个平滑的曲线,有助于预防“dying ReLU”问题。Swish 已被证实在各种深度学习工作上优于 ReLU。
抉择哪一种?
首先,须要将激活函数与你要解决的预测问题类型相匹配。能够从 ReLU 激活函数开始,如果没有达到预期的后果,则能够转向其余激活函数。
以下是一些须要准则:
- ReLU 激活函数只能在暗藏层中应用。
- Sigmoid/Logistic 和 Tanh 函数不应该用于暗藏层,因为它们会在训练过程中引起问题。
- Swish 函数用于深度大于 40 层的神经网络会好很多。
输入层的激活函数是由你要解决的预测问题的类型决定的。以下是一些须要记住的根本准则:
- 回归 - 线性激活函数
- 二元分类 - Sigmoid
- 多类分类 - Softmax
- 多标签分类 - Sigmoid
抉择正确的激活函数能够使预测准确性有所不同。所以还须要依据不同的应用状况进行测试。
https://avoid.overfit.cn/post/4bfdebfb39ef4817957295b39621e64d
作者:Mouâad B.