深度学习:从感知机到多层感知机
在深度学习的世界里,感知机是当之无愧的 “奠基者”。它由美国学者 Frank Rosenblatt 在 1957 年提出,是构建复杂神经网络的基础。
一、感知机:深度学习的 “基石”
(一)感知机的核心构成与原理
感知机的核心在于输入、权重、偏差和输出之间的逻辑关系。假设输入为x,控制输入信号重要性的参数是权重w,调整神经元激活难易程度的是偏差b,那么感知机的输出规则很明确:当\(b + w_1x_1 + w_2x_2 \leq 0\)时,输出 0;当\(b + w_1x_1 + w_2x_2 > 0\)时,输出 1 。
从功上来说,感知机主要用于二分类任务,输出结果只有 0 或 1。这和回归任务(输出实数)、Softmax(输出概率,用于多分类)有明显区别。
(二)感知机的实际应用:逻辑电路
感知机在简单逻辑电路中有着直观的应用,像与门、与非门和或门,都能通过设置合适的权重和偏差来实现。
- 与门:它的逻辑是只有当两个输入都为 1 时,输出才为 1。比如当权重\(w_1 = 0.5\)、\(w_2 = 0.5\),偏差\(b = -0.7\)时,就能满足与门的真值表。除此之外,(0.5, 0.5, -0.8)、(1.0, 1.0, -1.0)等参数组合也能实现与门功能。
- 与非门:和与门逻辑相反,只要有一个输入为 0,输出就为 1;两个输入都为 1 时,输出为 0。当权重\(w_1 = -0.5\)、\(w_2 = -0.5\),偏差\(b = 0.7\)时,可实现与非门功能。
- 或门:只要有一个输入为 1,输出就为 1。当权重\(w_1 = 0.5\)、\(w_2 = 0.5\),偏差\(b = -0.3\)时,符合或门的逻辑要求。
(三)感知机的 “短板”:线性不可分问题
然而,感知机并非万能。在异或门的实现上,它就遇到了难题。异或门的逻辑是两个输入相同(都为 0 或都为 1)时输出 0,输入不同时输出 1。无论怎么调整权重和偏差,都无法用感知机实现异或门功能。
这背后的原因就是感知机的局限性 —— 它只能表示由一条直线分割的空间,对于异或门这种线性不可分的情况无能为力。
二、多层感知机:突破感知机局限的 “升级款”
为了解决感知机线性不可分的问题,多层感知机应运而生,它也是最简单的深度神经网络。
(一)多层感知机的结构
多层感知机在输入层和输出层之间增加了隐藏层。隐藏层的大小是超参数,需要根据具体任务来调整。以单隐藏层的多层感知机为例,输入层接收数据,隐藏层对数据进行非线性变换,输出层给出最终的预测结果。
如果要处理多分类任务,还可以构建多个隐藏层的多层感知机,通过增加网络的深度和复杂度,提升模型对复杂数据的拟合能力。
(二)激活函数:多层感知机的 “灵魂”
激活函数在多层感知机中起着至关重要的作用,它能将输入信号的总和转换为输出信号,决定如何激活输入信号。一个优秀的激活函数需要具备以下性质:
- 是连续且可导(允许少数点不可导)的非线性函数,这样才能让多层感知机处理非线性问题。
- 激活函数及其导函数要尽可能简单,以提高网络的计算效率。
- 激活函数导函数的值域要在合适区间内,避免影响训练效率和稳定性。
常见的激活函数有:
- 阶跃函数:以 0 为界,输入超过 0 输出 1,否则输出 0。感知机就是使用阶跃函数作为激活函数,但它的非线性能力较弱,在多层感知机中应用较少。
- tanh 激活函数(双曲正切):能将输入映射到 (-1, 1) 区间,相比阶跃函数,非线性表现更好。
- ReLU 函数(线性修正函数):在输入大于 0 时,输出等于输入;输入小于等于 0 时,输出 0。它计算简单,在深度学习中应用广泛。
三、神经网络的学习过程与评估
(一)学习的本质与参数更新
神经网络的学习过程,就是在外界输入样本的刺激下,不断调整网络的连接权值乃至拓扑结构,使网络输出接近期望输出。而学习的本质,其实就是对可变权值的动态调整。
参数更新主要依靠前向传播和反向传播:
- 前向传播:输入样本从输入层进入,经过各隐藏层的处理,最终到达输出层,得到预测结果。
- 反向传播(误差反传):根据输出层的预测误差,从输出层反向传播到各隐藏层,计算神经网络参数的梯度,然后根据梯度修正各层单元的权值,以降低误差。
(二)误差与数据集:评估模型的关键
在评估模型性能时,我们会用到训练误差和泛化误差:
- 训练误差:模型在训练数据集上的误差,就像学生在平时练习卷上的成绩。
- 泛化误差:模型在新数据集上的误差,类似于学生在期末考试中的成绩。只关注训练误差是不够的,比如有的学生死记硬背练习卷答案,虽然练习卷成绩好(训练误差低),但期末考试成绩可能不理想(泛化误差高)。
为了准确计算这两种误差,我们会将数据集分为训练数据集、验证数据集和测试数据集:
- 验证数据集:用于评估模型好坏,一般从训练数据中划分出一部分(如 50%),且不能与训练数据集混淆。
- 测试数据集:用于评估最终模型的性能,理论上只能使用一次,就像高考一样,是对学习成果的最终检验。
当数据量不足时,K - 折交叉验证是个很好的选择。它将训练数据划分为 K 个部分,然后依次用每个部分作为验证集,其余部分作为训练集进行训练和验证,最后取 K 次验证的平均误差作为评估结果。常见的 K 值为 5 或 10。
(三)模型训练的 “拦路虎”:过拟合与欠拟合
模型复杂度和数据复杂度都会对过拟合和欠拟合产生影响:
- 模型复杂度:随着模型复杂度的增加,训练误差会不断降低,但泛化误差会先降低后升高。当模型复杂度过低时,容易出现欠拟合;复杂度过高时,则容易过拟合。在给定算法族的情况下,参数个数和每个参数值的选择范围是影响模型复杂度的重要因素。
- 数据复杂度:样本数量、每个样本的特征数量、数据的时间和空间结构以及多样性等,都会影响数据复杂度。数据越复杂,对模型的要求也越高,若模型无法匹配数据复杂度,就可能出现欠拟合;反之,若数据量过少,模型过于复杂,就容易过拟合。
四、总结
多层感知机通过引入隐藏层和激活函数,突破了感知机线性不可分的局限,成为处理复杂非线性问题的重要工具。在实际应用中,我们需要根据任务特点选择合适的激活函数,合理划分数据集,关注模型的过拟合和欠拟合问题,通过调整超参数(如隐藏层数、各隐藏层大小)等方式,不断优化模型性能。
更多推荐


所有评论(0)