神经网络几何直观:在二维平面上画曲线
一条主线:线性层把输入"平放"成高维里的一个仿射平面;ReLU 按 把这些平面切开、折起来;分类边界则是输出层超平面在输入空间中的原像。 全文只回答一个问题:为什么两层的线性分类器画不出曲线,而 ReLU 网络能?
主线串讲
先把整条线顺着走一遍。
起点是一个二维平面。 把它映射进十六维空间,像并不是一个十六维的体,而是十六维里的一个二维仿射平面。十六个神经元各自算一个线性函数,输出确实是十六维向量,但它被约束在这个二维平面里,信息量没有增加。
ReLU 在 处下刀。 这十六个条件在 空间里是十六个超平面,拉回输入平面就是十六条直线,把输入平面切成许多块。因为用的是 ReLU,每块内部的映射都是线性的,每块映到十六维里就是一个平面片。
这些平面片拼起来不再是平面。 它们一般不再落在线性层给出的那个二维仿射平面里,而是在十六维中弯折,用上了其它方向;但整个像仍然由二维参数 生成,参数维数还是 2(这里说的是像的内在自由度,不是权重个数,见 2.4 与附录 B)。所以原来的二维平面经过映射,在十六维里变成了一个分片线性的二维曲面。
多层复合就是反复折。 每一层把上一层的分片线性曲面再折一次,分片数量随层数增长,这就是深网络理论上能逼近复杂函数的几何原因。
分类任务是最后一步。 网络最终输出的决策边界,看上去是输入平面上的一条曲线,通常还是弯的,不是直线。它不是某一条切分线,而是由许多块上的线性片段拼出来的折线/曲线。我们在二维空间里看到的这条曲线,本质上是输出层超平面 在输入平面上的原像——是取原像,不是投影。
0. 结论速览
先给结论,后文再逐条拆开:
| 环节 | 几何动作 | 关键量 |
|---|---|---|
| 线性层 | 把 平放成 里的一个二维仿射平面 | 像的维数 ≤ 2,与 无关 |
| ReLU | 按 切分输入平面,把各片折出原平面 | 切分线有 16 条,最多切出有限块 |
| 多层复合 | 每层把上一层的分片曲面再折一次 | 分片数随深度/宽度增长 |
| 输出层 | 在 空间里选一个超平面 | 决策面 |
| 分类边界 | 该超平面的原像 | 二维输入 → 曲线;一维输入 → 离散点 |
一句话:网络不是"在二维平面上画曲线",而是"把数据抬到高维、在高维用一个平面分开、再把平面拉回来看它长什么样"。
1. 基本设定
输入 (先看 ,再看 )。第一层线性部分:
激活函数逐分量作用,以 ReLU 为例:
输出层线性组合:
分类边界定义为 在输入空间中的解集。
注意层级: 是定义在输入上的复合函数 ,边界是它在输入空间的零水平集,不是 空间里的那个平面本身。这是全文最容易出错的一处。
2. 线性层:把输入"平放"进高维
2.1 设定
以二维输入、十六维隐藏层为例(,)。记 的两列为 ,则
2.2 结论
线性层把二维输入映成十六维空间里的一个二维仿射平面:过点 ,方向由 张成。
- 十六维是陪域,不是像的维数。
- 像的维数最多是 2(只要 不共线就是恰好 2),远没有填满十六维。
- 十六个神经元各自算一个线性函数 ,输出确实是十六维向量,但它被约束在这个二维仿射子空间里。
2.3 三个必须分清的量
| 量 | 值 | 含义 |
|---|---|---|
| 输入自由度 | 2 | 两个参数决定了整个像 |
| 像的(仿射)维数 | 2 | 平面,不是十六维体 |
| 嵌入空间维数 | 16 | 平面"住"在十六维里 |
| 权重个数 | 参数个数 ≠ 像的维数 |
2.4 一句话
线性层只是把二维信息换了个坐标表示,嵌进高维;信息量没增加,像的内在自由度仍是 2。
术语提醒:原文说"参数维数仍是 2",这里"2"指的是输入自由度 / 像的内在维数;若按"参数个数"算,光 就有 32 个。两种说法别混用,见附录 B。
3. 激活函数:把平面折起来
3.1 切分发生在哪
每个 是一个条件。在 空间里, 是十六维中的一个超平面;把它拉回输入平面,
是一条直线。十六个神经元给出十六条直线,把输入平面切成许多块(最多 块,一般远少于这个上界)。
3.2 每块上是什么
在每个块内部,每个 的符号固定,ReLU 要么原样保留、要么压成 0。所以映射在这一块上是线性的,整块被映到十六维里的一个平面片。
3.3 整体像是什么
所有平面片拼起来,是十六维空间里的一个分片线性的二维曲面。
它一般不再落在线性层给出的那个二维仿射平面里,而是"离开"了那个平面,在十六维中弯折,用上了其它方向——这正是 ReLU 真正贡献的东西。
3.4 三个维数要分清
- 输入自由度:仍是 2,整个像由 生成。
- 嵌入空间维数:16,曲面嵌在十六维里。
- 像的本质维数:还是 2,不是"变成了十六维对象"。
一句话:ReLU 没有增加维数,它只是让像离开原来那个平面,从而获得"弯"的能力。
4. 多层复合:折的次数累加
4.1 纯线性:白搭
如果每层只有线性,复合还是线性:
多层等于一层,深度毫无意义。
4.2 夹上 ReLU:不再线性
每一层把上一层的分片线性曲面再折一次,分片数量随层数增长。这就是深网络能逼近复杂函数的几何原因。
4.3 宽度与深度各管什么
| 维度 | 作用 | 几何图像 |
|---|---|---|
| 宽度(每层神经元数) | 提供更多超平面去切分输入空间 | 决定折的面数(一次能切几刀) |
| 深度(层数) | 反复切分,使分片更精细 | 决定折的次数(切完再切) |
5. 分类边界:超平面的原像
5.1 准确链条(四步)
- 输入 经前几层映到中间表示 。
- 输出层对 做线性组合:。
- 决策条件 —— 这是十六维 空间里的一个超平面。
- 把这个超平面拉回输入空间(取原像),得到输入空间中的曲线/折线,这才是我们看到的分类边界。
5.2 三个对象,三张面孔
| 对象 | 是什么 | 拉回输入空间后 |
|---|---|---|
| 十六维 空间的超平面 | 直线( 对 是线性映射,原像平直) | |
| 十六维 空间的超平面 | 折线/曲线( 非线性,原像弯折) | |
| 分类边界 | 输出层超平面在输入空间上的原像 | 由许多块上的线性片段拼成,通常弯,不是某一条切分线 |
两句话记住区别:
- 是"刀",负责切分输入空间;
- 是"标准",负责在切好的块里挑出边界那一片。
5.3 用词:原像/拉回,不是投影
前向映射是 ,边界是
的解集。这是沿前向映射反向取原像,不是把高维对象"投影"下来。投影会丢信息且有明确公式;取原像只是"所有满足条件的输入",没有降维公式。
5.4 逻辑顺序:不是"先找曲线"
不是"先在二维找一条曲线,再设计网络去实现它",而是:
- 给定数据;
- 网络前向把数据映到高维;
- 输出层在高维学一个超平面把两类分开;
- 超平面拉回输入空间,就是分类边界曲线。
前几层提供"曲线族",输出层从中选一条。训练同时调两者。
6. 最小例子:一维输入映到二维
6.1 设定
输入 ,第一层映到二维:
ReLU:
输出:
6.2 切分点与三段
两个点把输入直线分成三段:
| 区间 | 的表达式 | ||
|---|---|---|---|
每段内 是 的线性函数,所以 在每段内也是 的线性函数。分类边界 在每段内最多是一个点。
6.3 代一组权重看看
取 、,即 :
| 区间 | 零点 | |
|---|---|---|
| 无 | ||
| ✅ | ||
| 无 |
结果:边界只有一个点 ,左侧判正类、右侧判负类。三段、两个折点,却只产出一个边界点——这正是"每段最多一个零点"的直接体现。
这个例子还说明:折点()不一定是边界点。折点来自隐藏层,边界点来自输出层,两者是不同的东西。
6.4 整体边界是什么
把所有段内满足 的点收集起来,得到输入直线上若干个离散点。这些点把输入直线分成若干区间,每个区间内预测同一类。
- 分类边界是输入直线上的若干个点,不是"线段组成的曲线"。
- 画出输入直线,看到的是红段、黄段交替;分界处是那些点。
6.5 与二维输入对比
| 输入维数 | 分类边界的维数 | 形状 |
|---|---|---|
| 二维 | 1 | 曲线/折线 |
| 一维 | 0 | 离散点 |
共同逻辑:高维超平面拉回输入空间,维数降一。
7. 七个常见误区
| 容易说错 | 准确说法 |
|---|---|
| "超平面把二维仿射平面弯折" | 超平面在十六维 空间;拉回输入平面是直线,作用是切分输入平面;弯折发生在映射之后,像在十六维里弯 |
| "引入其它维度,变成高维对象" | 像离开原二维仿射平面、在十六维中弯折,但内在自由度仍是 2 |
| "分类边界是某条超平面" | 边界是输出层超平面在输入空间中的原像,是分片线性折线/曲线 |
| "投影到低维" | 是拉回/取原像,方向与前向映射相反,且没有降维公式 |
| "十六维被填满了" | 线性层像的维数最多 2;十六维是陪域,不是像的维数 |
| "一维输入的边界是曲线" | 一维输入的边界是点;那些"段"是分类结果的分段,不是边界本身 |
| "折点就是决策边界" | 折点由隐藏层切分决定,边界点由输出层超平面决定,两者位置一般不同(见 6.3) |
8. 与万能逼近定理的关系
有关系,但不是同一个定理。
| 经典万能逼近 | 分片线性分析 | |
|---|---|---|
| 代表人物 | Cybenko(1989)、Hornik(1991) | Telgarsky、Montúfar、Pascanu 等 |
| 结论 | 单隐藏层、足够宽、非线性激活,可一致逼近紧集上任意连续函数 | ReLU 网络是分片线性函数;分片数随宽度、深度增长 |
| 说的是 | 存在性、稠密性 | 表达能力、深度的效率优势 |
| 不管的是 | 不直接数分片 | 不直接讲稠密性 |
联系:分片线性函数能逼近连续函数,所以前面"折、分片数增长"的图像,就是万能逼近定理在 ReLU 网络上的几何直觉版本。
区别:经典定理只保证"存在一套权重",不说需要多少片;分片分析能算出"要多少片",但不直接给稠密性结论。两者互补——一个说"能逼近",一个说"要多大代价"。
9. 一句话总结
线性层把输入平放进高维(仿射平面);ReLU 按 的直线切分输入空间,把像折成高维里的分片线性曲面;多层复合让分片数增长;分类边界是输出层超平面在输入空间上的原像——二维输入得曲线,一维输入得离散点。曲线族由前几层决定,具体曲线由输出层超平面决定,训练同时调两者。
附录 A 全流程速查
| 步骤 | 数学 | 几何 | 常见误读 |
|---|---|---|---|
| ① 线性层 | 平放成 维里的二维仿射平面 | 以为填满了 维 | |
| ② 切分 | 输入平面上的直线(共 条) | 以为在 维里切输入 | |
| ③ 激活 | 各片绕折痕折出原平面 | 以为维数变高了 | |
| ④ 输出 | 空间里的超平面 | 把它当分类边界 | |
| ⑤ 拉回 | 输入空间的曲线/点 | 说成"投影" |
维数账本(、):
输入平面 2 维 ← 真正的自变量空间
线性层像 2 维 (仿射平面,嵌在 16 维里)
ReLU 后的像 2 维 (分片线性曲面,仍嵌在 16 维里)
输出层超平面 15 维 (16 维空间中的一张平面)
拉回输入 1 维 (曲线/折线)← 分类边界
附录 B 符号表与术语说明
| 符号 | 含义 | 维数 |
|---|---|---|
| 输入 | (例中 2 或 1) | |
| 第一层权重、偏置 | 、 | |
| 线性层输出(激活前) | (例中 16) | |
| 隐藏层表示(激活后) | ||
| 输出层权重、偏置 | 、1 | |
| 网络输出(logit) | 1 | |
| 第 个折痕 | 输入空间中一条直线 | |
| 分类边界 | 输入空间中余维 1 的集合 |
两处术语需要留意
- "参数维数" 原文指"像由几个自由度生成",即 2。若严格按"参数个数"算, 有 32 个、加上 共 48 个。本文统一改称"输入自由度"或"像的内在维数"以避免歧义。
- "超平面" 在 维空间中指余维 1 的仿射子空间(维数 )。严格说 是过原点的超平面, 是不过原点的仿射超平面。日常混用无碍,但讨论"是否过原点"时不能含糊。
附录 C 下一步:用秩把"维数最多是 2"讲严格
本文反复用到一句"像的维数最多是 2",直觉上够了,严格证明只差一个概念:
- 是 矩阵,它的像就是列空间,维数等于秩。
- 秩不超过列数 ,所以二维输入永远只能张出至多二维的像,与 无关。
- 秩-零化度定理进一步给出:,于是"压缩掉的自由度"也有了定量说法。
再往前一步,就是基与维数:为什么 的维数是 3、为什么换基后矩阵变而映射不变()。这三件事接上,本文所有"维数"的说法都能落到定理上。
整理自关于"二维输入 → 高维隐藏层 → ReLU → 分类边界"以及"一维输入映到二维"的讨论。保留原有推导链条与例子,统一了编号、术语与公式排版;补充了结论速览、全流程速查、符号表、6.3 的数值验算,以及"折点 ≠ 边界点"这一容易被忽略的区分。