什么是线性变换
矩阵乘法到底在做什么?——把整个空间一起旋转、拉伸、搬动
同一个 Wx,另一种眼光
上一课我们学会了矩阵乘向量 Wx:W 的每一行和 x 做一次点积,得到输出的每个分量。 那是一种「算账」的眼光——把矩阵当成一台计算器,喂进去一个向量,吐出来另一个向量。
这一课,我们给同一个 Wx 换一副眼镜,看看它在几何上到底在做什么。别急着想「空间」「变换」这些大词,我们先只盯住一个向量,一步步来。
第一步,把第 1 课的一个事实捡回来:一个向量既是一串数字,也可以画成坐标纸上从原点出发的一个箭头, 箭头的尖端就落在一个点上。比如 ,画出来就是从原点指向「右 1、上 1」那个位置的点。
第二步,关键的一句:既然输入 是一个点,算出来的 也是一个点, 那矩阵乘法在几何上做的事,其实朴素得很——它把输入这个点,搬到了另一个位置。拿一个具体的 W 亲手算一遍就明白了。取
照上一课的「每行点积」来算(就是你已经练熟的那个动作):
于是这个 W 把点 搬到了 。把这件事画到坐标纸上看得最清楚:
一次矩阵乘法 = 把一个点挪到新位置,就这么简单——到这里,都还只是一个点的故事。
第三步,也是真正的飞跃:同一个 W,对坐标纸上的每一个点都搬一遍,会发生什么? 与其一下子去想象无穷多个点,不如先迈一小步——从 1 个点,到 4 个点。
取一个最简单的图形:一个单位正方形,它的四个角分别是、、、。 把同一个 分别乘到这四个角上(其中 就是上面图 4-1 里那个点),得到四个新角:
把四个新角按原来的顺序连起来,正方形变成了一个平行四边形。盯着它看几秒,有三件事值得留意: 原点 纹丝没动;四条边依旧是直的、对边依旧平行; 而整块面积从 1 涨到了 3——这一整个「面」被 W 又拉又斜地整体改造了一遍。
现在把这一步推到底:不止 4 个角,而是正方形内部、外部的每一个点都跟着一起搬。 这就好比修图软件里的「自由变换」——拖一下控制点,图片里成千上万个像素全都按同一条规则一起挪动,谁也不例外。
当整张纸的每个点都被同一个 W 同步搬走,整张坐标纸就被统一地揉成了另一副样子:可能被旋转、拉宽、压扁、推斜。 这,就是把 Wx 看成「对整个空间做一次变形」的含义——它不再是搬动一个孤零零的点,而是一次牵动全局的整体动作。 神奇的是,无论怎么揉,网格线始终保持横平竖直、间距均匀。下面这张图就是一例:
只要盯住两个基向量
整张坐标纸有无穷多个点,难道要一个个去算它们的新位置吗?不用。 这里有一个极其省力的诀窍:只要盯住两个「基向量」去了哪里,整个空间的去向就全知道了。
所谓基向量,就是沿坐标轴方向、长度为 1 的两个箭头:î = [1, 0](指向正东)和 ĵ = [0, 1](指向正北)。 平面上任何一个点都是它们的线性组合——比如点 [3, 2] 就是「往 î 方向走 3 步,再往 ĵ 方向走 2 步」,即 3î + 2ĵ。
矩阵的这种变换有个美妙的性质:它不会打乱这种「组合关系」。 如果变换后 î 落到了新位置 î′、ĵ 落到了 ĵ′,那么点 [3, 2] 就老老实实落到 3î′ + 2ĵ′。 于是只需要两个新位置,就能推出所有点的去向。而这两个新位置,恰好就是矩阵 W 的两列:
所以在平面(二维)里读懂一个矩阵的几何含义,方法简单到出奇:把它的两列拎出来,画成两个箭头,看它们指向哪, 整个空间会怎么变形也就一目了然了。
这里要补一句更严谨的话,免得留下误解:「看列」这件事不是二维的专利,但「两列」是。二维空间有 两个基向量,所以矩阵正好两列; 而 维空间有 个基向量(沿每根坐标轴各一个),它的变换矩阵就有 列——第 列,就是第 个坐标轴上的基向量变换后的落点。道理一字不差,只是箭头更多、画不出来而已。神经网络里的矩阵动辄上千行上千列,正是这个规律在高维空间的样子。
变换动物园:旋转、拉伸、切变、翻转
不同的矩阵,对应不同的「变形动作」。下面拿同一个单位正方形当小白鼠, 看四类最常见的变换分别把它拉成什么样——灰色虚线是原来的样子,彩色是变换后的, 每张图下面还标出了造成这个变换的矩阵(回忆第 2 站:矩阵的两列就是 î、ĵ 的落点):
你会发现一个规律:不管怎么旋转、拉伸、切变、翻转,原本的网格线变换后依然是直线, 原本平行的线依然平行,间距依然均匀,而且原点纹丝不动。满足这套「规矩」的变换,才叫线性变换——这也是「线性」二字的由来。
那线性变换到底有什么用、平时拿来做什么?它的作用归根到底就一句话:用一个矩阵,把一整批向量统一地「重新摆放」到新位置。这件看似简单的事,撑起了一大片现实应用,常见的有三类:
- 几何变换:游戏、3D 渲染、修图软件、CAD 里的旋转、缩放、镜像、投影, 本质都是给图形的每个顶点乘上一个矩阵——也就是我们刚在图 4-5 里玩的那几样。
- 换个坐标系看数据:把数据投影到新的坐标轴上,突出「最有信息量」的方向、顺手压掉冗余维度。 数据分析里的降维(比如 PCA)就是这么干的,把又高又稀疏的数据压成几条关键的轴。
- 神经网络的每一层:这是我们最关心的。一层网络的核心运算 就是一次线性变换—— 它把数据在空间里又转又拉,目的只有一个:把原本缠在一起、难以分开的样本,摆成「一刀就能切开」的样子, 后面的层再接着摆,一层层把数据揉到越来越好分的位置。
举个最贴身的具体例子,帮你把这件事钉牢:你想把手机相册里一张照片逆时针转 90°。 照片说穿了就是一大堆带坐标的像素,只要给每一个像素的坐标 统一乘上同一个旋转矩阵
像素就被搬到新位置 ——比如右上角的像素 跑到 。 成千上万个像素同步照做同一条规则,整张照片就利落地转了 90°。相册里那个「旋转」按钮,底层不过就是这么一次矩阵乘法。
可以说,线性变换就是神经网络搬动、重组数据的基本功——理解了它, 你就读懂了网络每一层「在几何上到底在做什么」。
想「搬动」空间,得加上 b
线性变换很强大,但有一件事它做不到:把整个空间平移(搬家)。 原因刚才已经埋下了——线性变换永远把原点钉在原地。无论怎么旋转拉伸,原点 [0,0] 变换后还是 [0,0], 整张纸没法整体挪开。
可神经网络常常需要「搬动」这一步。补救办法非常直接:在 Wx 之后再加一个偏置向量 b, 把变形完的空间整体推到新位置。这就凑齐了神经网络每一层的完整公式:
这条 Wx + b 就是全连接层的核心运算,在神经网络里无处不在。 W 的形状决定它把几维空间变到几维空间,b 给每个输出一个可学习的「基准偏移」。
叠很多层,却还是一层
既然每一层都是 Wx + b,那把很多层叠起来,是不是就能学到非常复杂的变换? 我们顺着数学追一下,把两层接起来看看:
W₂W₁ 可以乘出来合并成一个新矩阵,W₂b₁ + b₂ 也合并成一个新偏置。 于是「两层线性变换」算出来的结果,和「一层线性变换」一模一样——叠多少层都逃不出这个结论。 几何上的道理也很直白:旋转之后再拉伸,整体效果不过是另一个旋转拉伸而已,绕不出「线性」的圈子。
这意味着纯线性网络有个天花板:再深也只能画出直线(超平面)作分界, 连「圈出一块圆形区域」这种简单任务都办不到。打破天花板需要在层与层之间塞进一点「非线性」—— 那就是后面学神经网络时会遇到的激活函数。
矩阵乘法 Wx 的几何真相是对整个空间做一次统一变形——旋转、拉伸、切变、翻转。 读懂一个矩阵,只需看它的每一列:每列正是一个坐标轴上的基向量变换后的落点(平面里就是 î、ĵ 两列,n 维就是 n 列)。 变形保持「线还是线、平行还是平行、原点不动」,这就是线性; 想再「搬动」空间就加上偏置 b,凑成每层的核心运算 Wx + b。 但纯线性叠再多层等价于一层,要更强的表达力,得等非线性登场。
这一课你换上了新眼光
- 几何视角:Wx 不是搬一个点,而是把整张坐标纸一起变形。
- 基向量诀窍:盯住每个基向量的落点就懂整个变换;它们正是矩阵的各列(平面里是 î、ĵ 两列,n 维则有 n 列)。
- 四类变换:缩放、旋转、切变、翻转——都让网格保持直、平行、等距。
- Wx + b:W 负责变形,b 负责平移,合起来是全连接层的核心。
- 线性的天花板:线性叠线性还是线性,表达力不增加。
学习小测验
做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。
什么是梯度
网络预测错了——W 和 b 里的参数该往哪个方向调?怎么让计算机自己找到答案?