从感知机到多层感知机:深度学习入门核心知识梳理
一、感知机:深度学习的 “单细胞” 基础
感知机由美国学者 Frank Rosenblatt 在 1957 年提出,它是模拟生物神经元工作模式的简单计算单元,也是神经网络的基本构成模块。
从输入到输出,感知机的逻辑很清晰:给定输入信号x、控制输入重要性的权重w,以及调整神经元激活难度的偏置b,它会先计算b + w₁x₁ + w₂x₂(多输入时为各权重与对应输入的乘积和),再通过激活函数输出结果 —— 本质上是一个二分类模型,输出仅为 0 或 1(当计算结果≤0 时输出 0,>0 时输出 1)。
这种简单结构让感知机能够实现基础的逻辑电路。比如 “与门”,只要设置合适的权重和偏置(如w₁=0.5、w₂=0.5、b=-0.7),就能满足 “仅当 x₁和 x₂都为 1 时输出 1,否则输出 0” 的逻辑;“与非门” 只需将权重改为负数(如w₁=-0.5、w₂=-0.5、b=0.7),就能反转 “与门” 的输出;“或门” 则通过调整偏置(如w₁=0.5、w₂=0.5、b=-0.3),实现 “只要有一个输入为 1,输出就为 1” 的效果。
但感知机有个致命局限:它只能表示 “线性可分” 的空间,也就是能用一条直线把两类数据分割开的场景。最典型的反例是 “异或门”—— 当 x₁和 x₂不同时输出 1,相同时输出 0,这种逻辑无法用直线分割,感知机根本无法实现。这一局限也让早期神经网络的发展陷入了瓶颈,直到 “多层感知机” 的出现才得以突破。
二、多层感知机:突破线性局限的 “简易深度模型”
为了解决感知机线性不可分的问题,多层感知机(MLP)应运而生。它的核心思路很简单:在输入层和输出层之间加入 “隐藏层”,让信号通过多层神经元的非线性转换,从而拟合复杂的非线性关系。
1. 多层感知机的结构:从 “单链” 到 “多层网络”
传统感知机只有 “输入层 - 输出层” 两层结构,而多层感知机至少包含三层:输入层(接收原始数据)、隐藏层(对输入进行非线性转换)、输出层(输出最终结果)。隐藏层可以有一层或多层,每层包含多个神经元,这些神经元的数量(即 “隐藏层大小”)和隐藏层的总数量,都是需要根据任务调整的 “超参数”。
比如单隐藏层的多层感知机,输入层接收x₁、x₂、x₃、x₄等原始特征,隐藏层的h₁、h₂、h₃等神经元会先对输入进行加权计算和激活,再将结果传递到输出层的o₁、o₂、o₃,最终得到分类或回归结果。如果是多分类任务,还会在输出层加入 Softmax 函数,将输出转换为各类别的概率(这一点和感知机的二分类输出不同)。
2. 激活函数:赋予模型 “非线性能力” 的关键
多层感知机能处理非线性问题,核心在于 “激活函数”。激活函数的作用是将神经元输入信号的总和,转换为非线性的输出信号 —— 没有激活函数,多层感知机就会退化成感知机(多层线性转换的叠加依然是线性转换)。
一个优秀的激活函数需要满足三个条件:连续可导(允许少数点不可导)、计算简单(提升模型效率)、导数值域合适(避免训练不稳定)。常见的激活函数有三类:
- 阶跃函数:感知机最初使用的激活函数,以 0 为界,输入>0 输出 1,否则输出 0。但它不连续、不可导,无法支持多层感知机的梯度下降训练,现在已很少用。
- tanh 函数(双曲正切):能将输入映射到 (-1,1) 区间,输出具有对称性,比早期的 Sigmoid 函数更易训练,但在输入绝对值较大时容易出现 “梯度消失”。
- ReLU 函数(线性修正单元):当前最常用的激活函数之一,输入>0 时直接输出输入值,≤0 时输出 0。它计算简单、梯度稳定,能有效缓解梯度消失问题,是很多深度学习模型的首选。
三、多层感知机的训练:从 “误差反向” 到 “参数优化”
多层感知机的学习过程,本质是通过 “正向传播” 计算输出、“反向传播” 修正参数,最终让模型输出接近期望结果的过程。
1. 正向传播与反向传播:模型训练的 “正反循环”
- 正向传播:信号从输入层流入,经过隐藏层的加权计算和激活函数转换,最终到达输出层,得到模型的预测结果。这个过程是 “从数据到预测” 的正向流程。
- 反向传播:根据输出层的预测误差(比如预测值与真实值的差距),从输出层向隐藏层、输入层反向推导,计算每个权重和偏置对误差的贡献(即梯度),再通过梯度下降等算法调整参数 —— 这是 “从误差到优化” 的反向流程。
通过 “正向传播算误差、反向传播调参数” 的循环,模型的参数会逐渐优化,预测精度也会不断提升。
2. 训练误差与泛化误差:避免 “纸上谈兵”
训练模型时,我们需要关注两个误差:
- 训练误差:模型在训练数据集上的误差,相当于学生在 “模拟题” 上的成绩。
- 泛化误差:模型在新的、未见过的数据上的误差,相当于学生在 “高考” 上的成绩。
只关注训练误差会导致 “死记硬背”—— 比如学生 A 靠死记模拟题答案取得高分,但换了新题就会出错。为了准确评估泛化误差,我们需要将数据分成三类:
- 训练数据集:用于调整模型参数的核心数据。
- 验证数据集:用于评估模型好坏、调整超参数的数据(比如从训练数据中拆分出 50%),不能与训练数据混用。
- 测试数据集:仅用于评估最终模型性能的 “一次性数据”,就像高考题,只能用一次,避免模型 “提前见过题”。
如果数据量不足,还可以用 “K - 折交叉验证”:将训练数据分成 K 份(常用 K=5 或 10),每次用 1 份当验证集、其余当训练集,重复 K 次后取平均误差,这样能更充分地利用数据评估模型。
四、模型优化的常见问题:欠拟合与过拟合
训练多层感知机时,最容易遇到两个问题:欠拟合和过拟合。
1. 欠拟合:模型 “没学会”
欠拟合是指模型对训练数据的 “一般规律” 尚未学好,比如用简单模型去拟合复杂数据 —— 就像学生 B 连模拟题的基本思路都没掌握,不管是模拟题还是新题,正确率都很低。欠拟合的表现是训练误差和泛化误差都很高,通常是因为模型复杂度太低(比如隐藏层太少、神经元太少),无法捕捉数据的规律。
2. 过拟合:模型 “学太死”
过拟合则是模型把训练数据的 “个性” 当成了 “共性”—— 比如学生 A 死记硬背模拟题的细节(如 “树叶必须有锯齿”),在模拟题上正确率很高,但遇到没有锯齿的树叶就会判断错误。过拟合的表现是训练误差很低,但泛化误差很高,通常是因为模型复杂度太高(隐藏层太多、神经元太多),或者训练数据太少、多样性不足。
3. 缓解过拟合的方法
常用的缓解过拟合的方法有两种:
- 权重衰减:在损失函数中加入权重的平方项,让权重尽量小,避免某些权重过大导致模型 “过度依赖某一特征”。
- 暂退法(丢弃法):训练时随机 “关闭” 一部分神经元,让模型不会过度依赖某几个神经元的输出,增强模型的泛化能力。
五、影响模型性能的关键因素:复杂度与数据
模型的性能好不好,不仅取决于模型本身,还与数据质量密切相关。
1. 模型复杂度:不是 “越复杂越好”
模型复杂度主要由两个因素决定:
- 参数个数:参数越多,模型越复杂(比如隐藏层神经元越多、层数越多,参数就越多)。
- 参数选择范围:参数可调整的范围越大,模型的拟合能力也越强,但也越容易过拟合。
模型复杂度需要与任务匹配:简单任务用复杂模型会过拟合,复杂任务用简单模型会欠拟合,只有 “恰到好处” 的复杂度才能让模型表现最好。
2. 数据复杂度:“数据决定上限”
数据的质量直接决定了模型的上限,影响数据复杂度的因素包括:
- 样本数量:样本越多,模型越能学习到数据的普遍规律,越不容易过拟合。
- 特征数量:特征越多,模型能利用的信息越多,但冗余特征也会增加模型负担。
- 多样性与结构:数据的时间、空间结构是否完整,样本是否覆盖各种场景,都会影响模型的泛化能力 —— 比如用单一场景的图片训练分类模型,遇到新场景的图片就会出错。
总结
从感知机的线性局限,到多层感知机通过隐藏层和激活函数实现非线性拟合,再到通过正向传播、反向传播优化参数,以及通过验证集、暂退法等解决过拟合问题 —— 多层感知机虽然是简单的深度学习模型,但它包含了深度学习的核心思想:用多层非线性转换拟合复杂规律,用数据驱动参数优化,用合理的评估方法保证泛化能力。
更多推荐



所有评论(0)