学习神经网络时,很容易一上来就被“深度学习”“卷积”“反向传播”这些词吓住。但如果把它们放在同一条逻辑线上看,其实会清楚很多:

先用线性模型拟合数据,再用分类模型做决策,再用多层网络解决非线性问题,最后用卷积网络处理图像这类高维结构化数据。

这篇文章就按照这条路线,整理线性回归、线性分类、感知机、多层感知机、BP 算法和卷积神经网络的核心思想。

1. 线性回归:机器学习最朴素的起点

线性回归要解决的问题很直观:给定一些样本数据,找到输入和输出之间的定量关系。例如,根据房屋面积预测房价。课件中用房屋面积和销售价格作为例子,说明回归分析的目的就是确定变量之间的依赖关系。

假设输入为 x,输出为 y,我们希望找到一个函数:

y=hθ​(x)

最简单的情况下,它是一条直线:

y=kx+by=kx+b

如果输入有多个特征,例如房屋面积、年限、位置等,就可以扩展为:

y=hθ(x)=θTxy=hθ​(x)=θTx

也就是说,线性回归本质上是在找一个“最合适的超平面”,让它尽可能贴近所有训练样本。课件中把训练集、输入数据、输出数据、模型函数和样本数量这些概念作为线性回归的基本要素。

为了衡量“贴近程度”,通常构造平方误差损失函数:

J(θ)=12∑i=1N(y(i)−hθ(x(i)))2J(θ)=21​i=1∑N​(y(i)−hθ​(x(i)))2

目标就是找到让 J(θ)J(θ) 最小的参数 θθ。在线性回归中,如果维度不高,可以直接通过正规方程得到解析解:

θ=(XTX)−1XTyθ=(XTX)−1XTy

这一步非常漂亮,因为它告诉我们:学习问题可以转化为参数优化问题。 这也是后面神经网络训练的基本思想。


2. 线性分类:从“预测数值”到“做出判断”

线性回归输出的是一个具体数值,比如房价;而线性分类输出的是类别,比如“好苹果/坏苹果”“猫/狗”“0/1”。

线性分类器的输入是特征向量,输出可以是类别标签,也可以是属于某一类的概率。课件中特别强调了线性分类和线性回归的区别:输出意义不同,参数意义不同,维度也可能不同。

对于二分类问题,可以构造一个线性函数:

z=θTxz=θTx

然后通过一个函数把 zz 转换成类别或者概率。比如逻辑回归中常用 Sigmoid 函数:

σ(z)=11+e−zσ(z)=1+e−z1​

它能把任意实数压缩到 0∼10∼1 之间,于是可以解释为“属于某一类的概率”。

所以,从线性回归到线性分类,核心变化是:

线性回归直接拟合连续值;线性分类则用线性函数构造决策边界。


3. 感知机:神经元模型的第一次登场

感知机可以看作最简单的神经网络。它接收多个输入,对输入加权求和,然后通过一个激活函数输出结果:

y=f(wTx+b)y=f(wTx+b)

这里的 ww 是权值,bb 是偏置,ff 是激活函数。对于最早期的感知机,激活函数常常是阶跃函数:

