第17章:多层感知机——把神经元叠起来

前面两章我们做了两件事。第15章讲了怎么判断一个模型是真的学会了还是在背答案。第16章讲了怎么用梯度下降一步步地调参数。这两样东西------评估方法和优化方法------是所有机器学习模型都要用的。线性回归用它,逻辑回归用它,SVM也用它(虽然SVM的优化形式稍微特殊一点)。到了深度学习,它们更是核心。

现在要问的是:这些方法要往什么东西上套?

如果只用一个神经元------就像逻辑回归或感知机那样------你能解决XOR问题吗?不能。我们在第3章已经聊过了,那个单层感知机被XOR彻底难住了。

但如果堆两层呢?

这一章我们就看两件事。第一,两层神经元为什么能解决XOR。第二,这个"堆叠"的直觉,是怎么一路延伸到几百层的。

先回到那个难住所有人的问题

XOR逻辑是这样的。两个输入,每个可以是0或1。如果两个输入相同,输出0;如果不同,输出1。

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

把四个点画在坐标纸上:(0,0)输出0,(1,1)输出0;(0,1)输出1,(1,0)输出1。两类点在坐标平面上呈对角线分布------输出0的在左下和右上,输出1的在左上和右下。你画不出一条直线把它们切开。

一个单层感知机------或者一个逻辑回归------只能画一条直线。所以它搞不定。

那两层呢?

两层的意思是:你先有两个独立的线性分类器,每个都把输入空间切成两半。然后你再用一个线性分类器,把这两个切割结果组合起来。

在XOR这个例子里,你可以让第一个分类器关注"x₁是否大于0.5"------它把平面竖着切一刀,把左边的(0,0)和(0,1)归为一类,右边的(1,0)和(1,1)归为另一类。第二个分类器关注"x₂是否大于0.5"------它横着切一刀,把下面的(0,0)和(1,0)归为一类,上面的(0,1)和(1,1)归为另一类。

然后你让第三个分类器看前两个分类器的输出组合:只有当第一个分类器说"右边"且第二个分类器说"上面"------也就是(1,1)------或者第一个说"左边"且第二个说"下面"------也就是(0,0)------才输出0。其他情况输出1。

这就是多层感知机解决XOR的方式。第一层的两个神经元各自画一条直线。第二层的一个神经元把两条直线切割出来的区域重新组合。你最终得到的是一个非线性的决策边界------两条直线交叉形成一个菱形或十字形,刚好把对角线上的两类点分开。

关键是:你不需要手动设计这些切割。你只需要告诉网络"这是输入,这是正确的输出",然后让反向传播自己去学。它会在第一层里长出两个合适的线性分类器,然后在第二层学会怎么组合它们。

隐藏层的意义:从特征到特征

上面那个例子里的"第一层"在神经网络里有一个专门的名字------隐藏层

为什么叫"隐藏"?因为它的输出既不是原始的输入(你给了它什么),也不是最终的输出(你想要什么)。它在中间,你看不到它具体在做什么,但它做的事情是把原始数据"翻译"成更适合后续处理的中间表示。

在XOR例子里,隐藏层的两个神经元把原始的二维坐标------(x₁, x₂)------映射成了两个新特征:"是否在右边"和"是否在上方"。这两个新特征组合起来,就足以区分XOR的四类点。

你注意到这个过程的本质了吗?神经网络不是一步到位地画出最终的决策边界。它先在不同的空间里重新表达数据,让数据变得更"好分",然后再做最终分类。

一个深层网络,就是把这个"重新表达"的过程重复很多次。第一层从原始像素里找出边缘。第二层从边缘里组合出局部形状。第三层从局部形状里组合出部件。最后一层从部件里判断"是猫还是狗"。

每一层都在做同一件事------把上一层的输出作为输入,变换成更抽象、更有利于当前任务的表示。

深度为什么有用

你可能已经想到了:如果一层隐藏层就能解决XOR,那为什么我们需要很多层?

答案是:层数越多,你需要的"手工设计"就越少。

单层隐藏层足够解决任意复杂的问题------理论上,一个足够宽的隐藏层可以逼近任何函数。这是"万能逼近定理"在说的东西。但"理论上"有一个代价:你需要极其宽的一层。一个两层网络如果想学会识别一张高清图片里的猫,它的隐藏层可能需要几百万个神经元------参数数量大到无法训练,而且会极度过拟合。

而深层网络用"窄而深"替代了"宽而浅"。它不试图在一个巨大的层里做所有的变换,而是把变换拆分成一系列小的、渐进的步骤。每一层只做一点点变化------把某些特征稍微突出,把另外一些特征稍微压制。经过几十层之后,一个像素点被逐步扭曲成"猫"的判断。

这个"渐进扭曲"有一个直观的比喻:雕一块木头。你不会一斧头把木头劈成雕像。你从大块开始,先砍出轮廓;再换小刀,削出细节;再换更细的刀,雕出眼睛和眉毛。每层神经元在做类似的粗加工到细加工。

