从线性模型到BP网络

先从最简单的线性模型出发,理解“机器学习到底在学什么”;再过渡到分类问题,理解为什么需要激活函数;最后进入多层感知机和BP算法,理解神经网络为什么能够处理更复杂的非线性问题。

一、线性回归:机器学习最朴素的起点

线性回归是理解神经网络之前最重要的基础之一。它解决的问题很直观:给定一批样本数据,找到输入变量和输出变量之间的定量关系。

比如课件中用房屋面积预测房价:已知一些房子的面积和售价,希望找到一条尽可能贴合这些数据的直线。以后来了一个新的房屋面积,就可以通过这条直线估计其价格。

在线性回归中,输入数据通常记为 x,输出数据记为 y,模型可以写成:

y = h(x)

如果是简单直线,就是:

y = kx + b

当特征不止一个时,比如房价不仅与面积有关,还与房龄、位置等因素有关,模型就可以扩展为:

y = θᵀx

这里的 θ 就是模型要学习的参数。所谓“学习”,本质上就是找到一组参数,让模型预测值和真实值之间的误差尽可能小。

这也是我觉得机器学习最核心的一句话:模型不是凭空“聪明”的,它只是通过数据不断调整参数,使损失函数最小。

二、从回归到分类:输出含义变了

线性回归输出的是一个具体数值,比如房价、温度、销量。但分类问题输出的是“属于哪一类”。

比如苹果分类问题,输入可能是苹果直径、外观评分等特征,输出则是“好苹果”或“坏苹果”。这时我们不再需要拟合一条预测数值的直线,而是需要找到一条分类边界,把不同类别的样本分开。

线性分类器的基本思想仍然是特征的线性组合。只不过,回归中的直线是为了拟合数值,分类中的直线或超平面是为了划分区域。

在二分类问题中,模型通常需要输出一个0到1之间的数,表示样本属于某一类的概率。于是就引入了Sigmoid函数:

Sigmoid函数可以把任意实数压缩到0到1之间。线性模型输出的 z 可能很大,也可能很小,但经过Sigmoid之后,就可以被解释成概率。

这一步非常关键。它说明神经网络并不是突然出现的,而是在线性模型的基础上,加了一层非线性变换。

三、损失函数与梯度下降:学习就是优化

线性回归可以通过解析解直接求出参数,但分类问题引入Sigmoid之后,损失函数变得更复杂,很多时候不能直接一步求解。于是就需要梯度下降。

梯度下降的直观含义是:沿着损失函数下降最快的方向,一小步一小步调整参数。

如果把损失函数想象成一座山,那么训练模型就是从山上的某个点出发,不断往低处走,直到尽可能接近谷底。学习率 α 决定每一步迈多大。迈得太小,训练很慢;迈得太大,可能越过最低点甚至震荡。

这也解释了为什么神经网络训练中经常要调学习率。它不是一个无关紧要的参数,而是直接影响模型能否稳定收敛。

四、Softmax:从二分类走向多分类

二分类可以用Sigmoid,多分类则通常使用Softmax。

Softmax的作用是把多个类别的得分转换成一组概率,并且这些概率之和为1。例如图像分类中,一张图片可能属于“鞋子”“衣服”“包”等多个类别之一,Softmax会为每个类别给出一个概率。

与Softmax配套使用的损失函数通常是交叉熵损失。它衡量的是模型预测概率分布与真实标签之间的差距。模型越自信且越正确,损失越小;模型越自信但越错误,损失越大。

从这里开始,我们已经能看到现代深度学习分类模型的雏形:线性变换、非线性函数、概率输出、损失函数、梯度优化。

五、感知机:神经元模型的机器学习表达

神经网络中的基本单元是神经元。课件中讲到的M-P模型,可以理解为人工神经元的早期数学抽象:输入信号经过加权求和,再通过阈值判断是否激活。

这其实和前面的线性模型很像:先做加权求和,再做某种输出变换。只不过神经元模型更强调“激活”这个概念。

感知机就是一种可以自动完成线性分类任务的模型。它通过不断调整权值,使样本被正确分到不同类别中。对于线性可分问题,感知机是有效的。

但它有一个明显局限:只能处理线性可分问题。

六、XOR问题:单层感知机的局限

XOR问题是理解神经网络发展非常重要的例子。

XOR的输出规则是:两个输入相同则输出0,不同则输出1。这个问题看似简单,但它无法用一条直线把两类样本分开,因此属于线性不可分问题。

这说明单层感知机的表达能力有限。它只能画一条分界线,而很多真实世界的问题并不是一条直线就能解决的。

解决办法就是引入隐藏层,也就是多层感知机。

七、多层感知机:通过隐藏层获得非线性表达能力

多层感知机在输入层和输出层之间加入一层或多层隐藏单元。隐藏层的作用,可以理解为先对原始特征做变换,把原来线性不可分的问题映射到一个新的空间中,再进行分类。

课件中用三层网络解决XOR问题,说明隐藏层可以组合多个简单的线性分割,从而形成更复杂的决策区域。

这也是神经网络强大的根源:单个神经元很简单,但多个神经元分层组合之后,就可以表达复杂函数。

更进一步,多层感知机具有一定的通用逼近能力。也就是说,只要隐藏单元足够多,网络就可以逼近相当广泛的函数关系。这为后来深度学习的发展奠定了基础。

八、前馈网络与BP算法:神经网络如何真正学会参数

多层前馈网络中,信息从输入层开始,经过隐藏层,最后到达输出层。每一层只把结果传给下一层,不存在反馈连接。如果每个神经元都连接到上一层所有神经元,就形成全连接网络。

问题是:网络层数多了,参数也多了,如何训练?

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

BP算法本质上是梯度下降在多层前馈网络中的应用。它包括两个过程:

第一步是正向传播。输入数据从输入层经过隐藏层,一层层计算,最后得到输出结果。

第二步是反向传播。模型输出和真实标签之间会产生误差,这个误差会从输出层反向传回前面的各层,并根据梯度下降更新每一层的权值和阈值。

简单说,正向传播负责“算结果”,反向传播负责“追责任”。输出错了,就要逐层分析每个参数对错误的贡献,然后相应调整。

这就是神经网络训练的基本机制。

九、神经网络不是玄学,而是一套连续的优化框架

线性回归告诉我们,学习就是拟合数据关系。

线性分类告诉我们,模型可以通过分界面完成分类。

Sigmoid和Softmax告诉我们,输出可以被解释为概率。

损失函数告诉我们,模型好坏可以被量化。

梯度下降告诉我们,参数可以通过优化逐步改进。

感知机告诉我们,神经元可以完成简单分类。

XOR问题告诉我们,单层结构存在表达能力上限。

多层感知机告诉我们,隐藏层可以带来非线性表达能力。

BP算法告诉我们,多层网络的参数也可以被系统性训练。

所以,神经网络的核心并不是“模仿人脑”这句话本身,而是:用大量可调参数构造函数,用损失函数衡量误差,再用梯度下降不断优化参数。

从这个角度看,神经网络其实是一种非常工程化的数学工具。它的强大来自结构、数据和优化算法的结合。

如果把这两节课浓缩成一句话,那就是:

神经网络的学习过程,本质上就是通过前向计算得到预测,通过损失函数衡量错误,再通过反向传播更新参数,最终让模型从数据中逼近我们想要的映射关系。

Logo

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

更多推荐