合肥网站建设公司,设计店面装修,信息技术网站建设教案,容易被百度收录的网站激活函数通过引入非线性来增强神经网络的表达能力#xff0c;对于解决线性模型的局限性至关重要。由于反向传播算法(BP)用于更新网络参数#xff0c;因此激活函数必须是可微的#xff0c;也就是说能够求导的。
满足激活函数的条件
1.可微分#xff0c;也就是可求导 激活函…激活函数通过引入非线性来增强神经网络的表达能力对于解决线性模型的局限性至关重要。由于反向传播算法(BP)用于更新网络参数因此激活函数必须是可微的也就是说能够求导的。
满足激活函数的条件
1.可微分也就是可求导 激活函数必须是可微的。这是因为反向传播算法依赖于梯度的计算而梯度的计算需要激活函数是可微的。如果激活函数不可微那么梯度无法计算反向传播算法就无法进行。
2.必须是非线性的 激活函数必须是非线性的。这是因为如果激活函数是线性的那么无论神经网络有多少层整个网络仍然可以简化为一个线性模型。非线性激活函数能够引入非线性变换使得神经网络能够逼近和学习更复杂的函数。 常见激活函数 sigmoid 它将输入映射到0到1之间的值因此非常适合处理概率问题。 数学表达式为 将任意实数输入映射到 (0, 1)之间因此非常适合处理概率场景。 sigmoid函数一般只用于二分类的输出层。 微分性质: 导数计算比较方便可以用自身表达式来表示 缺点 梯度消失: 在输入非常大或非常小时Sigmoid函数的梯度会变得非常小接近于0。这导致在反向传播过程中梯度逐渐衰减。 最终使得早期层的权重更新非常缓慢进而导致训练速度变慢甚至停滞。 信息丢失输入100和输入10000经过sigmoid的激活值几乎都是等于 1 的但是输入的数据却相差 100 倍。 计算成本高: 由于涉及指数运算Sigmoid的计算比ReLU等函数更复杂尽管差异并不显著。 曲线图 使用场景 适合用于神经网络的输出层 tanh tanh(双曲正切)是一种常见的非线性激活函数常用于神经网络的隐藏层。 公式 特征 输出范围: 将输入映射到$$(-1, 1)$$之间因此输出是零中心的。相比于Sigmoid函数这种零中心化的输出有助于加速收敛。 对称性: Tanh函数关于原点对称因此在输入为0时输出也为0。这种对称性有助于在训练神经网络时使数据更平衡。 平滑性: Tanh函数在整个输入范围内都是连续且可微的这使其非常适合于使用梯度下降法进行优化。
表示为 缺点 梯度消失: 虽然一定程度上改善了梯度消失问题但在输入值非常大或非常小时导数还是非常小这在深层网络中仍然是个问题。 计算成本: 由于涉及指数运算Tanh的计算成本还是略高尽管差异不大。 跟sigmoid的函数图像差不多
同样适用于输出层。 ReLU ReLURectified Linear Unit是深度学习中最常用的激活函数之一它的全称是修正线性单 元。ReLU 激活函数的定义非常简单但在实践中效果非常好。 数学公式 进行非线性变换时
稀疏激活ReLU在输入小于等于 0 时输出为 0这使得 ReLU 可以在神经网络中引入稀疏性即一些神经元不被激活这种稀疏性可以提升网络的泛化能力。 也就是一些神经元不会被激活。 缺点
神经元死亡
如果某个神经元输入值是负那么该神经元将永远不再激活成为“死亡”神经元。随着训练的进行网络中可能会出现大量死亡神经元从而会降低模型的表达能力。 LeakyReLU
Leaky ReLU是一种对 ReLU 函数的改进旨在解决 ReLU 的一些缺点特别是Dying ReLU 问题。Leaky ReLU 通过在输入为负时引入一个小的负斜率来改善这一问题。 公式 特征
特征 避免神经元死亡通过在$$x\leq 0$$ 区域引入一个小的负斜率这样即使输入值小于等于零Leaky ReLU仍然会有梯度允许神经元继续更新权重避免神经元在训练过程中完全“死亡”的问题。 计算简单Leaky ReLU 的计算与 ReLU 相似只需简单的比较和线性运算计算开销低。 缺点 参数选择α 是一个需要调整的超参数选择合适的α 值可能需要实验和调优。 出现负激活如果α 设定得不当仍然可能导致激活值过低。 softmax Softmax激活函数通常用于分类问题的**输出层**它能够将网络的输出转换为概率分布使得输出的各个类别的概率之和为 1。Softmax 特别适合用于多分类问题。 公式 特征 将输出转化为概率通过$$Softmax$$可以将网络的原始输出转化为各个类别的概率从而可以根据这些概率进行分类决策。 概率分布输出是一个概率分布并且所有输出值的和为 1表示每个类别的预测概率。 突出差异$$Softmax$$会放大差异使得概率最大的类别的输出值更接近$$1$$而其他类别更接近$$0$$。
Softmax 函数是一种常用的激活函数主要用于多分类问题。它将一个向量中的每个元素转换为一个介于 0 和 1 之间的值并且所有元素的和为 1。Softmax 函数通常用于神经网络的输出层以生成概率分布表示每个类别的预测概率。Softmax 函数是非线性的可微的支持反向传播算法的梯度计算。 缺点
1. 数值不稳定性
Softmax 函数涉及指数运算当输入值非常大时指数运算可能会导致数值溢出overflow。同样当输入值非常小时指数运算可能会导致数值下溢underflow。
2. 对输入敏感
Softmax 函数对输入值非常敏感尤其是当输入值之间的差异较大时。这可能导致梯度消失或梯度爆炸问题尤其是在深层神经网络中。
3. 类别不平衡问题
Softmax 函数假设所有类别是互斥的并且每个类别的概率是独立的。在实际应用中类别不平衡问题可能导致某些类别的概率被低估。
解决方法 类别加权在损失函数中为不同类别分配不同的权重以平衡类别不平衡问题。 数据增强通过数据增强技术如过采样、欠采样来平衡训练数据中的类别分布。 import torch
import torch.nn as nn# 表示4分类每个样本全连接后得到4个得分下面示例模拟的是两个样本的得分
input_tensor torch.tensor([[-1.0, 2.0, -3.0, 4.0], [-2, 3, -3, 9]])softmax nn.Softmax()
output_tensor softmax(input_tensor)
# 关闭科学计数法
torch.set_printoptions(sci_modeFalse)
print(输入张量:, input_tensor)
print(输出张量:, output_tensor) 函数选择
隐藏层 优先选ReLU 如果ReLU效果不咋地那么尝试其他激活如Leaky ReLU等 使用ReLU时注意神经元死亡问题 避免出现过多神经元死亡 不使用sigmoid尝试使用tanh
输出层 二分类问题选择sigmoid激活函数 多分类问题选择softmax激活函数 回归问题选择identity激活函数;
更多激活函数可以查看官方文档torch.nn — PyTorch 2.5 documentationhttps://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity