激活函数是什么?为什么神经网络不能没有它

激活函数让神经网络拥有非线性表达能力。没有它,再多层网络也可能只是一个更复杂的线性模型。

笔记本上画着神经网络结构,旁边的屏幕展示一条非线性曲线。

上一篇文章里,我们把神经网络理解成一套可以从样本中学习规律的函数。

但这里马上会出现一个问题:如果神经网络每一层都只是做加权求和,那它真的能学到复杂规律吗?

答案是不够。

激活函数就是为了解决这个问题出现的。

先看没有激活函数会怎样

一个最简单的神经元大概会做这样的计算:

输出 = 输入1 * 权重1 + 输入2 * 权重2 + 偏置

这是一种线性计算。

如果第一层是线性的,第二层也是线性的,第三层还是线性的,那么把它们叠在一起,本质上仍然可以合并成一个大的线性计算。

也就是说,网络看起来变深了,但表达能力并没有真正变强。

这就像你连续做了很多次加减乘除里的线性变换,最后还是很难表达弯曲、分段、复杂边界这些关系。

激活函数做了什么

激活函数会放在神经元的加权求和之后。

它会把原本的线性结果再处理一下,让网络具备非线性能力。

可以粗略理解成:

输出 = 激活函数(加权求和结果)

这一步看起来很小,但意义很大。

因为现实世界里的很多规律都不是直线关系。图片分类、文本理解、语音识别、推荐系统,它们背后的边界往往都很复杂。

激活函数让神经网络有机会去拟合这些复杂关系。

ReLU 为什么常见

最常见的激活函数之一是 ReLU

它的规则非常简单:

如果输入大于 0,就输出它自己
如果输入小于 0,就输出 0

也就是:

ReLU(x) = max(0, x)

它简单、计算快,而且在很多深度学习模型里效果很好。

刚入门时,可以先记住一个直觉:ReLU 像一个开关,小于 0 的信号被关掉,大于 0 的信号被保留。

Sigmoid 和 Tanh

除了 ReLU,还有两个经典激活函数:SigmoidTanh

Sigmoid 会把输入压到 01 之间,所以它经常出现在二分类模型的输出层里,用来表示概率。

Tanh 会把输入压到 -11 之间,它比 Sigmoid 多了负数区间,在一些早期神经网络里很常见。

不过在隐藏层里,现在更常用的通常还是 ReLU 及其变体。

激活函数该怎么选

入门阶段不用一开始就纠结所有激活函数。

可以先按这个规则记:

这不是全部情况,但足够支撑你读懂大多数入门代码。

小结

激活函数的核心作用,是给神经网络加入非线性。

没有激活函数,很多层线性计算叠起来,表达能力仍然有限;有了激活函数,网络才有机会学习弯曲的边界和复杂的规律。

所以它不是可有可无的小配件,而是神经网络能够变强的关键原因之一。