机器学习笔记之~三种常见的激活函数sigmoid,tanh,rectified linear function

本文介绍了神经网络中常用的三种激活函数:sigmoid、tanh 和 rectified linear function,并通过图表展示了它们的特性。tanh 函数是对 sigmoid 的调整版,输出范围为 [-1,1];而 rectified linear function 在输入小于0时输出为0。

激活函数在神经网络中,具有将输入进行运算,得到神经元输出的作用,常见的三种激活函数分别是sigmoid,tanh,rectified linear function,对三种激活函数的定义和解释已经是容易找到的,就不再赘述,主要展示将三种函数绘制在同一个坐标下的曲线图。

可以清晰的看出,三种函数对输入输出之间的映射关系。 

tanh函数是sigmoid函数重新调整的结果,它的输出是[-1,1],而不是[0,1],rectified linear function函数是分段线性函数,并且当输入小于0时,值恒为0。

图片来源:http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

 

### 常见激活函数及其用途 在机器学习中,激活函数是神经网络的核心组成部分之一。它们的主要作用是为模型引入非线性因素,使得神经网络能够逼近复杂的非线性函数。以下是一些常见激活函数及其特点和用途: #### 1. Sigmoid 激活函数 Sigmoid 函数的表达式为: ```python def sigmoid(x): return 1 / (1 + np.exp(-x)) ``` Sigmoid 函数将输入映射到 (0, 1) 的范围,因此它常用于二分类问题中的输出层[^2]。然而,由于其梯度消失问题(当输入值较大或较小时,导数接近于零),在深度网络中使用时可能会导致训练困难。 #### 2. Tanh 激活函数 Tanh 函数的表达式为: ```python def tanh(x): return np.tanh(x) ``` TanhSigmoid 的一种变体,输出范围为 (-1, 1)。与 Sigmoid 类似,Tanh 同样存在梯度消失问题,但在某些情况下表现优于 Sigmoid,因为它可以将输入中心化到零附近[^2]。 #### 3. ReLU (Rectified Linear Unit) 激活函数 ReLU 的表达式为: ```python def relu(x): return np.maximum(0, x) ``` ReLU 是目前最常用的激活函数之一,尤其在深度学习中。它的优点包括计算效率高、缓解了梯度消失问题,并且有助于加速模型收敛[^1]。然而,ReLU 可能会导致“神经元死亡”问题,即当输入为负值时,梯度为零,导致权重无法更新。 #### 4. Leaky ReLU 激活函数 Leaky ReLU 的表达式为: ```python def leaky_relu(x, alpha=0.01): return np.where(x >= 0, x, alpha * x) ``` Leaky ReLU 是 ReLU 的一种改进版本,通过为负值输入引入一个小的斜率来避免“神经元死亡”问题[^1]。这使得模型在处理负值输入时仍然具有一定的梯度。 #### 5. PReLU (Parametric ReLU) 激活函数 PReLU 的表达式为: ```python def prelu(x, alpha): return np.where(x >= 0, x, alpha * x) ``` PReLU 是 Leaky ReLU 的扩展版本,其中斜率参数 α 是可学习的。这使得模型可以根据数据自动调整负值输入的响应[^1]。 #### 6. Maxout 激活函数 Maxout 的表达式为: ```python def maxout(x, w1, w2, b1, b2): z1 = np.dot(x, w1) + b1 z2 = np.dot(x, w2) + b2 return np.maximum(z1, z2) ``` Maxout 是一种通用的激活函数形式,可以通过组合多个线性变换来近似任意凸函数。它的主要优点是可以自适应地选择最佳激活函数形状[^1]。 #### 7. Softmax 激活函数 Softmax 的表达式为: ```python def softmax(x): exp_x = np.exp(x - np.max(x, axis=-1, keepdims=True)) return exp_x / np.sum(exp_x, axis=-1, keepdims=True) ``` Softmax 函数通常用于多分类问题的输出层,将输入转换为概率分布[^2]。它的输出值范围为 (0, 1),并且所有输出值的总和为 1。 #### 8. ELU (Exponential Linear Unit) 激活函数 ELU 的表达式为: ```python def elu(x, alpha=1.0): return np.where(x >= 0, x, alpha * (np.exp(x) - 1)) ``` ELU 是 ReLU 的另一种改进版本,通过在负值区域引入指数函数来缓解梯度消失问题。与 ReLU 和 Leaky ReLU 不同,ELU 的输出均值更接近于零,从而有助于加速训练。 ### 总结 不同的激活函数适用于不同的场景。例如,ReLU 适合用于隐藏层,而 Softmax 则更适合用于多分类问题的输出层。选择合适的激活函数需要根据具体任务的需求以及模型的表现进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值