Skip to content

激活函数

常用的一些激活函数

Sigmoid 函数逻辑函数(二分类)

  • 公式f(x)=11+ex
  • 输出范围:0 到 1
  • 特点:把输入值压缩到 0 和 1 之间,像一个概率值。如果输入很大,输出接近 1;如果输入很小,输出接近 0
  • 用途:常用于二分类问题,比如判断一张图片是不是猫(输出接近 1 是猫,接近 0 不是猫)。也常用在神经网络的输出层
  • 缺点:当输入值很大或很小时,梯度会变得很小(接近 0),导致“梯度消失”问题,模型学习变慢

image.png

ReLU (Rectified Linear Unit) 函数整流线性单元(常用)

  • 公式f(x)=max(0,x)
  • 输出范围:0 到正无穷
  • 特点:如果输入小于 0,输出就是 0;如果输入大于 0,输出就是输入本身。简单粗暴
  • 用途:非常常用,尤其是在深度学习中。因为它计算简单,训练速度快,能有效避免梯度消失问题。常用于隐藏层
  • 缺点:当输入为负值时,输出始终为 0,可能导致部分神经元“死亡”(不再更新),无法学习

image.png

Leaky ReLU 函数

  • 公式f(x)={xif x>0αxif x0(其中 α 是一个很小的正数,比如 0.01)
  • 输出范围:负无穷到正无穷
  • 特点:它是 ReLU 的改进版,对于负输入不会直接输出 0,而是输出一个很小的值(比如 0.01 x),避免神经元“死亡”
  • 形象描述:图形和 ReLU 类似,但 x 小于 0 时不是水平线,而是一条斜率很小的斜线
  • 用途:解决 ReLU 的“神经元死亡”问题,适合隐藏层
  • 缺点:需要调参(选择合适的 α 值),计算比 ReLU 略复杂

如何选择

为隐藏层选择

一般来说,隐藏层通常推荐使用 ReLU,原因主要是 ReLU 的计算较快,而且 ReLU 只有一端是平的,这在计算梯度下降的时候有优势,速度更快

为输出层选择

通常取决于你要预测的标签 Y 的特点,比如说你要预测一个二分的模型,那么自然而然就会选择 Sigmoid;而如果要预测的数据中存在负的,就会选择线性激活函数;如果要预测中只有正的,那么就会选择使用 ReLU(线性整流单元)

在 Tensorflow 中使用

可以通过定义,在不同的层中使用不同的激活函数

python
model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=25, activation='relu') # 隐藏层 第一层
	tf.keras.layers.Dense(units=10, activation='relu')  # 隐藏层 第二层
	tf.keras.layers.Dense(units=1, activation='sigmoid')  # 输出层 第三层,使用二分类
])

最后更新于:

Released under the MIT License.