f(z)={1,z≥00,z<0f(z)={1,0,​z≥0z<0​

它的作用很像一个“线性分类器”:如果样本在分界线的一侧,就输出 1;在另一侧,就输出 0。

课件最后总结到,线性回归和线性分类本质上都是参数优化问题;分类中引入 Sigmoid 函数后,通常需要通过迭代求解参数;而感知机可以自动迭代完成线性分类任务。

不过,单层感知机有一个很严重的问题:它只能解决线性可分问题。


4. XOR 问题:为什么必须要“多层”?

单层感知机的局限性可以通过 XOR 问题看出来。

XOR 的输入输出关系是:

x1x1​ x2x2​ yy
0 0 0
1 0 1
0 1 1
1 1 0

这个问题无法用一条直线把两类样本分开,因此它是典型的线性不可分问题。课件中也明确指出,XOR 问题说明单纯线性分类无法完成这类任务。

解决办法就是引入隐藏层

多层感知机在输入层和输出层之间加入一个或多个隐层。隐层可以先对输入空间做一次变换,把原本线性不可分的问题映射到新的特征空间中,再由输出层完成分类。课件中给出了三层网络解决 XOR 问题的结构:两个输入节点、若干隐节点和一个输出节点。

这背后的直觉很重要:

单层网络只能画一条线;多层网络可以组合多条线,形成更复杂的决策区域。

课件还给出更一般的结论:三层阈值节点网络在隐层节点可任意设置时,可以实现任意二值逻辑函数;三层 S 型非线性节点网络可以逼近紧集上的连续函数。

这就是后来所谓“神经网络具有强大函数逼近能力”的基础。


5. BP 算法:多层网络到底怎么训练?

多层网络虽然表达能力强,但问题来了:参数这么多,怎么调?

答案就是 BP 算法,也就是误差反向传播算法

BP 算法的核心流程可以概括为两步:

  1. 正向传播:输入信号从输入层经过隐层传到输出层,得到网络输出。

  2. 反向传播:计算输出误差,并沿着原来的连接路径反向传播误差,用梯度下降法调整权值和阈值。

课件中也正是这样描述 BP:已知输入/输出样本后,BP 学习算法由正向传播和反向传播组成;反向传播根据样本输出与网络输出之间的误差,沿连接通路反向计算,并通过梯度下降调整各层参数。

如果把网络第 ll 层的输入写成:

z[l]=W[l]a[l−1]z[l]=W[l]a[l−1]

输出写成:

a[l]=f(z[l])a[l]=f(z[l])

那么整个网络就是一连串函数复合:

x→a[1]→a[2]→⋯→y^x→a[1]→a[2]→⋯→y^​

训练目标是让预测输出 y^y^​ 尽量接近真实输出 yy。课件中使用平方误差作为目标函数:

J(x(i);w)=12(y(i)−y^(i)(x;w))2J(x(i);w)=21​(y(i)−y^​(i)(x;w))2

也就是说,网络训练仍然是一个优化问题。

梯度下降的思想是:

Δw=−αdJdwΔw=−αdwdJ​

其中 αα 是学习率。参数沿着损失函数下降最快的方向更新,从而逐步减小误差。课件中把 BP 的基本思想总结为:为了求解误差最小化问题,使用梯度下降法逐层调整权值。

所以,BP 算法真正解决的是:

如何高效计算多层复合函数中每个参数对最终误差的影响。

这也就是链式法则在神经网络中的大规模应用。


6. 为什么需要卷积神经网络?

如果用普通全连接网络处理图像,会遇到一个非常现实的问题:参数太多。

比如输入是一张 1000×10001000×1000 的图像,如果隐层有 106106 个节点,那么输入层到隐层之间的参数量可以达到 10121012 级别。课件中指出,全连接网络存在连接权过多、计算慢、难收敛、容易过拟合等问题。

解决办法是减少连接。

卷积神经网络的核心思想是:

每个神经元不再连接上一层的所有神经元,而只连接局部区域。

这就是局部连接。图像具有很强的局部结构,比如边缘、角点、纹理等特征通常只依赖附近像素。因此不需要一上来就把整张图所有像素完全连接起来。

进一步地,CNN 还引入了权值共享:同一个卷积核在整张图上滑动,用同一组参数提取相同类型的局部特征。这大大减少了参数量。


7. CNN 的基本结构:卷积层、池化层、全连接层

一个典型卷积神经网络通常由多个卷积层和下采样层构成,后面再连接全连接网络。课件中也总结了 CNN 的结构:卷积层包含多个滤波器,也称为通道;下采样层可以采用 mean 或 max;后面连接全连接网络。

7.1 卷积层

卷积层的作用是提取局部特征。每个卷积核就像一个特征检测器,比如检测边缘、纹理或者更复杂的局部模式。

如果输入是图像,卷积核在图像上滑动,得到一张特征图。多个卷积核会得到多个通道的特征图。

7.2 池化层

池化层的作用是降低特征图尺寸,同时保留重要信息。

常见池化方式有:

Max PoolingMax Pooling

Average PoolingAverage Pooling

最大池化保留局部窗口中的最大值,平均池化保留局部平均值。池化层没有可学习权值,因此它主要负责降维和增强一定的平移鲁棒性。课件中提到,平均池化和最大池化都没有权值,反向传播时平均池化按窗口大小分配误差,最大池化则把误差回传到最大值所在的位置。

7.3 全连接层

经过若干卷积和池化后,网络已经提取出了比较高级的图像特征。最后通常把这些特征送入全连接层,完成分类或回归任务。

比如在图像分类中,前面的卷积层负责“看见特征”,后面的全连接层负责“根据特征做判断”。


8. 从 BP 到 CNN 的 BP

CNN 虽然结构和普通多层感知机不同,但训练思想仍然是 BP。

区别在于,CNN 中的反向传播需要考虑卷积层和池化层的特殊结构。课件中总结了卷积神经网络 BP 的情况:如果下一层是池化层,需要进行上采样式的误差回传;如果下一层是卷积层,则需要结合卷积核和激活函数导数计算误差;如果下一层是全连接层,则回到普通神经网络的误差反传形式。

所以可以这样理解:

BP 是训练神经网络的通用框架;CNN 只是把网络结构换成了更适合图像的形式。

卷积层、池化层、全连接层各自有不同的前向计算方式,也就对应不同的反向传播公式,但总原则仍然是链式法则和梯度下降。


9. 整条学习路线的内在逻辑

把这些内容串起来,其实是一条非常清晰的路线:

线性回归告诉我们:
学习就是找参数,让误差最小。

线性分类告诉我们:
模型不仅可以预测数值,也可以学习决策边界。

感知机告诉我们:
神经元可以通过加权求和与激活函数完成分类。

XOR 问题告诉我们:
单层线性模型能力有限,必须引入隐藏层。

多层感知机告诉我们:
通过层层非线性变换,网络可以表示复杂函数。

BP 算法告诉我们:
多层网络可以用链式法则和梯度下降自动训练。

CNN 告诉我们:
面对图像这类高维数据,网络结构本身也要利用数据的空间特性。

这就是从传统机器学习模型走向深度学习模型的一条主线。


10. 总结

神经网络并不是凭空冒出来的“黑箱魔法”。它可以从线性回归一步步推导出来:

一开始,我们只是想拟合一条直线;
后来,我们想用这条线做分类;
再后来,我们发现一条线不够,于是堆叠多层非线性变换;
最后,面对图像这种复杂输入,我们设计出卷积结构来减少参数、提取局部特征。

从这个角度看,深度学习的核心并不是“层数越多越玄学”,而是三个问题:

模型怎么表达?误差怎么定义?参数怎么更新?

线性回归、感知机、BP 网络、CNN,本质上都围绕这三个问题展开。只要抓住这条主线,后面再学习 PyTorch、LeNet、AlexNet、ResNet、Transformer,就不会感觉它们是凭空出现的东西,而是同一个思想在不同数据结构和任务上的演化。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