神经网络与深度学习课程总结:从线性模型到 BP 误差反向传播算法

摘要

本周学习内容主要围绕神经网络的基础模型与训练方法展开,包括线性回归、线性分类、Logistic 回归、Softmax 多分类、神经元模型、感知机、多层感知机以及 BP 误差反向传播算法。整体来看,这些内容可以统一理解为“线性加权、非线性映射、参数优化”的过程。

神经网络的基本计算流程可以概括为:

x→z=wTx+b→a=f(z)→y^ \mathbf{x} \rightarrow z=\mathbf{w}^{T}\mathbf{x}+b \rightarrow a=f(z) \rightarrow \hat{y} xz=wTx+ba=f(z)y^

其中,x\mathbf{x}x 表示输入特征,w\mathbf{w}w 表示权值,bbb 表示偏置,f(z)f(z)f(z) 表示作用函数或激活函数,y^\hat{y}y^ 表示模型输出。


1. 线性回归

线性回归用于描述输入变量与连续输出变量之间的关系。对于单变量情形,模型可以写为:

y=kx+b y=kx+b y=kx+b

对于多变量情形,可将输入和参数分别写为:

x=(1,x1,x2,⋯ ,xn)T \mathbf{x}=(1,x_1,x_2,\cdots,x_n)^T x=(1,x1,x2,,xn)T

θ=(θ0,θ1,θ2,⋯ ,θn)T \theta=(\theta_0,\theta_1,\theta_2,\cdots,\theta_n)^T θ=(θ0,θ1,θ2,,θn)T

线性回归模型为:

hθ(x)=θTx h_{\theta}(\mathbf{x})=\theta^T\mathbf{x} hθ(x)=θTx

给定训练集:

D={(x(i),y(i))}i=1N D=\{(\mathbf{x}^{(i)},y^{(i)})\}_{i=1}^{N} D={(x(i),y(i))}i=1N

平方误差损失函数为:

J(θ)=12∑i=1N[y(i)−hθ(x(i))]2 J(\theta)=\frac{1}{2}\sum_{i=1}^{N} \left[ y^{(i)}-h_{\theta}(\mathbf{x}^{(i)}) \right]^2 J(θ)=21i=1N[y(i)hθ(x(i))]2

优化目标为:

min⁡θJ(θ) \min_{\theta}J(\theta) θminJ(θ)

将损失函数写成矩阵形式:

J(θ)=12∥y−Xθ∥22 J(\theta)=\frac{1}{2}\Vert \mathbf{y}-X\theta \Vert_2^2 J(θ)=21yXθ22

展开后为:

J(θ)=12(y−Xθ)T(y−Xθ) J(\theta)=\frac{1}{2}(\mathbf{y}-X\theta)^T(\mathbf{y}-X\theta) J(θ)=21(yXθ)T(yXθ)

对参数求梯度:

∇θJ(θ)=XTXθ−XTy \nabla_{\theta}J(\theta)=X^TX\theta-X^T\mathbf{y} θJ(θ)=XTXθXTy

令梯度为零:

XTXθ=XTy X^TX\theta=X^T\mathbf{y} XTXθ=XTy

XTXX^TXXTX 可逆,则得到解析解:

θ=(XTX)−1XTy \theta=(X^TX)^{-1}X^T\mathbf{y} θ=(XTX)1XTy

线性回归适合连续值预测。当特征维度较低且矩阵可逆时,可以使用解析解;当数据规模较大或矩阵不可逆时,通常使用梯度下降等迭代方法。


2. 线性分类与 Logistic 回归

线性分类与线性回归具有相同的线性打分形式:

z=θTx z=\theta^T\mathbf{x} z=θTx

区别在于,线性回归直接输出连续值,而分类任务需要输出类别标签或类别概率。二分类问题的分类边界为:

θTx=0 \theta^T\mathbf{x}=0 θTx=0

当线性打分大于等于零时,样本可划分为正类;当线性打分小于零时,样本可划分为负类。

