激活函数(Activation Function)是神经元中最重要的一个组成部分,它决定了神经元的输出值。常见的激活函数有:
- Sigmoid:S形函数,输出范围在(0,1)。适用于二分类任务。
def sigmoid(x):
return 1 / (1 + np.exp(-x))
- Tanh:双曲正切函数,输出范围在(-1,1)。也属于Logistic函数,效果略优于Sigmoid。
def tanh(x):
return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
- ReLU:线性整流函数,输出范围在(0,+∞)。简单高效,常用于隐藏层。可以解决梯度消失问题。
def relu(x):
return np.maximum(0, x)
- LeakyReLU:修正线性整流函数,输出范围在(-∞,+∞)。在Relu基础上增强了数值稳定性。
def leaky_relu(x):
return np.maximum(0.01*x, x)
- Softmax:多分类激活函数,输出范围在(0,1)且归一化为1。常用于多分类任务的输出层。
def softmax(x):
exp_x = np.exp(x)
return exp_x / exp_x.sum()
举例:
- Sigmoid用于二分类输出:
output = sigmoid(inputs * weights + bias)
- ReLU用于隐藏层:
hidden = relu(inputs * weights + bias)
- Softmax用于多分类输出:
outputs = softmax(hidden * weights + bias)
激活函数是神经网络的重要组成部分,理解各个激活函数的作用和特点,选择恰当的激活函数,可以显著提高神经网络的表达能力和效果。