在深度学习的发展历程中,感知机是当之无愧的 “奠基者”。1957 年,美国学者 Frank Rosenblatt 提出的感知机,为后续复杂神经网络的诞生埋下了种子。然而,感知机并非完美,它的局限性曾让 AI 发展陷入瓶颈,而多层感知机的出现,则打破了这一困境,开启了深度学习的新篇章。今天,我们就从感知机的基础原理出发,一步步揭开多层感知机的神秘面纱,带你掌握深度学习入门的核心知识。

一、感知机:深度学习的 “启蒙老师”

1.1 感知机的核心原理

感知机本质上是一个简单的线性分类模型,它通过接收输入信号,结合权重和偏差进行计算,最终输出分类结果。其核心公式如下:

其中:

x1,x2 是输入信号,代表模型的输入特征;

w1,w2 是权重参数,用于控制对应输入信号的重要性 —— 权重越大,说明该输入对输出结果的影响越显著;

b 是偏差参数,用于调整神经元被激活的容易程度 —— 偏差越大,神经元越容易输出 1。

感知机的输出结果只有 0 和 1,属于二分类模型,这与回归模型(输出实数)、Softmax 模型(输出概率,用于多分类)有明显区别。

1.2 感知机的经典应用:逻辑电路实现

感知机的一大优势是能直观地实现简单逻辑电路,通过调整权重和偏差,我们可以轻松构建与门、与非门和或门。

1.3 感知机的 “致命缺陷”:线性不可分问题

虽然感知机能实现与门、与非门、或门,但当遇到异或门时,它却 “束手无策”。

什么感知机无法实现异或门?这就要提到感知机的核心局限性 ——只能表示由一条直线分割的空间,即只能处理线性可分问题。而异或门的样本分布,无法用一条直线将输出为 0 和 1 的样本完全分开,属于线性不可分问题。

例如,在平面直角坐标系中,将异或门的样本(x1​,x2​)作为坐标点绘制,输出为 1 的点是(1,0)和(0,1),输出为 0 的点是(0,0)和(1,1)。无论我们如何画直线,都无法让输出为 1 的点在直线一侧,输出为 0 的点在直线另一侧。这一局限性,让感知机在复杂问题面前显得 “力不从心”。

二、多层感知机:突破线性限制的 “利器”

为了解决感知机的线性不可分问题,科学家们提出了多层感知机(Multi-Layer Perceptron,MLP)。多层感知机通过引入隐藏层,将简单的线性模型组合成复杂的非线性模型,从而能够处理线性不可分问题。

2.1 多层感知机的结构:输入层、隐藏层、输出层

多层感知机的结构分为三层:输入层、隐藏层和输出层。

输入层:接收外部数据,每个神经元对应一个输入特征,例如处理二维数据时,输入层有 2 个神经元,分别对应 x1​ 和 x2​;

隐藏层:位于输入层和输出层之间,是多层感知机实现非线性变换的核心。隐藏层的神经元数量(即隐藏层大小)是超参数,需要根据具体问题调整;

输出层:输出模型的预测结果,根据任务类型(二分类、多分类、回归)确定神经元数量,例如二分类任务输出层有 1 个神经元,多分类任务输出层神经元数量等于类别数。

以单隐藏层的多层感知机为例,假设输入层有 2 个神经元(x1​,x2​),隐藏层有 4 个神经元(h1​,h2​,h3​,h4​),输出层有 1 个神经元(y)。输入层的信号会先传递到隐藏层,每个隐藏层神经元会根据输入信号、权重和偏差计算出中间结果,再通过激活函数进行非线性变换,最后将变换后的信号传递到输出层,输出层神经元计算后得到最终预测结果。

2.2 激活函数:赋予模型非线性能力的 “魔法”

多层感知机之所以能处理非线性问题,关键在于激活函数。激活函数的作用是将神经元输入信号的总和转换为输出信号,为模型引入非线性特性。如果没有激活函数,多层感知机就会退化为感知机,无法处理线性不可分问题。

一个优秀的激活函数需要具备以下性质:

  1. 连续且可导(允许少数点不可导)的非线性函数,保证模型能通过梯度下降法进行训练;
  2. 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率;
  3. 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

常见的激活函数有以下几种:

阶跃函数
阶跃函数是最简单的激活函数,其公式为:感知机使用的就是阶跃函数,但阶跃函数在 x=0 处不可导,且输出只有 0 和 1,无法传递中间梯度信息,不利于多层模型的训练,因此在多层感知机中很少使用。
S型(sigmoid)激活函数(挤压函数)

Sigmoid 函数的公式为,它能将输入信号映射到(0,1)区间。Sigmoid 函数连续可导,解决了阶跃函数不可导的问题,在早期的神经网络中应用广泛。但 Sigmoid 函数存在梯度消失问题 —— 当输入值过大或过小时,函数的导数趋近于 0,导致模型深层的梯度无法有效传递,影响训练效果。

Tanh 函数(双曲正切函数)

