ANN 中的激活函数类型

pythonserver side programmingprogramming

本文我们将了解 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)

# 应用 sigmoid 函数
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)

# 应用 ReLU
out = relu_activation_fun(inp)

plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('ReLU 激活函数')
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)

# 应用 tanh 激活函数
out= Hyperbolic_tanh_fun(inp)

plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Tanh 激活函数')
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)

# 应用 leaky ReLU 激活函数
out = leaky_relu(inp)

plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Leaky ReLU 激活函数')
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])

# 应用 softmax 激活函数
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 激活函数')
plt.show()

输出

我们通常根据要解决的问题的要求和 ANN 的输出来选择激活函数。比如 tanh 和 sigmoid 函数通常用于分类问题,而 ReLU 函数通常用于回归问题。

结论

因此,我们了解了 ANN 及其类型。我们在 ANN 中看到了各种类型的激活函数,如 sigmoid 函数、ReLU、tanh、leaky ReLU 及其用法。要适当地使用激活函数,我们必须掌握它的知识才能构建人工神经网络模型。每个激活函数都有其独特的属性、工作机制、行为和训练过程。我们可以在 ANN 任务中使用这些函数来增强模型。


相关文章


有用资源