「线性」(linearity)这一概念贯穿数学、物理、工程学以及许多其他领域。简单来说,线性描述了两种基本的运算性质:可加性与齐次性。
如果一个关系、函数或系统同时满足以下两个条件,则称其为线性的。
考虑作用在输入 x 和 y 上的变换或函数 f。
「部分之和等于整体」。也就是说,分别处理两个输入再相加结果,与先将输入相加再处理其和,是等价的。
f(x+y)=f(x)+f(y)示例:乘法 f(x)=5x 满足可加性。
- 左边:f(2+3)=5×(2+3)=25,右边:f(2)+f(3)=10+15=25,相等。
反例:平方函数 f(x)=x2 不满足可加性。
- 左边:(2+3)2=25,右边:22+32=4+9=13,不相等。
「输入的缩放会使输出按相同比例缩放」。也就是说,将输入乘以一个常数(标量),得到的结果等于原输出乘以同一个常数。
f(c⋅x)=c⋅f(x)(c 为任意常数)示例:f(x)=5x 满足齐次性。
- 左边:f(4×3)=5×12=60,右边:4×f(3)=4×15=60,相等。
反例:加上常数项 f(x)=5x+2 不满足齐次性。
- 左边:f(4×3)=5×12+2=62,右边:4×f(3)=4×(15+2)=68,不相等。
在上述定义中,同时满足可加性与齐次性是线性成立的充分必要条件。
许多人错误地认为「线性」就是「图像是一条直线」。这种理解并不准确。
「真正的线性」:一条必须过原点的直线。例如 y=2x。它同时满足可加性与齐次性。如果输入为 0,输出也必为 0。
严格来说,如果加入偏置项 b,它就变成了仿射(affine)。它仍是一条直线,但未必经过原点。例如 y=2x+1。它不满足齐次性(因为 f(0)=1=0)。尽管它常被称为「线性函数」,但在严格定义下它并非线性,而是「线性 + 平移」,即仿射。
现在我们就能理解为什么称为「线性」组合了。这种组合只允许两类「线性」运算:
- 数乘(对应齐次性):将向量按因子 c 拉伸或压缩。
- 加法(对应可加性):将处理后的向量相加。
像平方、取绝对值或对数这类非线性运算是不被允许的。因此,形如 c1v12+c2v2 或 c1v1+c2v2+3 的表达式不能称为线性组合。
可以说「线性」是数学与科学中最简单、最核心的关系,因为它允许我们把复杂问题分解为简单部分的叠加。
仿射函数 f:Rn→Rm 的定义如下:
f(x)=Ax+b其中 A 是矩阵,b 是常向量。它就是线性函数加上偏置。
如果取仿射函数的加权线性组合(系数可以是标量):
g(x)=i=1∑kαifi(x)其中每个 fi(x)=Aix+bi。
展开后:
g(x)=i=1∑kαi(Aix+bi)=(i=1∑kαiAi)x+i=1∑kαibi这仍然是仿射函数。因此,加权组合不会破坏仿射性。
如果用非线性的多项式运算来组合仿射函数,例如平方或更高次幂:
h(x)=(f1(x))2+3f2(x)f3(x)+5注意:f1(x)2 是逐元素平方,f2(x)f3(x) 是逐元素相乘或点积。
这些运算会引入二次项或更高阶项,不再保持 Ax+b 的形式。因此,非线性多项式组合通常不是仿射函数。
这个问题非常重要,是理解神经网络本质的关键。让我们仔细分析仿射函数的复合是否仍然是仿射的。
假设有两个仿射函数:
f(x)=Ax+b,g(x)=Cx+d其复合为:
h(x)=f(g(x))=f(Cx+d)展开来看其形式:
h(x)=A(Cx+d)+b=(AC)x+(Ad+b)结果仍然是仿射函数。
由此可见,仿射函数的复合仍然是仿射的。这一点可以推广:复合任意多个仿射函数:
fn(…f2(f1(x))…)总能写成:
A总x+b总这正是为什么:如果神经网络的每一层都是仿射的而不使用激活函数,那么无论堆叠多少层,网络的表达能力都等同于单层。我们可以把仿射层看作拉伸、旋转或平移的运算,或这些运算的组合。复合多个仿射变换等价于连续的拉伸 + 旋转 + 平移,最终仍归结为一次整体的拉伸 + 旋转 + 平移。因此,复合仿射变换并不会增加非线性的自由度,也无法表示曲线或复杂函数。
神经网络的每一层都是一个仿射映射:
f(x)=Wx+b- 若 W 可逆(即 det(W)=0),则 f 是双射且连续的。
- 其逆映射为:
f−1(y)=A−1(y−b)它同样是仿射且连续的,因此是一个同胚(homeomorphism)。但这里有一个核心条件:W 必须可逆。
复合多个仿射变换等价于复合多个同胚。假设有多个连续的可逆仿射映射:
fn∘fn−1∘⋯∘f1每个 fi 都是同胚,而同胚的复合仍然是同胚。因此,最终的映射也是同胚。
于是我们得出如下结论:设 M 为原始流形:
- 连续且双射的仿射映射,保持流形结构(同胚)。
- 连续复合多个这样的仿射映射,得到的流形与 M 同胚。
换句话说:「连续线性 + 偏置的变换不会改变流形的拓扑,只会对其进行拉伸、旋转、平移或剪切。」
这就是为什么仅使用线性层无法「弯曲」数据流形:在嵌套的线性层下,数据始终保持其「原始形状」(拓扑不变)。如果决策边界需要切开一个复杂流形,就必须引入非线性(激活函数)。
这也是深度学习的目标。如果原始流形的结构对于给定任务而言不可分,而学习目标又要求可分性,那么原始流形与目标流形必然不是同胚的。
在从原始流形到目标流形的变换中,要失去同胚性就必须摆脱线性、仿射的变换。因为仅靠仿射变换(更一般地说是同胚变换)通常不足以解开类别。深度网络往往需要通过非同胚的非线性操作来重构数据流形,使其最终线性可分。
我们需要考虑如何让仿射变换的复合变得非线性。这一洞见正是神经网络几何解释的核心:
线性层只能执行保持拓扑的仿射变换;非线性层则允许拓扑改变,从而使神经网络能够表示复杂函数。
神经网络的每一层都是一个仿射映射:
li(x)=Wix+bi其中 i 表示第 i 层。n 层仿射映射的嵌套复合为:
ln∘ln−1∘ln−2∘⋯∘l0如果不引入激活函数,上述结果仍然是仿射函数。
证明很简单:
l2(l1(x))=W2(W1x+b1)+b2=(W2W1)x+(W2b1+b2)它仍然保持 Ax+b 的形式。
由归纳法可得:
ln∘⋯∘l0=Wx+b因此,网络的深度完全失去了意义。
为了引入非线性,我们可以在每一层上添加激活函数:
f(x)=(σn∘ln)∘(σn−1∘ln−1)∘⋯∘(σ0∘l0)(x)其中
li(x)=Wix+bi展开后即为:
f(x)=σn(Wnσn−1(Wn−1⋯σ0(W0x+b0)⋯+bn−1)+bn)这就是神经网络的标准形式。
在加入激活函数后:
(σ∘l2)∘(σ∘l1)无法化简为
Wx+b因为一般来说:
σ(Ax+b)=A′σ(x)+b′激活函数破坏了仿射映射在复合下的封闭性。换言之,它打破了可加性与齐次性这两个关键特性。这本质上就是神经网络非线性表达能力的来源。
从前面讨论的流形视角来看,这可以进一步写成:
Ml0M1σ0M1′l1M2σ1M2′→⋯其中:仿射层负责拉伸、旋转、平移、剪切;激活层负责对流形进行折叠、裁剪、压缩与重构。
如果所有 Wi 都可逆,那么仿射层本身只是同胚变换,不会改变流形的拓扑。真正让流形逐步变得可分的,往往正是激活函数引入的非线性形变。
因此,从几何角度看,神经网络可以理解为作用在数据流形上的仿射变换与非线性流形操作的交替组合。这一视角与许多现代流形学习和几何深度学习的解释相一致。
激活函数并不存在「唯一最佳」的选择。不过,从神经网络的可训练性与表达能力来看,一个好的激活函数通常应满足几个核心特征:
如前所述,需要非线性来打破堆叠仿射层的线性封闭性,使多层网络能够逼近任意函数。
数学要求:不能满足线性组合的封闭性:
σ(ax+by)=aσ(x)+bσ(y)例如:ReLU、Tanh、Sigmoid、GELU。
线性函数并不适用,因为多个线性层的复合仍然是线性的,这会退化回仿射复合,从而限制表达能力。
由于神经网络的核心依赖反向传播来确定权重,激活函数必须在其定义域的大部分区域可微,以便在反向传播过程中计算梯度。对于不可微的点(例如 ReLU 在 0 处),通常使用次梯度(subgradient)。此外,导数的性质会影响梯度流动:梯度过小会导致梯度消失(如 Sigmoid),梯度过大则会导致梯度爆炸。
确保网络输出随输入连续变化,否则训练会变得不稳定。存在少数可控的不连续点通常是可以接受的(例如 ReLU 只有一个不连续点,实际影响很小)。
在上述性质中,满足条件只是「入场券」,而不是「成功的保证」。