前言
本文系统梳理《动手学深度学习》(Dive into Deep Learning)的核心内容,包括关键概念、数学公式和实用技术。适合作为深度学习知识的快速复习手册。
一、深度学习基础
1.1 感知机与神经元
单个神经元的输出:
y=σ(wTx+b)
其中:
- x 是输入向量
- w 是权重向量
- b 是偏置
- σ 是激活函数
1.2 常用激活函数
Sigmoid:
σ(x)=1+e−x1
导数:σ′(x)=σ(x)(1−σ(x))
Tanh:
tanh(x)=ex+e−xex−e−x
导数:tanh′(x)=1−tanh2(x)
ReLU(常用):
ReLU(x)=max(0,x)
Leaky ReLU:
LeakyReLU(x)=max(αx,x),α∈(0,1)
二、前向传播与反向传播
2.1 前向传播
对于 L 层神经网络:
z[l]a[l]=W[l]a[l−1]+b[l]=σ[l](z[l])
其中 a[0]=x(输入层)
2.2 损失函数
均方误差(MSE):
L=n1i=1∑n(yi−y^i)2
交叉熵损失(分类):
L=−n1i=1∑nc=1∑Cyiclog(y^ic)
二元交叉熵:
L=−n1i=1∑n[yilog(y^i)+(1−yi)log(1−y^i)]
2.3 反向传播
链式法则核心:
∂W[l]∂L=∂a[l]∂L⋅∂z[l]∂a[l]⋅∂W[l]∂z[l]
梯度计算:
δ[l]∂W[l]∂L∂b[l]∂L=∂z[l]∂L=∂a[l]∂L⊙σ′[l](z[l])=δ[l](a[l−1])T=δ[l]
三、优化算法
3.1 批量梯度下降(BGD)
W:=W−η∇WL
3.2 随机梯度下降(SGD)
W:=W−η∇WLi
3.3 小批量梯度下降(Mini-batch GD)
W:=W−ηm1i=1∑m∇WLi
最常用的折中方案。
3.4 动量法(Momentum)
vtW=βvt−1+η∇WL:=W−vt
典型值:β=0.9
3.5 AdaGrad
stW=st−1+(∇WL)2:=W−st+ϵη∇WL
3.6 RMSprop
stW=βst−1+(1−β)(∇WL)2:=W−st+ϵη∇WL
3.7 Adam(最常用)
结合动量和 RMSprop:
mtvtm^tW=β1mt−1+(1−β1)∇WL=β2vt−1+(1−β2)(∇WL)2=1−β1tmt,v^t=1−β2tvt:=W−v^t+ϵηm^t
典型超参数:β1=0.9,β2=0.999,ϵ=10−8
四、正则化技术
4.1 L2 正则化(权重衰减)
Ltotal=Loriginal+2nλl∑∥W[l]∥F2
梯度更新变为:
W:=W−η∇WL−ηnλW
4.2 L1 正则化
Ltotal=Loriginal+nλl∑∥W[l]∥1
能产生稀疏权重。
4.3 Dropout
训练时:以概率 p 随机丢弃神经元
htrain=1−p1⋅mask(h)
测试时:使用完整网络(不丢弃)
4.4 Batch Normalization
μBσB2x^iyi=m1i=1∑mxi=m1i=1∑m(xi−μB)2=σB2+ϵxi−μB=γx^i+β
其中 γ 和 β 是可学习参数。
五、卷积神经网络(CNN)
5.1 卷积运算
二维卷积:
(X∗K)i,j=a∑b∑Xi+a,j+b⋅Ka,b
5.2 输出尺寸计算
Output Size=⌊sn+2p−k⌋+1
其中:
- n:输入尺寸
- p:填充(padding)
- k:卷积核大小
- s:步幅(stride)
5.3 池化层
最大池化(Max Pooling):
yi,j=(a,b)∈Ri,jmaxxa,b
平均池化(Average Pooling):
yi,j=∣Ri,j∣1(a,b)∈Ri,j∑xa,b
5.4 经典 CNN 架构
LeNet-5: Conv → Pool → Conv → Pool → FC → FC
AlexNet: 更深、使用 ReLU、Dropout
VGG: 多个 3×3 卷积堆叠
ResNet: 残差连接 H(x)=F(x)+x
Inception: 多尺度并行卷积
六、循环神经网络(RNN)
6.1 基础 RNN
htyt=tanh(Whhht−1+Wxhxt+bh)=Whyht+by
问题: 梯度消失/爆炸
6.2 LSTM(长短期记忆网络)
遗忘门:
ft=σ(Wf⋅[ht−1,xt]+bf)
输入门:
it=σ(Wi⋅[ht−1,xt]+bi)
候选记忆单元:
C~t=tanh(WC⋅[ht−1,xt]+bC)
更新记忆单元:
Ct=ft⊙Ct−1+it⊙C~t
输出门:
otht=σ(Wo⋅[ht−1,xt]+bo)=ot⊙tanh(Ct)
6.3 GRU(门控循环单元)
简化版 LSTM:
更新门:
zt=σ(Wz⋅[ht−1,xt])
重置门:
rt=σ(Wr⋅[ht−1,xt])
候选隐藏状态:
h~t=tanh(W⋅[rt⊙ht−1,xt])
最终隐藏状态:
ht=(1−zt)⊙ht−1+zt⊙h~t
7.1 注意力机制
加性注意力:
score(ht,hˉs)=vTtanh(W1ht+W2hˉs)
点积注意力(更常用):
score(ht,hˉs)=htThˉs
注意力权重:
αts=∑s′exp(score(ht,hˉs′))exp(score(ht,hˉs))
上下文向量:
ct=s∑αtshˉs
7.2 自注意力(Self-Attention)
查询、键、值:
Q=XWQ,K=XWK,V=XWV
缩放点积注意力:
Attention(Q,K,V)=softmax(dkQKT)V
缩放因子 dk 防止梯度消失。
7.3 多头注意力(Multi-Head Attention)
headiMultiHead(Q,K,V)=Attention(QWiQ,KWiK,VWiV)=Concat(head1,…,headh)WO
7.4 位置编码(Positional Encoding)
PE(pos,2i)PE(pos,2i+1)=sin(100002i/dpos)=cos(100002i/dpos)
八、生成模型
8.1 自编码器(Autoencoder)
zx^L=fθ(x)(编码器)=gϕ(z)(解码器)=∥x−x^∥2
8.2 变分自编码器(VAE)
编码器输出: μ(x),σ(x)
重参数化技巧:
z=μ+σ⊙ϵ,ϵ∼N(0,I)
损失函数:
L=重建损失∥x−x^∥2+KL散度DKL(q(z∣x)∥p(z))
8.3 生成对抗网络(GAN)
生成器: G(z) 生成假样本
判别器: D(x) 判断真假
损失函数(min-max 博弈):
GminDmaxEx∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]
九、实用技巧
9.1 学习率调度
步进衰减:
ηt=η0⋅γ⌊t/T⌋
余弦退火:
ηt=ηmin+21(ηmax−ηmin)(1+cos(Ttπ))
9.2 数据增强
- 图像:旋转、翻转、裁剪、颜色抖动
- 文本:同义词替换、回译、随机插入/删除
- 音频:时间伸缩、音高变换、添加噪声
9.3 初始化技巧
Xavier 初始化(tanh/sigmoid):
W∼U(−nin+nout6,nin+nout6)
He 初始化(ReLU):
W∼N(0,nin2)
9.4 梯度裁剪
防止梯度爆炸:
g:={∥g∥θggif ∥g∥>θotherwise
十、评估指标
10.1 分类指标
准确率:
Accuracy=TP+TN+FP+FNTP+TN
精确率:
Precision=TP+FPTP
召回率:
Recall=TP+FNTP
F1 分数:
F1=2⋅Precision+RecallPrecision⋅Recall
10.2 回归指标
均方误差(MSE):
MSE=n1i=1∑n(yi−y^i)2
平均绝对误差(MAE):
MAE=n1i=1∑n∣yi−y^i∣
R² 分数:
R2=1−∑i(yi−yˉ)2∑i(yi−y^i)2
总结
本文梳理了深度学习的核心知识体系,从基础的神经网络到现代的 Transformer 架构。建议按以下路径复习:
- 基础巩固: 前向传播、反向传播、梯度下降
- 优化提升: Adam、正则化、Batch Normalization
- 架构演进: CNN → RNN/LSTM → Attention → Transformer
- 实战技巧: 学习率调度、数据增强、超参数调优
深度学习是理论与实践并重的领域,建议配合代码实现加深理解。
参考资源