《深度学习的核心公式》
深度学习的核心公式围绕模型构建(前向传播)、损失计算、参数优化(反向传播与优化器) 三大核心环节展开,且符号定义需保持统一(如下标i
表示样本,上标l
表示网络第l
层)。以下按模块梳理核心公式,并明确其作用与符号含义。
一、基础组件:激活函数与损失函数
激活函数为网络注入非线性能力(否则深层网络等价于单层线性模型),损失函数则量化“预测值与真实值的差距”,是参数优化的目标。
1. 核心激活函数
激活函数 | 公式 | 作用与特点 |
---|---|---|
Sigmoid | σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1 | 输出映射到[0,1][0,1][0,1],适用于二分类输出层;缺点是易梯度消失($ |
Tanh | tanh(z)=ez−e−zez+e−z\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+e−zez−e−z | 输出映射到[−1,1][-1,1][−1,1],比Sigmoid中心对称,缓解梯度消失;仍适用于浅层网络。 |
ReLU(最常用) | ReLU(z)=max(0,z)\text{ReLU}(z) = \max(0, z)ReLU(z)=max(0,z) | 仅保留正信号,计算高效,彻底解决梯度消失(正区间导数为1);缺点是“死亡ReLU”(负信号永久失活)。 |
Leaky ReLU | LeakyReLU(z)=max(αz,z)\text{LeakyReLU}(z) = \max(\alpha z, z)LeakyReLU(z)=max(αz,z)(α\alphaα为小常数,如0.01) | 对负信号保留微小梯度,避免死亡ReLU,适用于深层网络(如ResNet)。 |
2. 核心损失函数
损失函数需与任务匹配(回归/分类),以下为最常用类型:
(1)回归任务:均方误差(MSE)
衡量连续值预测的误差(如房价预测、温度预测),公式为:
LMSE=1N∑i=1N12∥y^i−yi∥2\mathcal{L}_{\text{MSE}} = \frac{1}{N} \sum_{i=1}^N \frac{1}{2} \| \hat{y}_i - y_i \|^2LMSE=N1i=1∑N21∥y^i−yi∥2
- NNN:样本数量;y^i\hat{y}_iy^i:第iii个样本的预测值;yiy_iyi:第iii个样本的真实值;
- 系数12\frac{1}{2}21是为了求导后抵消平方项(不影响最小化目标)。
(2)分类任务:交叉熵损失(CE)
衡量离散类别预测的“概率分布差距”(如图片分类、文本情感分析),分二分类与多分类:
-
二分类交叉熵(输出层用Sigmoid):
LBCE=−1N∑i=1N[yilogy^i+(1−yi)log(1−y^i)]\mathcal{L}_{\text{BCE}} = -\frac{1}{N} \sum_{i=1}^N \left[ y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i) \right]LBCE=−N1i=1∑N[yilogy^i+(1−yi)log(1−y^i)]- y^i∈[0,1]\hat{y}_i \in [0,1]y^i∈[0,1]:样本iii属于正类的概率;yi∈{0,1}y_i \in \{0,1\}yi∈{0,1}:真实标签。
-
多分类交叉熵(输出层用Softmax):
先通过Softmax将输出映射为概率分布:
y^ik=Softmax(zik)=ezik∑k′=1Kezik′\hat{y}_{ik} = \text{Softmax}(z_{ik}) = \frac{e^{z_{ik}}}{\sum_{k'=1}^K e^{z_{ik'}}}y^ik=Softmax(zik)=∑k′=1Kezik′ezik
(KKK为类别数,zikz_{ik}zik是第iii个样本在第kkk类的加权和,y^ik\hat{y}_{ik}y^ik是该样本属于第kkk类的概率)再计算交叉熵损失:
LCE=−1N∑i=1N∑k=1Kyiklogy^ik\mathcal{L}_{\text{CE}} = -\frac{1}{N} \sum_{i=1}^N \sum_{k=1}^K y_{ik} \log \hat{y}_{ik}LCE=−N1i=1∑Nk=1∑Kyiklogy^ik- yik∈{0,1}y_{ik} \in \{0,1\}yik∈{0,1}:真实标签的独热编码(如类别kkk为真实类时,yik=1y_{ik}=1yik=1,其余为0)。
二、神经网络核心:前向传播
前向传播是“输入数据经过网络层计算,得到预测值”的过程,核心是加权求和+激活函数,以全连接层(最基础层)和卷积层(CNN核心)为例。
1. 全连接层(Fully Connected Layer)
每一层的输出由上一层的所有神经元加权求和后激活得到,公式为:
zl=Wlal−1+blz^l = W^l a^{l-1} + b^lzl=Wlal−1+bl
al=σl(zl)a^l = \sigma^l(z^l)al=σl(zl)
-
符号定义:
- al−1a^{l-1}al−1:第l−1l-1l−1层的激活输出(输入层时,a0=xa^0 = xa0=x,xxx为原始输入);
- WlW^lWl:第lll层的权重矩阵(维度:nl×nl−1n_l \times n_{l-1}nl×nl−1,nln_lnl为第lll层神经元数,nl−1n_{l-1}nl−1为第l−1l-1l−1层神经元数);
- blb^lbl:第lll层的偏置向量(维度:nl×1n_l \times 1nl×1);
- zlz^lzl:第lll层的“加权和”(未激活的线性输出);
- σl\sigma^lσl:第lll层的激活函数(如ReLU、Sigmoid);
- ala^lal:第lll层的最终激活输出(作为下一层的输入)。
-
示例:若输入层有2个神经元(a0=[x1,x2]Ta^0 = [x_1, x_2]^Ta0=[x1,x2]T),第1层有3个神经元(n1=3n_1=3n1=3),则:
z1=[W111W121W211W221W311W321][x1x2]+[b11b21b31],a1=ReLU(z1)z^1 = \begin{bmatrix} W_{11}^1 & W_{12}^1 \\ W_{21}^1 & W_{22}^1 \\ W_{31}^1 & W_{32}^1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} b_1^1 \\ b_2^1 \\ b_3^1 \end{bmatrix}, \quad a^1 = \text{ReLU}(z^1)z1=W111W211W311W121W221W321[x1x2]+b11b21b31,a1=ReLU(z1)
2. 卷积层(Convolutional Layer,CNN核心)
卷积层通过“滑动卷积核(Filter)”提取局部特征,核心是互相关运算(深度学习中“卷积”实际为互相关,无需翻转核),公式为:
zi,jl=∑p=0F−1∑q=0F−1Wp,ql⋅ai+p,j+ql−1+blz_{i,j}^l = \sum_{p=0}^{F-1} \sum_{q=0}^{F-1} W_{p,q}^l \cdot a_{i+p, j+q}^{l-1} + b^lzi,jl=p=0∑F−1q=0∑F−1Wp,ql⋅ai+p,j+ql−1+bl
ai,jl=σl(zi,jl)a_{i,j}^l = \sigma^l(z_{i,j}^l)ai,jl=σl(zi,jl)
-
符号定义:
- al−1a^{l-1}al−1:第l−1l-1l−1层的特征图(维度:Hl−1×Wl−1×Cl−1H_{l-1} \times W_{l-1} \times C_{l-1}Hl−1×Wl−1×Cl−1,HHH=高度,WWW=宽度,CCC=通道数);
- WlW^lWl:第lll层的卷积核(维度:F×F×Cl−1×KF \times F \times C_{l-1} \times KF×F×Cl−1×K,FFF=核大小,KKK=卷积核数量(即输出通道数));
- zi,jlz_{i,j}^lzi,jl:第lll层特征图中(i,j)(i,j)(i,j)位置的加权和;
- ai,jla_{i,j}^lai,jl:第lll层特征图中(i,j)(i,j)(i,j)位置的激活输出。
-
关键逻辑:卷积核在输入特征图上滑动,每个位置与局部区域(F×FF \times FF×F)逐元素相乘后求和,再加偏置,最终激活得到输出特征图。
三、参数优化核心:反向传播与优化器
反向传播通过链式法则计算损失函数对各层参数(Wl,blW^l, b^lWl,bl)的梯度,优化器则根据梯度更新参数,最小化损失。
1. 反向传播:梯度计算(以全连接层为例)
核心是定义“误差项”δl\delta^lδl:第lll层加权和zlz^lzl对损失L\mathcal{L}L的梯度,即δl=∂L∂zl\delta^l = \frac{\partial \mathcal{L}}{\partial z^l}δl=∂zl∂L,再通过δl\delta^lδl推导∂L∂Wl\frac{\partial \mathcal{L}}{\partial W^l}∂Wl∂L和∂L∂bl\frac{\partial \mathcal{L}}{\partial b^l}∂bl∂L。
(1)输出层误差项(l=Ll=Ll=L,LLL为总层数)
根据损失函数不同,δL\delta^LδL的表达式不同:
-
若用MSE损失(输出层无激活,即σL(z)=z\sigma^L(z)=zσL(z)=z):
δL=∂L∂zL=∂L∂aL⋅σ′L(zL)=(y^−y)⋅1=y^−y\delta^L = \frac{\partial \mathcal{L}}{\partial z^L} = \frac{\partial \mathcal{L}}{\partial a^L} \cdot \sigma'^L(z^L) = (\hat{y} - y) \cdot 1 = \hat{y} - yδL=∂zL∂L=∂aL∂L⋅σ′L(zL)=(y^−y)⋅1=y^−y -
若用多分类交叉熵(输出层用Softmax):
利用Softmax与交叉熵的导数性质(简化后):
δL=y^−y\delta^L = \hat{y} - yδL=y^−y
(y^\hat{y}y^为Softmax输出,yyy为独热标签,无需计算激活函数导数,大幅简化计算)
(2)隐藏层误差项(l<Ll < Ll<L)
通过链式法则,隐藏层误差由下一层误差传递而来:
δl=((Wl+1)Tδl+1)⊙σ′l(zl)\delta^l = \left( (W^{l+1})^T \delta^{l+1} \right) \odot \sigma'^l(z^l)δl=((Wl+1)Tδl+1)⊙σ′l(zl)
- 符号说明:
- (Wl+1)T(W^{l+1})^T(Wl+1)T:下一层权重矩阵的转置(维度匹配:nl×nl+1n_l \times n_{l+1}nl×nl+1);
- ⊙\odot⊙:哈达玛积(逐元素相乘,保证维度与zlz^lzl一致);
- σ′l(zl)\sigma'^l(z^l)σ′l(zl):第lll层激活函数的导数(如ReLU导数为σ′(z)=1\sigma'(z)=1σ′(z)=1(z>0z>0z>0)或000(z≤0z \leq 0z≤0))。
(3)参数梯度(Wl,blW^l, b^lWl,bl的梯度)
有了误差项δl\delta^lδl,可直接推导参数梯度:
-
权重梯度:∂L∂Wl=δl⋅(al−1)T\frac{\partial \mathcal{L}}{\partial W^l} = \delta^l \cdot (a^{l-1})^T∂Wl∂L=δl⋅(al−1)T
(维度:nl×nl−1n_l \times n_{l-1}nl×nl−1,与WlW^lWl一致) -
偏置梯度:∂L∂bl=δl\frac{\partial \mathcal{L}}{\partial b^l} = \delta^l∂bl∂L=δl
(偏置向量的每个元素对应δl\delta^lδl的每个元素,因blb^lbl仅影响zlz^lzl的偏移)
2. 优化器:参数更新
优化器根据参数梯度(∂L∂Wl,∂L∂bl\frac{\partial \mathcal{L}}{\partial W^l}, \frac{\partial \mathcal{L}}{\partial b^l}∂Wl∂L,∂bl∂L)调整参数,核心是“梯度下降”的变体,解决“如何高效最小化损失”的问题。
(1)随机梯度下降(SGD,基础优化器)
每次用一个样本(或小批量样本)的梯度更新参数,公式为:
Wl=Wl−η⋅∂L∂WlW^l = W^l - \eta \cdot \frac{\partial \mathcal{L}}{\partial W^l}Wl=Wl−η⋅∂Wl∂L
bl=bl−η⋅∂L∂blb^l = b^l - \eta \cdot \frac{\partial \mathcal{L}}{\partial b^l}bl=bl−η⋅∂bl∂L
- η\etaη:学习率(控制步长,需手动调参,过大易震荡,过小收敛慢)。
(2)动量法(Momentum,缓解SGD震荡)
模拟物理“动量”,积累历史梯度的方向,减少更新震荡,公式为:
vtW=γ⋅vt−1W+η⋅∂L∂Wlv_t^{W} = \gamma \cdot v_{t-1}^{W} + \eta \cdot \frac{\partial \mathcal{L}}{\partial W^l}vtW=γ⋅vt−1W+η⋅∂Wl∂L
Wl=Wl−vtWW^l = W^l - v_t^{W}Wl=Wl−vtW
- vtWv_t^{W}vtW:第ttt步的动量(权重更新的“速度”);
- γ\gammaγ:动量系数(通常取0.9,控制历史梯度的贡献)。
(3)Adam(自适应学习率,最常用)
结合“动量法”(一阶矩)和“自适应步长”(二阶矩),无需手动调参,公式为:
- 计算一阶矩(动量):mtW=β1⋅mt−1W+(1−β1)⋅∂L∂Wlm_t^{W} = \beta_1 \cdot m_{t-1}^{W} + (1 - \beta_1) \cdot \frac{\partial \mathcal{L}}{\partial W^l}mtW=β1⋅mt−1W+(1−β1)⋅∂Wl∂L
- 计算二阶矩(梯度平方的累积):vtW=β2⋅vt−1W+(1−β2)⋅(∂L∂Wl)2v_t^{W} = \beta_2 \cdot v_{t-1}^{W} + (1 - \beta_2) \cdot \left( \frac{\partial \mathcal{L}}{\partial W^l} \right)^2vtW=β2⋅vt−1W+(1−β2)⋅(∂Wl∂L)2
- 修正一阶矩(缓解初始阶段偏差):m^tW=mtW1−β1t\hat{m}_t^{W} = \frac{m_t^{W}}{1 - \beta_1^t}m^tW=1−β1tmtW
- 修正二阶矩:v^tW=vtW1−β2t\hat{v}_t^{W} = \frac{v_t^{W}}{1 - \beta_2^t}v^tW=1−β2tvtW
- 更新参数:Wl=Wl−η⋅m^tWv^tW+ϵW^l = W^l - \eta \cdot \frac{\hat{m}_t^{W}}{\sqrt{\hat{v}_t^{W}} + \epsilon}Wl=Wl−η⋅v^tW+ϵm^tW
- 超参数默认值:β1=0.9\beta_1=0.9β1=0.9,β2=0.999\beta_2=0.999β2=0.999,ϵ=10−8\epsilon=10^{-8}ϵ=10−8(防止分母为0);
- 核心优势:对不同参数自适应调整步长(梯度大的参数步长小,梯度小的步长稍大),收敛快且稳定。
四、核心公式的逻辑闭环
深度学习的训练流程本质是“前向传播→计算损失→反向传播算梯度→优化器更参数”的迭代循环,各核心公式的关系如下:
- 前向传播(zl=Wlal−1+blz^l=W^l a^{l-1}+b^lzl=Wlal−1+bl,al=σl(zl)a^l=\sigma^l(z^l)al=σl(zl)):从输入得到预测值y^\hat{y}y^;
- 损失计算(MSE/交叉熵):量化y^\hat{y}y^与yyy的差距L\mathcal{L}L;
- 反向传播(δl=(Wl+1)Tδl+1⊙σ′l(zl)\delta^l=(W^{l+1})^T \delta^{l+1} \odot \sigma'^l(z^l)δl=(Wl+1)Tδl+1⊙σ′l(zl)):从输出层往回算各参数的梯度;
- 优化器更新(Adam/SGD):用梯度调整Wl,blW^l, b^lWl,bl,降低L\mathcal{L}L;
- 重复1-4,直到L\mathcal{L}L收敛(模型学好参数)。
这些公式是构建所有深度学习模型(CNN、RNN、Transformer)的基础,不同模型仅在“层结构”(如Transformer的自注意力层)上有差异,核心的损失计算、反向传播与优化逻辑保持一致。