CONCEPT / neural-networks
感知机与多层感知机:从线性边界到可学习的非线性
从线性阈值分类器、误分类更新与可分性出发,推导多层感知机的前向传播、张量形状、参数数量和表达能力边界。
本页目标
- 从权重、偏置和阈值规则解释感知机的线性决策边界。
- 推导误分类更新,并说明线性不可分数据为何阻止感知机收敛。
- 计算多层感知机各层形状、参数数量与一次前向传播。
- 区分通用逼近的存在性结论与有限数据上的可训练性、泛化性。
本页目录
学习目标
感知机把输入投影到一个标量,再用符号决定类别;多层感知机则交替使用仿射变换与非线性激活,逐层构造新的表示。完成学习后,应能手算一次感知机更新和一次小型网络前向传播,能用形状检查参数布局,并能说明“网络可以表示某函数”与“训练算法会找到该函数”之间的差别。
先修知识与记号
设输入为 ,二分类标签取 。需要掌握向量内积、矩阵乘向量、监督学习中的训练样本与损失函数。权重 与输入同维,偏置 是标量。把常数分量 追加到输入后,也可把偏置并入扩展权重;正文保留 ,便于区分特征贡献与整体平移。
神经网络中的“层数”有多种计数习惯。这里把含可学习权重的仿射映射称为一层,输入本身不计层;隐藏层位于输入与输出之间。讨论具体架构时会同时写出每个矩阵形状,避免只凭“二层网络”猜测结构。
感知机的判别规则
感知机先计算得分
再输出
方程 定义一个超平面。权重向量垂直于该平面,偏置控制平面沿法向移动。把 同时乘以正数不会改变分类结果,却会改变得分数值,因此未校准的得分不能直接解释为概率。
点到决策超平面的有符号距离为
标签乘上得分得到函数间隔 。它为正表示分类正确,为负表示分类错误,等于零表示样本落在边界上。距离与间隔刻画的是当前线性规则,不提供类别生成机制的因果说明。
误分类更新从何而来
对样本 ,若 ,感知机执行
其中 是步长。更新后,该样本的带标签得分增加
推导只需把新参数代回得分,并利用 。因此每次更新都会把当前误分类样本推向正确一侧,但也可能改变其他样本的得分。算法依次修正局部错误,没有保证每次更新都减少全体样本的误分类数。
在线性可分且输入范数有界的条件下,感知机收敛定理给出有限错误次数。把偏置并入扩展向量,若存在单位分隔向量使所有样本间隔至少为 ,且扩展输入范数不超过 ,经典证明可得到错误次数上界 。证明比较两件事:权重沿正确分隔方向的投影至少线性增长,而权重范数至多按错误次数的平方根增长。数据不可分时,前提失效,算法可能循环。
例题一:完成一次感知机更新
设当前参数 、,样本 、,步长 。当前得分为 ,预测为正类,与标签不符。带标签得分是 ,触发更新:
新得分为 ,新预测为负类。带标签得分从 增至 ,增量 ;公式给出的增量是 ,两种计算一致。这个核对只确认当前样本,不代表其他训练点仍保持正确。
线性不可分的反例
把 、 标为正类,把 、 标为负类。若存在得分 严格分开四点,两个正类不等式相加得到 ,所以 ;两个负类不等式相加得到 ,所以 。矛盾说明任何单个线性边界都无法完成该任务。
增加训练轮数或改变样本顺序不能消除表示能力缺口。感知机会在若干参数之间继续更新,而不会得到同时正确的边界。解决方法可以是构造非线性特征,也可以引入含非线性激活的隐藏层。
从单个单元到多层感知机
一个含单隐藏层的多层感知机可写成
若输入维数为 、隐藏宽度为 、输出维数为 ,则 、 、 、 。参数总数为 。批量输入常写成矩阵,采用“样本在行”约定时公式会转置;只要从输入轴语义推导,任一一致约定都可使用。
激活函数必须引入非线性。若 是恒等映射,两层复合为
仍然只是一次仿射变换。堆叠再多线性层也不会产生弯曲决策边界。非线性激活让不同隐藏单元划分输入空间,再由后续层组合这些局部响应。
例题二:手算一个二—二—一网络
取输入 ,隐藏层参数
于是 。使用 后,隐藏表示仍为 。输出权重取 、,得到 logit
若二分类概率采用 sigmoid,则正类概率约为 。隐藏层第二个单元虽然输出更大,却因输出权重为负而降低最终 logit;激活大小不能脱离后续权重直接解释为“支持正类”。参数数量为 。
表达能力与通用逼近的边界
通用逼近定理在特定激活、紧致定义域和足够隐藏单元等条件下,说明单隐藏层网络可以把连续函数逼近到任意给定精度。它是一条存在性结论,没有给出所需宽度的实用上界,也没有保证梯度算法能从随机初值找到相应参数。有限数据上得到低训练误差,还需通过独立数据评估泛化。
深度可以复用中间结构。某些函数用深层网络能以较少单元组合层级特征,而浅层表示可能需要很宽;这种优势依赖函数族与允许的误差。反方向也成立:增加深度会引入更多优化路径、数值尺度和调参问题。模型容量、训练可行性、计算预算与数据量应分别分析。
输出层还要匹配任务。二分类常用一个 logit 配合 sigmoid 与二元交叉熵,多分类常用多个 logits 配合 softmax 与交叉熵,回归常用线性输出并选择与噪声假设相称的损失。把隐藏层激活机械复制到输出层,可能限制预测范围或造成不合适的概率解释。
交互实验:观察决策边界
实验前先预测:单个线性边界能否分开交错的两类点;隐藏宽度从二增至八时,边界复杂度是否必然单调增加;固定种子与训练轮数后,tanh、sigmoid、ReLU 是否得到相同轨迹。记录预测,再启动训练。
神经网络决策边界
正在加载交互实验…
按以下顺序操作:
- 固定数据与种子,只改变隐藏宽度,比较训练结果和边界弯曲程度。
- 固定宽度,切换三种激活函数,记录损失、错误样本与局部边界变化。
- 逐步改变学习率和训练轮数,区分模型表达不足与优化尚未完成。
- 重置并复用相同 URL 状态,确认参数、种子和数据一致时结果可复现。
画面展示的是有限样本和一次确定性训练配置。边界较复杂不代表泛化更好,训练点全部正确也不能证明模型恢复了真实分布。应同时查看数据覆盖、独立验证误差与多种种子结果。
常见误解
更宽网络拥有更大的参数空间,但测试误差还受数据量、目标噪声、正则化和优化影响。宽度增加可以降低训练误差,也可能提高方差或浪费计算;需要在固定评估协议下比较。
网络表示通常分布在多个单元与层之间。单元的高激活只描述给定参数下的局部数值,经过基变换或重参数化后,功能相近的网络可以拥有不同单元解释。
硬阈值只给类别。概率需要额外的链接函数、损失及统计解释,并通过校准检验确认数值是否与频率相符。把任意正得分称为百分之百置信会混淆分数与概率。
代码:带形状检查的前向传播
type Matrix = readonly (readonly number[])[];
export function forwardMlp(
input: readonly number[],
hiddenWeights: Matrix,
hiddenBias: readonly number[],
outputWeights: readonly number[],
outputBias: number,
): number {
if (hiddenWeights.length !== hiddenBias.length || hiddenWeights.length !== outputWeights.length) {
throw new Error("Hidden width is inconsistent.");
}
const hidden = hiddenWeights.map((row, index) => {
if (row.length !== input.length) throw new Error("Input dimension is inconsistent.");
const preactivation = row.reduce(
(sum, weight, column) => sum + weight * input[column],
hiddenBias[index],
);
return Math.max(0, preactivation);
});
return hidden.reduce((sum, value, index) => sum + value * outputWeights[index], outputBias);
}
该函数只返回单个 logit,并明确检查输入维数和隐藏宽度。生产训练还要处理批次、数据类型、数值稳定性、随机种子与设备并行;这些责任不能由一个未校验的嵌套数组隐式承担。
练习
设感知机参数为 、,步长为一。依次读取样本 、,边界点按负类预测。写出每次预测和更新后的参数。
查看解答
第一个样本得分为零,预测负类且分类错误,更新得 、。第二个样本得分为 ,预测正类且分类错误,更新得 、。样本顺序改变时中间轨迹可能不同。
输入维数为 ,两个隐藏层宽度分别为 和 ,输出维数为 。每层都有偏置。计算网络的可学习参数总数,并写出三个权重矩阵的形状。
查看解答
权重形状依次为 、、。参数数目为 。偏置分别有 个分量。
某 MLP 的训练损失接近零,验证损失明显更高。分别从表示、优化和统计评估三个层面说明可以得出什么,以及还不能得出什么。
查看解答
低训练损失表明当前网络和优化过程能拟合训练集,因而训练集上的表示或优化并非主要瓶颈。验证差距提示泛化问题、分布差异或数据流程异常,但不能单凭差距确定原因。应检查切分与泄漏,比较正则化、容量和多种种子,并在独立测试集上作最终评估。
与其他概念的关系
- 线性变换 给出每个仿射层的矩阵结构和形状规则。
- 激活函数 引入逐元素非线性,并决定局部梯度和输出范围。
- 损失函数 把预测与目标的差异转换为可优化标量。
- 反向传播 高效计算损失对各层参数的梯度。
- 过拟合与泛化 区分训练拟合、模型容量和未知数据表现。
- Transformer 在注意力子层之间使用位置前馈 MLP。
延伸阅读
Deep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville
适合作为反向传播和优化章节的完整参考。
打开官方来源《Deep Learning》系统讨论前馈网络、表示能力、损失、反向传播和正则化,可用于继续推导多层网络训练。阅读通用逼近内容时,应保留定理的激活函数、定义域和误差度量条件。
Attention Is All You Need
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
阅读注意力机制文章时用于核对原始模型定义和实验边界。
打开官方来源《Attention Is All You Need》在 Transformer 每层中使用位置前馈网络,为 MLP 在现代序列模型中的作用提供具体实例。该论文的核心贡献是注意力架构,不能替代感知机收敛定理或一般前馈网络理论教材。
后续学习
先阅读 激活函数,比较不同非线性对表达范围和梯度传播的影响;随后阅读 反向传播,把一次前向计算转化为所有参数的梯度。训练结果出现明显验证差距时,再进入 过拟合与泛化。