深层网络之所以在2010年代之后爆发,就是因为人们发现:层数堆得越深,模型在图像、语音、文字这些复杂数据上的表现就越好------而且层数增加带来的收益,远远大于它带来的过拟合风险(只要你有足够的数据和合适的正则化)。

前向传播:数据是怎么流过去的

现在我们知道了一个多层网络的结构。但数据是怎么从输入流到输出的?

这个过程叫前向传播

输入向量进入第一层。每个神经元把输入的每个分量乘上对应的权重,求和,加上偏置,再通过一个激活函数(下章专门讲)------得到第一个隐藏层的输出向量。这个向量作为第二层的输入,重复同样的操作。一直传到最后一层,得到最终输出。

每一层的操作公式完全一样:

h^{(l)} = f( W^{(l)} · h^{(l-1)} + b^{(l)} )

其中 h^{(l-1)} 是上一层的输出,W 是这一层的权重矩阵,b 是偏置向量,f 是激活函数。

你看到了吗?这个公式跟线性回归一模一样------线性变换(W·x + b),再加一个非线性(f)。唯一的区别是:这个操作被重复了很多次。每一次的输出都成了下一次的输入。

这就是为什么"矩阵乘法"在深度学习里这么重要。每一层的前向传播就是一次大矩阵乘法。一个深度网络就是一连串的矩阵乘法交替着非线性激活。

还缺一块拼图

我们已经把多层网络的结构讲清楚了。输入→隐藏层→激活→隐藏层→激活......→输出。

但你注意到没有,我们还漏了一个关键问题:最后一层输出的是什么?如果是分类任务,输出应该是一个概率分布,而不是一个任意数字。如果是回归任务,输出应该是一个连续值。

这个"输出层怎么设计"的问题,跟"损失函数怎么选"的问题紧密相关。分类用交叉熵损失,所以输出层要用Softmax把它变成概率。回归用均方误差损失,所以输出层直接输出线性的计算结果。

下一章,我们专门聊激活函数------正是它把"一连串矩阵乘法"变成了"非线性变换"。没有它,堆叠一百层也等于一层。再下一章,我们聊损失函数------分类用交叉熵,回归用MSE,它们为什么匹配、怎么起作用。

两层就能解决XOR,几十层就能认出一只猫。从XOR到猫,中间只差一件事:你知道怎么把网络搭得更深,并且知道每一层该用什么方式激活、最终用什么方式输出。

参考文献

  1. Nielsen, M. (2015). Neural Networks and Deep Learning. 第1章"Using neural nets to recognize handwritten digits"。在线免费书籍:http://neuralnetworksanddeeplearning.com/

    • 推荐理由:Nielsen在第1章里用识别手写数字的完整例子,展示了从输入层到隐藏层到输出层的完整前向传播过程。他把"层"的概念拆解得极其清楚------每一层的权重矩阵、偏置向量、激活函数、输出形状,都配有直观的图示。读完这一章,你会对"数据是怎么流过去的"有一个完整的画面。
  2. 3Blue1Brown. (2017). "But what is a neural network? | Chapter 1, Deep Learning". YouTube.

    • 推荐理由:这期视频用手写数字识别作为载体,从头开始搭建了一个两层神经网络。它用极慢的速度展示了输入像素如何通过第一层权重矩阵变成隐藏层的激活值,再通过第二层权重矩阵变成输出层的概率。配合本篇的"XOR两层"文字描述,视频里的"手写数字两层"会给你一个更具体的参照物。
  3. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. 第6章"Feedforward Deep Networks"。

    • 推荐理由:第6章是深度学习教材里对"前馈网络"最系统的介绍------从"为什么需要隐藏层"开始,到"隐藏层能学习什么表示",到"万能逼近定理"的直觉证明。虽然偏数学,但开篇几节的文字解释非常清晰,适合在读完本篇后作为概念对照。
相关推荐
KaMeidebaby12 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
tmlx3I08113 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
硅谷秋水13 小时前
World Engine:迈向自动驾驶的后训练时代
人工智能·深度学习·机器学习·计算机视觉·语言模型·自动驾驶
一个王同学16 小时前
从零到一 | CV转多模态大模型 | week17 | LLM 推理优化 & vLLM 详解
人工智能·深度学习·算法·机器学习·计算机视觉·vllm
三品吉他手会点灯17 小时前
嵌入式机器学习 - 学习笔记1.1.1 - 什么是机器学习?
c语言·人工智能·笔记·嵌入式硬件·学习·机器学习
逻辑君19 小时前
认知神经科学研究报告【20260111】
人工智能·深度学习·机器学习·量子计算
硅谷秋水21 小时前
OMNIDRIVE:一种由LLM协同的多智体世界模型,采用统一潜协压缩技术,用于多视角驾驶视频生成
人工智能·深度学习·机器学习·语言模型·自动驾驶·音视频
想会飞的蒲公英1 天前
回归模型怎样评估:MAE、MSE、RMSE 和 R²
人工智能·python·机器学习·数据分析·回归
阳明山水1 天前
从论文到生产:销量预测系统的工程化落地实践
大数据·人工智能·深度学习·机器学习·架构