人工神经网络(Artificial Neural Networks,简称ANNs)的激活函数-5
2024年10月13日 11:30神经网络中的激活函数-5
建议在阅读本文之前先了解 神经网络 。
在构建神经网络的过程中,您需要做出的选择之一是在隐藏层和网络的输出层使用什么激活函数。本文讨论了神经网络中的激活函数。
目录
• 什么是激活函数?
• 神经网络的元素
• 为什么我们需要非线性激活函数?
• 激活函数的变体
• 线性函数
• Sigmoid 函数
• Tanh 功能
• RELU 函数
• Softmax 功能
• 什么是激活函数?
神经网络上下文中的激活函数是应用于神经元输出的数学函数。激活函数的目的是在模型中引入非线性,允许网络学习和表示数据中的复杂模式。如果没有非线性,神经网络的行为基本上就像线性回归模型,无论它有多少层。
激活函数通过计算加权和并进一步为其添加偏差来决定是否应该激活神经元。激活函数的目的是将非线性引入神经元的输出中。
解释:我们知道,神经网络的神经元与权重、偏差和它们各自的激活函数相对应。在神经网络中,我们将根据输出处的误差更新神经元的权重和偏差。此过程称为反向传播 。激活函数使反向传播成为可能,因为梯度与更新权重和偏差的误差一起提供。
• 神经网络的元素
Input Layer:此层接受输入特征。它从外部世界向网络提供信息,这一层不进行计算,这里的节点只是将信息(特征)传递给隐藏层。
隐藏层:该层的节点不暴露在外部世界,它们是任何神经网络提供的抽象的一部分。隐藏层对通过输入层输入的特征执行各种计算,并将结果传输到输出层。
Output Layer:该层将网络学习到的信息带到外部世界。
• 为什么我们需要非线性激活函数?
没有激活函数的神经网络本质上只是一个线性回归模型。激活函数对输入进行非线性变换,使其能够学习和执行更复杂的任务。
• 数学证明
假设我们有一个这样的神经网络 :-

该图的元素如下:
隐藏层,即第1层:
z(1) = W(1)X + b(1) a(1)
这里:
• z(1) 是第 1 层的矢量化输出
• W(1) 是分配给隐藏层神经元的矢量化权重,即 w1、w2、w3 和 w4
• X 是矢量化的输入特征,即 i1 和 i2
• b 是分配给隐藏层中神经元的矢量化偏差,即 b1 和 b2
• a(1) 是任何线性函数的矢量化形式。
(注意:我们在这里不考虑激活函数)
第 2 层,即输出层 :
注:第 2 层的输入是从第 1 层输出的
z(2) = W(2)a(1) + b(2)
a(2) = z(2)
输出层的计算
z(2) = (W(2) * [W(1)X + b(1)]) + b(2)
z(2) = [W(2) * W(1)] * X + [W(2)*b(1) + b(2)]
让
[W(2) * W(1)] = W
[W(2)*b(1) + b(2)] = b
最终输出 : z(2) = W*X + b
这又是一个线性函数
即使在应用隐藏层之后,这一观察结果也会再次产生线性函数,因此我们可以得出结论,无论我们在神经网络中附加多少个隐藏层,所有层的行为都是相同的,因为两个线性函数的组成本身就是一个线性函数。神经元不能只用一个线性函数来学习。非线性激活函数将让它根据w.r.t误差的差异进行学习。因此,我们需要一个激活函数。
• 激活函数的变体
• 线性函数
• 方程:线性函数的方程类似于直线的方程,即y = x
• 无论我们有多少层,如果本质上都是线性的,那么最后一层的最终激活函数只不过是第一层输入的线性函数。
• 范围:-inf 到 +inf
• 用途:线性激活函数只在一个地方使用,即输出层。
• 问题:如果我们对线性函数进行微分以带来非线性,结果将不再依赖于输入 “x”,函数将变得恒定,它不会为我们的算法引入任何突破性的行为。
例如:房屋价格的计算是一个回归问题。房价可能具有任何大/小的值,因此我们可以在输出层应用线性激活。即使在这种情况下,神经网络在隐藏层也必须具有任何非线性函数。
Sigmoid函数

• 它是一个绘制为“S”形图的函数。
• 方程 :A = 1/(1 + e-x)
• 性质 :非线性,请注意,X值介于-2到2之间,Y值非常陡峭。这意味着,x的微小变化也会带来Y值的较大变化。
• 取值范围 :0到1
• 用途 :通常用于二进制分类的输出层,其中 result为0或1,因为sigmoid函数的值仅在0和1之间,因此,如果值大于0.5,则可以轻松预测结果为 0。
Tanh功能

• 几乎总是比sigmoid函数效果更好的激活是Tanh函数,也称为切线双曲函数。它实际上是sigmoid函数的数学移位版本。两者相似,并且可以相互派生。
• 方程 :
f(x) = tanh(x) = 2/(1 + e-2x) – 1
OR
tanh(x)= 2 * sigmoid(2x) – 1
• 取值范围:-1 至 +1
• 性质 :-非线性
• 用途 :-通常用于神经网络的隐藏层,因为它的值在-1到1之间,因此隐藏层的平均值为0或非常接近它,因此有助于通过使平均值接近0来使数据居中。这使得学习下一层变得更加容易。
RELU函数
• 它代表整流线性单元。它是使用最广泛的激活函数。主要在神经网络的隐藏层中实现。
• 方程 :-A(x) = max(0,x)如果x为正,则输出为 x,否则为0。
• 取值范围 :-[0,inf)
• 性质 :-非线性,这意味着我们可以很容易地反向传播错误,并通过ReLU函数激活多层神经元。
• 用途 :-ReLu 的计算成本低于 tanh 和 sigmoid,因为它涉及更简单的数学运算。一次只有几个神经元被激活,使网络稀疏,使其高效且易于计算。
简而言之,RELU 的学习 速度比 sigmoid 和 Tanh 函数快得多。
Softmax功能

softmax函数也是一种sigmoid函数,但在我们尝试处理多类分类问题时非常方便。
• 性质 :-非线性
• 用途 :-通常在尝试处理多个类时使用softmax函数常见于图像分类问题的输出层。softmax函数会将每个类的输出压缩到0到1之间,并且还会除以输出的总和。
• 输出:-softmax函数理想地用于分类器的输出层,我们实际上试图获得定义每个输入的类别的概率。
• 基本的经验法则是,如果您真的不知道该使用什么激活函数,那么只需使用RELU,因为它是隐藏层中的通用激活函数,并且现在在大多数情况下都在使用。
• 如果您的输出用于二进制分类,那么sigmoid函数是输出层非常自然的选择。
• 如果您的输出是多类分类的,那么Softmax对于预测每个类的概率非常有用。
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP




















