艾迪网络专业的网站建设公司,网站建设流程有几个阶段,买手表去哪个网站买是正品的,品牌营销成功案例【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色#xff1f;#xff1f; 
Activation Function——在卷积神经网络中的激活函数是一个什么样的角色#xff1f;#xff1f; 文章目录 【激活函数】Activation Function——在卷积神经网络中…【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色 
Activation Function——在卷积神经网络中的激活函数是一个什么样的角色 文章目录 【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色激活函数CNN中为什么必须要用激活函数呢激活函数的主要作用 常用的激活函数及其应用1.Sigmoid 函数2.Tanh 函数3.ReLU (Rectified Linear Unit) 函数4.Leaky ReLU 函数5.ELU (Exponential Linear Unit) 函数6.Swish 函数7.Softmax 函数 激活函数的选择依据总结 激活函数 
激活函数Activation Function是深度学习中将输入信号的加权和转化为输出信号的非线性变换。激活函数的引入解决了线性模型中无法处理复杂模式的问题确保神经网络具有表达复杂函数、捕捉非线性关系的能力。 
CNN中为什么必须要用激活函数呢 
如果不使用激活函数神经网络层与层之间的输出将是线性的组合等效于单一的线性模型。无论网络多么深最终的输出都是输入的线性变换无法解决复杂的模式识别问题。因此激活函数引入了非线性使神经网络能够拟合复杂的高维数据。 
激活函数的主要作用 引入非线性神经网络通过激活函数引入非线性能够拟合复杂的非线性函数解决复杂问题。  保证梯度传播通过适当的激活函数可以使得梯度能够良好地反向传播从而有效地进行参数更新。  特征压缩与选择激活函数通常可以对输入信号进行压缩抑制不重要的信号并突出关键的特征。  
常用的激活函数及其应用 
1.Sigmoid 函数 
公式 f ( x )  2 1  e − x f(x)\frac{2}{1e^{-x}} f(x)1e−x2 
作用 
将输入值映射到 0 到 1 之间的概率区间。常用于二分类问题的输出层。 
优缺点 
优点常用于二分类问题的输出层。缺点当输入值绝对值过大时梯度趋于 0导致梯度消失问题无法有效训练深层网络。 
代码示例 
import tensorflow as tf# Sigmoid 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.sigmoid(x)
print(output)适用场景 
二分类任务例如Logistic 回归的输出层。小型网络不适用于深度网络。 
2.Tanh 函数 
公式 f ( x )  2 1  e − 2 x − 1 f(x)\frac{2}{1e^{-2x}}-1 f(x)1e−2x2−1 
作用 
将输入值映射到 -1 到 1 的区间。Tanh 函数对 0 的输入是对称的即它是零中心化的。 
优缺点 
优点零中心化更适合处理有负数输入的特征。缺点同样存在梯度消失问题当输入值很大或很小时梯度趋近于 0。 
代码示例 
import tensorflow as tf# Tanh 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.tanh(x)
print(output)适用场景 
自然语言处理等需要处理负值的场景。常用于 RNN 和 LSTM 中。 
3.ReLU (Rectified Linear Unit) 函数 
公式 f ( x )  m a x ( 0 , x ) f(x)max(0,x) f(x)max(0,x) 
作用 
当输入大于 0 时ReLU 输出输入值本身当输入小于或等于 0 时输出 0。引入非线性并且计算非常简单收敛速度快。 
优缺点 
优点引入非线性并且计算非常简单收敛速度快。缺点当输入小于 0 时神经元可能会死亡即无法再激活这叫做 “ReLU 死亡” 问题。 
代码示例 
import tensorflow as tf# ReLU 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.relu(x)
print(output)适用场景 
深度卷积神经网络CNN、全连接网络FCN等几乎所有深度学习模型中。 
4.Leaky ReLU 函数 
公式 f ( x )  m a x ( 0.01 x , x ) f(x)max(0.01x,x) f(x)max(0.01x,x) 
作用 
类似于 ReLU但对于负值输入不完全为 0而是乘以一个较小的斜率通常为 0.01以解决 ReLU 死亡问题。 
优缺点 
优点在负值区域保留小的梯度避免了 ReLU 的死亡问题。缺点相比 ReLU 的简单性增加了计算量。 
代码示例 
import tensorflow as tf# Leaky ReLU 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.leaky_relu(x, alpha0.01)  # alpha 是负值部分的斜率
print(output)适用场景 
深度神经网络中尤其是在 ReLU 出现大量 “死亡神经元” 的情况下。 
5.ELU (Exponential Linear Unit) 函数 
公式 f ( x )  { x , i f x  0 , α ( e x − 1 ) , i f x ≤ 0 f(x)\begin{cases} x, ifx0,\\ α(e^x-1), ifx \le 0 \end{cases} f(x){x,α(ex−1),ififx0,x≤0 
作用 
对于正值ELU 类似于 ReLU对于负值它的输出为指数衰减而非零这样可以让网络学习负数特征同时保持梯度流动。 
优缺点 
优点相比 Leaky ReLU有更好的训练表现减少了偏差。缺点计算稍复杂训练速度略慢于 ReLU。 
代码示例 
import tensorflow as tf# ELU 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.elu(x)
print(output)适用场景 
深度网络中用于代替 ReLU特别是需要保留负数特征的场景。 
6.Swish 函数 
公式 f ( x )  x ⋅ s i g m o i d ( x ) f(x)x·sigmoid(x) f(x)x⋅sigmoid(x) 
作用 
Swish 是一种自适应激活函数结合了 Sigmoid 和 ReLU 的特性并能平滑地处理负值输入提供更好的表现。 
优缺点 
优点在一些任务上Swish 的表现优于 ReLU。缺点计算稍复杂训练速度较慢。 
代码示例 
import tensorflow as tf# Swish 激活函数
x  tf.random.normal([1, 5])
output  x * tf.nn.sigmoid(x)
print(output)适用场景 
深层神经网络中特别是在需要更好的训练表现时如 EfficientNet。 
7.Softmax 函数 
公式 f ( x )  e x i ∑ j e x j f(x)\frac{e^{x_i}}{∑_je^{x_j}} f(x)∑jexjexi 
作用 
将输入映射为一个概率分布所有输出值的和为 1。通常用于多分类任务的输出层。 
优缺点 
优点用于分类问题时能够很好地提供归一化概率。缺点仅适用于分类任务的输出层。 
代码示例 
import tensorflow as tf# Softmax 激活函数
x  tf.random.normal([1, 5])
output  tf.nn.softmax(x)
print(output)适用场景 
多分类问题 的输出层如图像分类、文本分类。 
激活函数的选择依据 
二分类问题一般选择 Sigmoid 作为输出层激活函数。多分类问题常使用 Softmax 作为输出层激活函数提供概率分布。卷积网络通常使用 ReLU 或 Leaky ReLU可以加快网络收敛并处理梯度问题。深度网络可以考虑使用 Swish 或 Leaky ReLU在深层网络中能够避免死神经元和梯度消失。自然语言处理或时间序列处理常见激活函数为 Tanh 或 Sigmoid配合 LSTM 或 GRU 使用。 
总结 
激活函数为神经网络引入了非线性特性使得网络能够拟合复杂的数据模式和关系。选择合适的激活函数不仅能提升模型的表现还能有效解决训练中的一些问题如梯度消失和死神经元问题。不同的激活函数在不同场景下有各自的优势和适用性因此在实际应用中需要根据具体任务和数据来合理选择。