激活函数汇总
发布网友
发布时间:2024-10-10 09:08
我来回答
共1个回答
热心网友
时间:2024-11-21 15:27
激活函数是神经网络的核心组件之一,用于引入非线性,提升网络学习复杂模式的能力。它们多种多样,适用于不同场景。了解各种激活函数的特性,能够帮助我们根据需求灵活选择。
Sigmoid函数是最常见的激活函数之一,适用于二分类问题。它将输入映射到(0,1)区间,但存在导数在接近0或1时接近于0的问题,这限制了反向传播的学习速度。Sigmoid函数的优缺点如下:优点包括易于实现和对0-1区间进行标准化;缺点则包括梯度消失和饱和问题。
Tanh函数与Sigmoid类似,值域为(-1,1),这使得输出更加集中。它的优势在于激活值分布更加紧凑,能够提供更细粒度的表示,但同样存在梯度消失问题。
ReLU(Rectified Linear Unit)函数在当前深度学习中广泛应用,其简洁性与高效性使其成为标准选择。优点包括易于计算,防止了梯度消失问题;缺点在于可能产生死亡神经元,但通常可以通过调整网络结构缓解。
LeakyReLU是一种改进的ReLU,通过设置负斜率值(默认0.01)来解决ReLU在负输入时梯度消失的问题。它保持了ReLU的大部分优点,同时引入了一定的梯度流,但实际效果不一定总优于ReLU。
PReLU(参数化LeakyReLU)则进一步改进了LeakyReLU,通过引入可训练参数来调整负斜率,这使得模型能够自动学习最适合当前任务的激活曲线。与LeakyReLU相比,PReLU能够提供更好的拟合能力,但需要额外的参数。
RELU6函数限制了ReLU的输出范围为(0,6),特别适用于需要限制输出范围的场景,如Mobilev1模型。
RReLU(随机LeakyReLU)在训练时随机选择负斜率的范围,测试时固定为平均值。尽管理论上性能更好,但在实际应用中,其使用并不广泛。
Hardsigmoid函数通过分段线性函数近似sigmoid,旨在加速计算过程,提高效率。
Hardtanh函数同样使用分段线性函数近似tanh,提供快速计算。
Hardswish函数两端采用线性近似,特别适用于MobileNetv3等轻量级模型。
Hardshrink函数通过硬阈值处理,将输入向量中小于一定阈值的元素置为0,适用于特征选择。
ELU(Exponential Linear Unit)函数引入了负输入时的指数增长,减少饱和问题,同时保持了非线性。其优点在于能够更好地处理负输入,缺点是存在更复杂的计算。
SELU(Self-Normalizing Exponential Linear Unit)函数旨在使输入输出的均值和方差保持稳定,有利于网络的训练,但其参数通常不是通过训练学习的。
GELU(Gaussian Error Linear Unit)函数通过高斯分布累计概率函数实现,提供了一种平滑的非线性转换,适用于更复杂的模型。
CELU(Continuously Differentiable Exponential Linear Unit)是对ELU函数的改进,允许调整负半边的斜率,提供更灵活的非线性。
LogSigmoid函数通过对Sigmoid函数进行对数变换,常用于概率估计。
Softplus函数通过平滑ReLU函数,实现连续非线性映射,适用于概率模型。
Softshrink函数对输入进行硬阈值处理后,对剩余部分进行缩放,适用于特征选择。
Softsign函数通过缩放和剪裁,将输入限制在(-1,1)区间,保持了线性增长的特性。
Tanhshrink函数通过线性减法和硬阈值处理,将输入限制在(-1,1)区间,提供一种简化的非线性。
Threshold函数在输入达到阈值时返回特定值,提供一种硬决策过程。
GLU(Gated Linear Unit)函数通过门控机制将输入线性地分为两部分,适用于门控循环网络。
Softmax函数将输入向量转化为概率分布,常用于分类问题,确保输出总和为1。
Softmin函数与Softmax类似,但输出是概率分布的倒数,适用于某些特殊场景。
Softmax2d函数扩展了Softmax至二维输入,适用于图像分类等任务。
Logsoftmax函数将Softmax操作与对数运算结合,提高数值稳定性。
AdaptiveLogSoftmaxWithLoss是为大输出空间模型设计的优化策略,通过基于标签频率分组,加速计算并提高效率。
Swish函数通过乘法操作引入自适应非线性,简化了神经网络的计算,适用于多种模型。
Snake激活函数专门用于处理周期性数据,如语音生成模型,通过公式表达,适用于特定领域需求。
激活函数的选择需根据具体任务和模型需求,了解其特性和优势,能够帮助我们做出更合适的决策。