人工智能中,激活函数在神经网络中扮演着非常重要的角色。它们引入非线性性质,使得神经网络可以学习和表示更为复杂的函数。激活函数将神经网络的输入转换为输出,通常是在神经元的输出上应用非线性变换。
以下是几种常见的激活函数及其特点:
1.Sigmoid函数
Sigmoid函数将输入值映射到0到1之间的连续输出。它具有平滑的曲线形状,适用于二元分类问题。然而,由于其在输入远离零时梯度接近于零,容易出现梯度消失的问题。
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
2.双曲正切函数(Tanh函数):
Tanh函数将输入值映射到-1到1之间的连续输出。与Sigmoid函数类似,Tanh函数也是平滑的曲线,但其输出范围更广,可以解决二元分类问题。Tanh函数的梯度在输入接近于零时不会消失。
import numpy as np
def tanh(x):
return np.tanh(x)
3.ReLU函数
ReLU函数(Rectified Linear Unit)将负数输入映射为零,正数输入保持不变。它在实践中非常流行,因为它不会引入饱和区域,并且计算速度相对较快。但是,ReLU函数对于负数输入的梯度为零,可能导致神经元永久失活。
import numpy as np
def relu(x):
return np.maximum(0, x)
4.Leaky ReLU函数
Leaky ReLU函数是ReLU函数的变体,当输入为负数时引入一个小的斜率,以解决ReLU函数中的神经元失活问题。
import numpy as np
def leaky_relu(x, alpha=0.01):
return np.maximum(alpha * x, x)
5.Softmax函数:
Softmax函数将一组实数转换为概率分布,常用于多类分类问题。它将输入的指数函数归一化为概率值,并且输出总和为1。
import numpy as np
def softmax(x):
exp_values = np.exp(x - np.max(x, axis=1, keepdims=True))
return exp_values / np.sum(exp_values, axis=1, keepdims=True)
这些是常见的激活函数,每个函数都有不同的特点和适用场景。在神经网络中,可以根据任务的需求和网络的结构选择适当的激活函数。代码示例中使用了NumPy库来进行函数的实现。