由于线性函数输出范围是整个实数域,而概率必须位于 0 到 1 之间,因此二分类问题中通常引入 Sigmoid 函数:

σ(z)=11+e−z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1

令:

hθ(x)=σ(θTx) h_{\theta}(\mathbf{x})=\sigma(\theta^T\mathbf{x}) hθ(x)=σ(θTx)

即:

hθ(x)=11+e−θTx h_{\theta}(\mathbf{x})=\frac{1}{1+e^{-\theta^T\mathbf{x}}} hθ(x)=1+eθTx1

此时模型输出可以解释为样本属于正类的概率:

P(y=1∣x;θ)=hθ(x) P(y=1|\mathbf{x};\theta)=h_{\theta}(\mathbf{x}) P(y=1∣x;θ)=hθ(x)

P(y=0∣x;θ)=1−hθ(x) P(y=0|\mathbf{x};\theta)=1-h_{\theta}(\mathbf{x}) P(y=0∣x;θ)=1hθ(x)

Sigmoid 函数的导数为:

σ′(z)=σ(z)(1−σ(z)) \sigma'(z)=\sigma(z)(1-\sigma(z)) σ(z)=σ(z)(1σ(z))

Logistic 回归常用交叉熵损失函数:

J(θ)=−∑i=1N[y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))] J(\theta)=- \sum_{i=1}^{N} \left[ y^{(i)}\log h_{\theta}(\mathbf{x}^{(i)}) + (1-y^{(i)})\log(1-h_{\theta}(\mathbf{x}^{(i)})) \right] J(θ)=i=1N[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

参数更新公式为:

θ←θ−α∇θJ(θ) \theta \leftarrow \theta-\alpha \nabla_{\theta}J(\theta) θθαθJ(θ)

其中,α\alphaα 为学习率,用于控制每次参数更新的步长。


3. Softmax 多分类回归

当任务从二分类扩展到多分类时,可以使用 Softmax 函数。假设共有 KKK 个类别,第 kkk 类的线性打分为:

zk=(θ(k))Tx z_k=(\theta^{(k)})^T\mathbf{x} zk=(θ(k))Tx

Softmax 将各类别打分转化为概率:

P(y=k∣x;θ)=exp⁡(zk)∑j=1Kexp⁡(zj) P(y=k|\mathbf{x};\theta)= \frac{\exp(z_k)} {\sum_{j=1}^{K}\exp(z_j)} P(y=kx;θ)=j=1Kexp(zj)exp(zk)

Softmax 输出满足:

y^k>0 \hat{y}_k>0 y^k>0

∑k=1Ky^k=1 \sum_{k=1}^{K}\hat{y}_k=1 k=1Ky^k=1

因此,Softmax 输出可以看作样本属于各个类别的概率分布。

对于 one-hot 标签,多分类交叉熵损失函数为:

L(y,y^)=−∑k=1Kyklog⁡(y^k) L(y,\hat{y})=-\sum_{k=1}^{K} y_k \log(\hat{y}_k) L(y,y^)=k=1Kyklog(y^k)

其中,yky_kyk 表示第 kkk 类的真实标签,y^k\hat{y}_ky^k 表示模型预测样本属于第 kkk 类的概率。

Sigmoid 主要用于二分类概率建模,Softmax 更适合互斥多分类问题。


4. 神经元模型

神经元是神经网络的基本计算单元。人工神经元首先对输入信号进行加权求和,然后减去阈值,最后通过作用函数产生输出。

M-P 神经元模型可以写为:

z=∑j=1nwjxj−θ z=\sum_{j=1}^{n}w_jx_j-\theta z=j=1nwjxjθ

y=f(z) y=f(z) y=f(z)

其中,xjx_jxj 表示输入,wjw_jwj 表示连接权值,θ\thetaθ 表示阈值,f(z)f(z)f(z) 表示作用函数。

若将阈值吸收到偏置项中,可以令:

x0=1 x_0=1 x0=1

w0=−θ w_0=-\theta w0=θ

于是神经元模型可写为:

z=wTx z=\mathbf{w}^T\mathbf{x} z=wTx

y=f(wTx) y=f(\mathbf{w}^T\mathbf{x}) y=f(wTx)

因此,神经元模型可以理解为“线性加权和 + 作用函数”。常见作用函数包括阶跃函数、符号函数和 Sigmoid 函数。

阶跃函数可表示为:

f(x)={1,x≥00,x<0 f(x)= \begin{cases} 1,\quad x\geq 0\\ 0,\quad x<0 \end{cases} f(x)={1,x00,x<0

符号函数可表示为:

sign(x)={+1,x≥0−1,x<0 sign(x)= \begin{cases} +1,\quad x\geq 0\\ -1,\quad x<0 \end{cases} sign(x)={+1,x01,x<0

Sigmoid 函数为:

σ(x)=11+e−x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1

Hebb 学习规则可以写为:

Δw=αxy \Delta w=\alpha xy Δw=αxy

该规则体现了“同时激活的神经元之间连接增强”的思想。


5. 感知机模型

感知机是典型的线性二分类模型,其输出为:

y^=sign(wTx+b) \hat{y}=sign(\mathbf{w}^T\mathbf{x}+b) y^=sign(wTx+b)

分类超平面为:

wTx+b=0 \mathbf{w}^T\mathbf{x}+b=0 wTx+b=0

若样本被正确分类,则满足:

y(i)(wTx(i)+b)>0 y^{(i)}(\mathbf{w}^T\mathbf{x}^{(i)}+b)>0 y(i)(wTx(i)+b)>0

若样本被误分类,则满足:

y(i)(wTx(i)+b)≤0 y^{(i)}(\mathbf{w}^T\mathbf{x}^{(i)}+b)\leq 0 y(i)(wTx(i)+b)0

对于误分类样本,感知机采用如下更新规则:

wk+1=wk+ηyixi w_{k+1}=w_k+\eta y_i x_i wk+1=wk+ηyixi

若考虑偏置项,则偏置更新为:

bk+1=bk+ηyi b_{k+1}=b_k+\eta y_i bk+1=bk+ηyi

其中,wkw_kwk 表示第 kkk 次迭代时的权值向量,xix_ixi 表示第 iii 个训练样本,yiy_iyi 表示对应类别标签,η\etaη 表示学习率。

bk+1=bk+ηy(i) b_{k+1}=b_k+\eta y^{(i)} bk+1=bk+ηy(i)

其中,η\etaη 为学习率。感知机通过误分类样本不断调整分类超平面,但其主要局限是只能解决线性可分问题。对于 XOR 等线性不可分问题,单层感知机无法完成正确分类。


6. 多层感知机

为了增强模型表达能力,可以在输入层和输出层之间加入一个或多个隐含层,形成多层感知机。

其基本结构为:

输入层 → 隐含层 → 输出层

对于一层隐含层网络,可以写为:

a[0]=x \mathbf{a}^{[0]}=\mathbf{x} a[0]=x

z[1]=W[1]a[0]+b[1] \mathbf{z}^{[1]}=W^{[1]}\mathbf{a}^{[0]}+\mathbf{b}^{[1]} z[1]=W[1]a[0]+b[1]

a[1]=f(z[1]) \mathbf{a}^{[1]}=f(\mathbf{z}^{[1]}) a[1]=f(z[1])

z[2]=W[2]a[1]+b[2] \mathbf{z}^{[2]}=W^{[2]}\mathbf{a}^{[1]}+\mathbf{b}^{[2]} z[2]=W[2]a[1]+b[2]

y^=a[2]=g(z[2]) \hat{\mathbf{y}}=\mathbf{a}^{[2]}=g(\mathbf{z}^{[2]}) y^=a[2]=g(z[2])

多层感知机的关键在于,隐含层能够对输入进行非线性变换,使原本线性不可分的问题在新的表示空间中变得可分。

以 XOR 问题为例,其输入输出关系为:

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 0

XOR 无法用单条直线完成分类,但可以通过两个隐含节点实现:

a1[1]=f(x1+x2−0.5) a_1^{[1]}=f(x_1+x_2-0.5) a1[1]=f(x1+x20.5)

a2[1]=f(−x1−x2+1.5) a_2^{[1]}=f(-x_1-x_2+1.5) a2[1]=f(x1x2+1.5)

输出节点为:

y^=f(a1[1]+a2[1]−1.2) \hat{y}=f(a_1^{[1]}+a_2^{[1]}-1.2) y^=f(a1[1]+a2[1]1.2)

多层感知机并不是简单增加神经元数量,而是通过隐含层构造新的特征表达。


7. BP 误差反向传播算法

BP 算法用于训练多层前馈神经网络,其核心是利用链式法则逐层计算梯度。

7.1 前向传播

对于 LLL 层前馈神经网络,前向传播过程为:

a[0]=x \mathbf{a}^{[0]}=\mathbf{x} a[0]=x

z[l]=W[l]a[l−1]+b[l] \mathbf{z}^{[l]}=W^{[l]}\mathbf{a}^{[l-1]}+\mathbf{b}^{[l]} z[l]=W[l]a[l1]+b[l]

a[l]=f[l](z[l]) \mathbf{a}^{[l]}=f^{[l]}(\mathbf{z}^{[l]}) a[l]=f[l](z[l])

最终输出为:

y^=a[L] \hat{\mathbf{y}}=\mathbf{a}^{[L]} y^=a[L]

7.2 损失函数

若采用平方误差损失:

J=12∥y−y^∥2 J=\frac{1}{2}\Vert \mathbf{y}-\hat{\mathbf{y}}\Vert^2 J=21yy^2

分类任务中也常使用交叉熵损失。二分类交叉熵为:

J=−[ylog⁡(p)+(1−y)log⁡(1−p)] J=-[y\log(p)+(1-y)\log(1-p)] J=[ylog(p)+(1y)log(1p)]

其中,yyy 表示真实标签,ppp 表示模型预测样本属于正类的概率。

多分类交叉熵为:

J=−∑k=1Kyklog⁡y^k J=-\sum_{k=1}^{K}y_k\log \hat{y}_k J=k=1Kyklogy^k

7.3 反向传播

定义第 lll 层误差项为:

δ[l]=∂J∂z[l] \delta^{[l]}= \frac{\partial J}{\partial \mathbf{z}^{[l]}} δ[l]=z[l]J

对于输出层:

δ[L]=∂J∂a[L]⊙f′(z[L]) \delta^{[L]}= \frac{\partial J}{\partial \mathbf{a}^{[L]}} \odot f'(\mathbf{z}^{[L]}) δ[L]=a[L]Jf(z[L])

若采用平方误差损失,则:

∂J∂aL=aL−y \frac{\partial J}{\partial a_L}=a_L-y aLJ=aLy

其中,aLa_LaL 表示输出层的网络输出,yyy 表示真实标签。

因此:

δ[L]=(a[L]−y)⊙f′(z[L]) \delta^{[L]}= (\mathbf{a}^{[L]}-\mathbf{y}) \odot f'(\mathbf{z}^{[L]}) δ[L]=(a[L]y)f(z[L])

对于隐含层:

δ[l]=((W[l+1])Tδ[l+1])⊙f′(z[l]) \delta^{[l]}= \left( (W^{[l+1]})^T \delta^{[l+1]} \right) \odot f'(\mathbf{z}^{[l]}) δ[l]=((W[l+1])Tδ[l+1])f(z[l])

该公式表示:后一层误差通过权值矩阵反传到当前层,再乘以当前层激活函数的导数,得到当前层误差项。

7.4 参数更新

由前向传播公式:

zl=Wlal−1+bl z_l=W_l a_{l-1}+b_l zl=Wlal1+bl

可得权值梯度:

∂J∂Wl=δlal−1T \frac{\partial J}{\partial W_l}=\delta_l a_{l-1}^T WlJ=δlal1T

偏置梯度为:

∂J∂bl=δl \frac{\partial J}{\partial b_l}=\delta_l blJ=δl

利用梯度下降更新参数:

Wlnew=Wl−α∂J∂Wl W_l^{new}=W_l-\alpha \frac{\partial J}{\partial W_l} Wlnew=WlαWlJ

blnew=bl−α∂J∂bl b_l^{new}=b_l-\alpha \frac{\partial J}{\partial b_l} blnew=blαblJ

其中,WlW_lWl 表示第 lll 层的权值矩阵,blb_lbl 表示第 lll 层的偏置,al−1a_{l-1}al1 表示上一层的输出,δl\delta_lδl 表示第 lll 层的误差项,α\alphaα 表示学习率。

其中,α\alphaα 为学习率。BP 算法可以理解为多层网络中高效计算梯度的方法,而梯度下降则利用这些梯度更新网络参数。


8. 课后问题整理与思考

8.1 为什么线性回归可以得到解析解?

线性回归采用平方误差损失时,目标函数关于参数是二次函数。通过对参数求梯度并令梯度为零,可以得到正规方程:

XTXθ=XTy X^TX\theta=X^T\mathbf{y} XTXθ=XTy

XTXX^TXXTX 可逆,则可得到:

θ=(XTX)−1XTy \theta=(X^TX)^{-1}X^T\mathbf{y} θ=(XTX)1XTy

因此,线性回归在一定条件下可以直接求得解析解。

8.2 为什么分类问题要引入 Sigmoid 函数?

分类任务需要输出类别概率,而线性函数输出范围是整个实数域,不能直接表示概率。Sigmoid 函数可以将任意实数映射到 0 到 1 之间:

σ(z)=11+e−z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1

因此,Logistic 回归可以将 θTx\theta^T\mathbf{x}θTx 转换为样本属于正类的概率。

8.3 什么是 Softmax?

Softmax 是多分类任务中的概率归一化函数。它将每个类别的线性打分转换为概率:

y^k=ezk∑j=1Kezj \hat{y}_k= \frac{e^{z_k}} {\sum_{j=1}^{K}e^{z_j}} y^k=j=1Kezjezk

Softmax 输出的每一项都大于 0,且所有类别概率之和为 1,因此可以表示样本属于各类别的概率分布。

8.4 M-P 神经元模型与线性回归有什么区别?

线性回归模型为:

y^=θTx \hat{y}=\theta^T\mathbf{x} y^=θTx

M-P 神经元模型为:

y=f(wTx) y=f(\mathbf{w}^T\mathbf{x}) y=f(wTx)

二者都包含加权求和结构。不同点在于,线性回归通常直接输出连续预测值,而 M-P 神经元在加权求和后还要经过作用函数,因此可以用于神经元激活、二值决策或非线性映射。


9. 本周总结

本周内容完成了从线性模型到神经网络基础训练方法的过渡。线性回归体现了监督学习中的参数估计思想;Logistic 回归和 Softmax 回归将线性模型扩展到概率分类任务;神经元模型将线性加权和作用函数结合起来,构成神经网络的基本单元;感知机通过误分类样本驱动权值更新,但只能解决线性可分问题;多层感知机通过隐含层和非线性激活函数增强表达能力,可以处理 XOR 等线性不可分问题;BP 算法则利用链式法则从输出层向前逐层计算梯度,为多层前馈神经网络提供了有效的训练方法。

整体来看,神经网络训练的本质可以概括为:确定网络结构,定义损失函数,通过前向传播计算预测结果,再通过反向传播和梯度下降不断优化参数。

Logo

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

更多推荐