侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1824 篇文章
  • 累计收到 0 条评论

为什么神经网络需要激活函数?请举例说明两种常见激活函数的特点

2025-12-12 / 0 评论 / 4 阅读

题目

为什么神经网络需要激活函数?请举例说明两种常见激活函数的特点

信息

  • 类型:问答
  • 难度:⭐

考点

激活函数的作用,常见激活函数特性,神经网络基础原理

快速回答

激活函数是神经网络的核心组件,主要作用包括:

  • 引入非线性:使神经网络能够学习复杂模式
  • 决定神经元输出:将加权和映射到特定范围

两种常见激活函数:

  1. Sigmoid:输出范围(0,1),适合概率输出
  2. ReLU:计算高效,缓解梯度消失问题
## 解析

一、激活函数的核心作用

原理说明:如果没有激活函数,神经网络无论多少层都等价于单层线性变换($f(x) = Wx + b$),无法学习复杂非线性关系。激活函数通过非线性映射(如 $\sigma(z) = 1/(1+e^{-z})$)使神经网络成为通用函数逼近器。

二、常见激活函数详解

1. Sigmoid函数

数学形式:$\sigma(z) = \frac{1}{1 + e^{-z}}$

特点

  • 输出范围(0,1),适合二分类输出层
  • 平滑梯度,便于求导
  • 缺点:易导致梯度消失(当 |z| 很大时梯度接近0)

代码示例

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 测试
print(sigmoid(0))  # 输出 0.5
print(sigmoid(10)) # 输出接近 1.0

2. ReLU函数(Rectified Linear Unit)

数学形式:$ReLU(z) = max(0, z)$

特点

  • 计算高效(无需指数运算)
  • 缓解梯度消失(正区间梯度恒为1)
  • 缺点:负区间输出为0("Dead ReLU"问题)

代码示例

def relu(x):
    return np.maximum(0, x)

# 测试
print(relu(-1))  # 输出 0
print(relu(5))   # 输出 5

三、最佳实践与常见错误

激活函数选择指南

  • 隐藏层首选 ReLU(计算快、收敛好)
  • 二分类输出层用 Sigmoid
  • 多分类输出层用 Softmax

常见错误

  • 全网络使用Sigmoid导致梯度消失
  • 忽略ReLU的Dead Neuron问题(可尝试Leaky ReLU改进)
  • 输出层误用ReLU(应匹配任务类型)

四、扩展知识

  • 梯度消失:深层网络中梯度连乘趋近0,Sigmoid/Tanh更易发生
  • 替代方案:Leaky ReLU(负区间小斜率)、ELU(指数线性单元)
  • 历史背景:2010年后ReLU取代Sigmoid成为主流,推动深度学习发展