神经网络与深度学习课程总结1:从线性模型到 BP 误差反向传播算法
神经网络与深度学习课程总结:从线性模型到 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} x→z=wTx+b→a=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=1∑N[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(θ)=21∥y−Xθ∥22
展开后为:
J(θ)=12(y−Xθ)T(y−Xθ) J(\theta)=\frac{1}{2}(\mathbf{y}-X\theta)^T(\mathbf{y}-X\theta) J(θ)=21(y−Xθ)T(y−Xθ)
对参数求梯度:
∇θ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+e−z1
令:
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;θ)=1−hθ(x)
Sigmoid 函数的导数为:
σ′(z)=σ(z)(1−σ(z)) \sigma'(z)=\sigma(z)(1-\sigma(z)) σ′(z)=σ(z)(1−σ(z))
Logistic 回归常用交叉熵损失函数:
J(θ)=−∑i=1N[y(i)loghθ(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=1∑N[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(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=k∣x;θ)=∑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=1∑Ky^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=1∑Kyklog(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=1∑nwjxj−θ
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,x≥00,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,x≥0−1,x<0
Sigmoid 函数为:
σ(x)=11+e−x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1
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+x2−0.5)
a2[1]=f(−x1−x2+1.5) a_2^{[1]}=f(-x_1-x_2+1.5) a2[1]=f(−x1−x2+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[l−1]+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=21∥y−y^∥2
分类任务中也常使用交叉熵损失。二分类交叉熵为:
J=−[ylog(p)+(1−y)log(1−p)] J=-[y\log(p)+(1-y)\log(1-p)] J=−[ylog(p)+(1−y)log(1−p)]
其中,yyy 表示真实标签,ppp 表示模型预测样本属于正类的概率。
多分类交叉熵为:
J=−∑k=1Kyklogy^k J=-\sum_{k=1}^{K}y_k\log \hat{y}_k J=−k=1∑Kyklogy^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]∂J⊙f′(z[L])
若采用平方误差损失,则:
∂J∂aL=aL−y \frac{\partial J}{\partial a_L}=a_L-y ∂aL∂J=aL−y
其中,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=Wlal−1+bl
可得权值梯度:
∂J∂Wl=δlal−1T \frac{\partial J}{\partial W_l}=\delta_l a_{l-1}^T ∂Wl∂J=δlal−1T
偏置梯度为:
∂J∂bl=δl \frac{\partial J}{\partial b_l}=\delta_l ∂bl∂J=δl
利用梯度下降更新参数:
Wlnew=Wl−α∂J∂Wl W_l^{new}=W_l-\alpha \frac{\partial J}{\partial W_l} Wlnew=Wl−α∂Wl∂J
blnew=bl−α∂J∂bl b_l^{new}=b_l-\alpha \frac{\partial J}{\partial b_l} blnew=bl−α∂bl∂J
其中,WlW_lWl 表示第 lll 层的权值矩阵,blb_lbl 表示第 lll 层的偏置,al−1a_{l-1}al−1 表示上一层的输出,δ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+e−z1
因此,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 算法则利用链式法则从输出层向前逐层计算梯度,为多层前馈神经网络提供了有效的训练方法。
整体来看,神经网络训练的本质可以概括为:确定网络结构,定义损失函数,通过前向传播计算预测结果,再通过反向传播和梯度下降不断优化参数。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)