如果说权重 和偏置
是神经网络的"骨架"和"肌肉",那么激活函数(Activation Function)就是赋予这个网络"生命"的关节。
没有它,神经网络将变得极其僵硬和无力。
1. 激活函数是什么?
简单来说,激活函数是在神经网络的每一层中,对**加权和(Weighted Sum)的结果进行一次"加工"**的函数。
我们知道,一个神经元的工作分为两步:
-
线性加权: 将所有输入
乘以各自的权重
,再加上一个偏置
,得到一个总和
。
或者用向量表示:
-
激活: 将这个总和
"喂"给激活函数
(读作 sigma),得到该神经元的最终输出
(代表 "activation")。
这个 就是激活函数。它通常是一个非常简单的、固定的非线性函数。
2. 为什么必须要有激活函数?
这才是最核心的问题。
答案是:激活函数为神经网络引入了"非线性" (Non-linearity),这是网络能够学习复杂模式的唯一关键。
场景假设:如果一个网络 没有 激活函数...
如果没有激活函数,那么 这步就变成了
。
让我们看看一个两层的神经网络会发生什么:
-
第 1 层:
-
第 2 层 (输出层):
现在,我们把的表达式代入到第 2 层的公式中:
我们把它展开:
请仔细看这个最终的公式。我们可以定义:
-
(一个新的权重矩阵)
-
(一个新的偏置向量)
那么,这个两层的网络就变成了:
这就是一个最简单的、只有一层的线性模型!
结论(关键)
-
线性坍塌 (Linear Collapse): 无论你堆叠多少层"线性"网络(没有激活函数),比如 100 层,它在数学上永远等价于一个单层的线性网络。
-
线性模型的局限性: 线性模型(如线性回归)能做的唯一事情就是"画一条直线(或高维平面)"来划分数据。
但是,我们生活的世界是极其"非线性"的:
-
图像: 识别一只猫,其像素模式绝不是一条直线能描述的。
-
语言: 句子的含义是高度复杂和非线性的。
-
房价: 房价和面积、位置的关系也不是简单的直线。
如果没有激活函数,深度学习将毫无意义,因为它将退化为最简单的线性回归。
激活函数如何解决这个问题?
激活函数(如最常用的 ReLU: )在计算过程中引入了一个"拐点 "或"弯折"。
-
当
时,它是一条直线。
-
当
时,它变成了另一条直线(
)。
当数百万个这样的"小弯折"组合在一起时,它们就有了拟合(approximating)任何复杂、弯曲函数的能力。这就像用无数个微小的直线段去拼凑一个复杂的曲线。
**这就是著名的"万能近似定理"(Universal Approximation Theorem)**的核心思想:一个带非线性激活函数的单隐藏层神经网络,理论上可以拟合任何连续函数。
总结
-
是什么? 激活函数是应用于神经元"加权和"之后的**非线性"加工"**函数。
-
为什么要有?
-
引入非线性: 这是最重要的原因。它打破了线性坍塌,使得网络有能力学习和拟合真实世界中的复杂非线性模式。
-
解决梯度问题 (次要原因): 像 ReLU 这样的激活函数,其导数(
时为 1)有助于解决梯度消失问题,让梯度能够更顺畅地在深层网络中传播。
-
简而言之,激活函数是神经网络从一个"僵硬的棍子"(线性模型)转变为一个"灵活的章鱼"(复杂非线性模型)的关键。
我们最常讨论的激活函数有 Sigmoid(不常用)、Tanh 和 ReLU。