Tanh 函数的公式为 ,它能将输入信号映射到(-1,1)区间。与 Sigmoid 函数相比,Tanh 函数的输出以 0 为中心,缓解了梯度消失问题,但在输入值过大或过小时,仍会出现梯度消失现象。

ReLU 函数(线性修正单元)

ReLU 函数的公式为 ,ReLU 函数是目前深度学习中应用最广泛的激活函数之一,尤其在卷积神经网络(CNN)和循环神经网络(RNN)中表现优异。

超参数

隐藏层数量,多少层隐藏层

每层的隐藏单元数目,隐藏层神经元个数

三、多层感知机的训练:从 “试错” 到 “优化”

学习的过程: 神经网络在外界输入样本的刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断地接近期望的输出。

学习的本质: 对可变权值的动态调整

多层感知机的训练过程,本质上是通过调整权重和偏差,使模型的预测结果不断接近期望输出的过程。训练的核心步骤包括前向传播、反向传播和参数更新。

3.1 前向传播:从输入到输出的 “信号传递”

前向传播是指输入样本从输入层进入模型,经过隐藏层的非线性变换,最终到达输出层并得到预测结果的过程。在这个过程中,模型会根据当前的权重和偏差计算每一层的输出,具体步骤如下:

输入样本--输入层--各隐藏层--输出层

3.2 反向传播(误差反传):从误差到梯度的 “回溯计算”

反向传播是指根据模型的预测误差,从输出层反向计算每一层的梯度,为参数更新提供依据的过程。其核心思想是利用链式法则,将输出层的误差逐层传递到输入层,计算出每个权重和偏差对误差的贡献。具体步骤如下:输出层——各隐藏层——输入层

3.3 参数更新:梯度下降的 “优化迭代”

参数更新是指根据反向传播计算出的梯度,调整模型的权重和偏差,以减小损失函数的值。

四、模型评估与优化:避免 “过拟合” 与 “欠拟合”

训练好多层感知机后,我们需要对模型的性能进行评估,并采取措施优化模型,避免出现过拟合或欠拟合问题。

4.1 训练误差与泛化误差:模型性能的 “两面镜”

训练误差:模型在训练数据集上的误差,反映了模型对训练数据的拟合程度;

泛化误差:模型在新的、未见过的数据集(测试数据集)上的误差。

理想的模型应该同时具有较小的训练误差和泛化误差。如果训练误差很小,但泛化误差很大,说明模型出现了过拟合;如果训练误差和泛化误差都很大,说明模型出现了欠拟合。

4.2 过拟合与欠拟合的解决方法

欠拟合的解决方法

欠拟合是指模型对训练数据的拟合程度不足,无法捕捉到数据的潜在规律。解决欠拟合的方法主要有:

  1. 增加模型复杂度:增加隐藏层数量或隐藏层神经元数量,提高模型的表达能力;
  2. 延长训练时间:增加迭代次数,让模型有足够的时间学习训练数据的规律;
  3. 增加特征数量:补充更多与任务相关的特征,为模型提供更丰富的信息。
过拟合的解决方法

过拟合是指模型对训练数据的拟合程度过高,将训练数据中的噪声和偶然因素当作了普遍规律,导致泛化能力下降。解决过拟合的方法主要有:

  1. 权重衰减(L2 正则化):在损失函数中加入权重的平方项,惩罚过大的权重,使模型参数更加平缓,减少过拟合;
  2. 暂退法(丢弃法):在训练过程中随机丢弃部分隐藏层神经元,减少神经元之间的依赖关系,提高模型的泛化能力;
  3. 增加训练数据:通过数据增强(如图像翻转、裁剪、添加噪声)等方法增加训练数据的数量和多样性,让模型学习到更普遍的规律

五、总结:多层感知机的核心要点与应用前景

多层感知机作为最简单的深度神经网络,是深度学习入门的关键知识点。它通过引入隐藏层和激活函数,突破了感知机的线性限制,能够处理复杂的非线性问题。总结一下多层感知机的核心要点:

  1. 结构:由输入层、隐藏层和输出层组成,隐藏层数量和隐藏层大小是超参数;
  2. 激活函数:为模型引入非线性能力,常用的激活函数有 ReLU、Sigmoid、Tanh,其中 ReLU 函数因缓解梯度消失、计算简单等优点应用最广泛;
  3. 训练过程:包括前向传播(计算预测结果)、反向传播(计算梯度)和参数更新(调整权重和偏差),核心是梯度下降法。

多层感知机不仅是深度学习的基础,还在实际场景中有广泛的应用,如手写数字识别、垃圾邮件分类、房价预测等。掌握多层感知机的原理和训练方法,能为后续学习更复杂的神经网络(如卷积神经网络、循环神经网络、Transformer)打下坚实的基础。

深度学习的世界充满了挑战和机遇,而多层感知机就是我们探索这个世界的 “第一把钥匙”。希望通过本文的讲解,你能对多层感知机有更深入的理解,开启你的深度学习之旅!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