人工神经网络中的激活函数类型
在这篇文章中,我们将学习关于 ANN 及其类型的知识。我们还将看到不同类型激活函数的程序。在深入了解这些类型之前,让我们先了解什么是 ANN。
ANN
人工神经网络 (ANN) 是机器学习的一个分支,它通过构建生物神经网络的结构来执行计算,其中每个神经元都可以将信号或处理后的数据传输到其他连接的神经元。这种结构类似于人脑,其中神经元彼此相互连接。当节点或神经元的连接形成连接时,就会创建神经网络。人工神经网络是一种类似于人类神经系统工作的模型。
ANN 有三个层
输入层
在这一层,我们将数据作为输入提供给神经网络。此层中的神经元数量与数据中的特征数量相同。
隐藏层
这一层被称为隐藏层,因为它是数据被处理的层,并且隐藏在输入层之后。此层的输出将传递到输出层。
输出层
这一层是网络产生输出的地方。
每一层中的神经元都通过权重相互连接。在训练过程中会调整权重,以便网络可以学习生成所需的输出。
ANN 网络的表示 -
上图表示神经网络,其中第一层是输入层,我们向模型提供数据,并在处理后将其输出转发到隐藏层(位于输入层之后)。隐藏层输出的结果将作为输出层输出。每个神经元都有分配给它的权重,表示输入值的强度。
ANN 中的激活函数类型
ANN 中存在许多类型的激活函数,但我们将重点介绍最常用的函数 -
Sigmoid 激活函数
这种激活函数是 ANN 中的非线性函数,用于将输入数据映射到 0 到 1 之间的值,表示概率。这种激活函数在二元分类问题中用作输出层。
示例
import numpy as np import matplotlib.pyplot as plt def sigmoid_Activation_fun(inp): return 1 / (1 + np.exp(-inp)) inp= np.linspace(-10, 10, 100) # applying sigmoid function out = sigmoid_Activation_fun(inp); plt.plot(inp, out) plt.xlabel('Input') plt.ylabel('Output') plt.title('Sigmoid Activation Function') plt.show()
输出
修正线性单元 (ReLU)
ReLu 在所有其他激活函数中使用广泛,它通过将负值映射为 0 并保持正值不变来引入非线性。它在训练期间提供更快的学习速度,并避免梯度消失问题。与其他激活函数(如 Tanh 和 sigmoid)相比,它提供了更好的性能。
示例
import numpy as np import matplotlib.pyplot as plt def relu_activation_fun(inp): return np.maximum(0, inp) inp = np.linspace(-10, 10, 100) # Applying the ReLU out = relu_activation_fun(inp) plt.plot(inp, out) plt.xlabel('Input') plt.ylabel('Output') plt.title('ReLU Activation Function') plt.show()
输出
双曲正切 (Tanh)
双曲正切函数,也称为 tanh 函数,我们使用它与 sigmoid 函数相同,并将输入值映射到 -1 到 1 的范围内。这种激活函数主要用于 ANN 的隐藏层。
示例
import numpy as np import matplotlib.pyplot as plt def Hyperbolic_tanh_fun(inp): return np.tanh(inp) inp = np.linspace(-10, 10, 100) # Applying tanh activation function out= Hyperbolic_tanh_fun(inp) plt.plot(inp, out) plt.xlabel('Input') plt.ylabel('Output') plt.title('Tanh Activation Function') plt.show()
输出
Leaky ReLU
这是 ReLU 函数的修改版本,其中 ReLU 将小值设置为 0,但此版本将允许小负值。此修改版本提高了神经网络的性能。
示例
import numpy as np import matplotlib.pyplot as plt def leaky_relu(inp, alpha=0.01): return np.where(inp >= 0, inp, alpha * inp) inp = np.linspace(-10, 10, 100) # Applying leaky ReLU activation function out = leaky_relu(inp) plt.plot(inp, out) plt.xlabel('Input') plt.ylabel('Output') plt.title('Leaky ReLU Activation Function') plt.show()
输出
Softmax 激活函数
Softmax 激活函数是一种激活函数,我们使用它来计算概率分布,并确保这些概率的总和为 1。这种激活函数主要用于多类分类问题的输出层。
示例
import numpy as np import matplotlib.pyplot as plt def softmax_activation_function(inp): exps = np.exp(inp) return exps / np.sum(exps) inp = np.array([1, 2, 3, 4, 5]) # Applying softmax activation function out = softmax_activation_function(inp) plt.bar(range(len(inp)), out) plt.xlabel('Class') plt.ylabel('Probability') plt.xticks(range(len(inp))) plt.title('Softmax Activation Function') plt.show()
输出
我们通常根据要解决的问题和 ANN 的输出选择激活函数。例如,tanh 和 sigmoid 函数通常用于分类问题,而 ReLU 函数通常用于回归问题。
结论
因此,我们了解了 ANN 及其类型。我们看到了 ANN 中各种类型的激活函数,例如 sigmoid 函数、ReLU、tanh、Leaky ReLU 及其用法。为了适当地使用激活函数,我们必须具备构建人工神经网络模型的知识。每个激活函数都有其独特的属性、工作机制、行为和训练过程。我们可以在我们的 ANN 任务中使用这些函数来增强模型。