楼层: 首页/ 算法与AI/ 深度学习
深

深度学习

Deep Learning · 多层神经元叠起来的黑箱

从这里开始,模型开始"自己学特征",不再需要人手写规则。核心就是:很多层线性变换 + 非线性激活,用反向传播调参数。

上一模块的模型还得人手挑特征,这一模块让模型自己学特征。为什么需要?图片里"眼睛"这种特征,人写规则写不出来。学完你懂神经网络、CNN、RNN 和 Transformer 各自长什么样。下一模块看它们堆到千亿参数会变成什么。

本模块要学什么(按这个顺序学)
神经网络+反向传播 → 激活函数 → CNN卷积 → RNN/LSTM → Transformer自注意力

4.6 神经网络与反向传播

Neural Network & Backpropagation

想是什么

一层神经元:z = Wx + b(模块二的矩阵乘法),a = σ(z)(非线性激活)。多层叠起来:输入层 → 隐藏层 ×N → 输出层。

为什么要非线性激活?没有它,多少层叠起来还是一次线性变换,等于一层。ReLU = max(0, x) 是最常用的。

反向传播:前向算出 loss,从后往前用链式法则逐层求每个 W、b 的梯度,再梯度下降更新。这就是"训练"的全部。

说白了就是:考完试老师从最后一道大题开始往前改,改到哪一步,就知道这一步哪个参数该往哪调、调多少——几百万个参数就这么挨个传回去,不用从头算一遍。

例:两层网络,一次前向+一次反传在干嘛?
x → W₁,b₁ → a₁ → W₂,b₂ → ŷ,loss = (y−ŷ)²。
解:前向:算 ŷ 和 loss。反传:先算 ∂loss/∂W₂,再用链式法则乘 ∂a₁/∂z₁ 传回去算 ∂loss/∂W₁。参数越多,链式法则越长,但原理就是模块二那一套。
记
小结

① 神经网络=多层(Wx+b)+激活。② 反向传播=链式法则逐层求梯度。③ 激活函数提供非线性,否则多层白搭。

4.7 CNN 卷积神经网络

Convolutional Neural Network · 滑动窗口抓局部特征

想是什么

卷积核(Kernel):一个小窗口在图片上滑动,每滑到一个位置就点乘求和,输出一张"特征图"。一个核抓边缘,一个核抓纹理,叠起来抓眼睛、鼻子。

池化(Pooling):把特征图缩小(最大池化取局部最大值),降参数量、抗位移。

为什么适合图像:图像是网格数据,局部相关(相邻像素是邻居),卷积核正好抓局部。

记
小结

① 卷积核=滑动窗口提局部特征。② 池化=压缩降维。③ 人脸识别、医学影像、自动驾驶的主力架构。

4.8 RNN 循环神经网络

Recurrent Neural Network · 带记忆的序列模型

想是什么

序列数据:句子、语音、股票——有先后顺序。CNN 不认先后,RNN 给每个时间步传一个"隐藏状态 h",像人脑的短期记忆。

问题:普通 RNN 记不住很久以前的事(长依赖消失)。LSTM / GRU 加了"门控",决定记什么、忘什么,解决长依赖。

记
小结

① RNN=隐藏状态沿时间传递记忆。② LSTM/GRU 解决长依赖。③ 语音识别、机器翻译、时间序列的经典架构——但现在正被 Transformer 取代。

4.9 Transformer 与自注意力

Transformer & Attention · 每个词看其他词有多重要

想是什么

自注意力:句子里每个词都要问"我跟其他每个词啥关系?"用三个向量:Q(我在找什么)、K(我有什么)、V(我给什么内容)。

说白了就是:开一场会,每个人手里举一块写着"我要找什么(Q)、我有什么(K)、我能提供什么(V)"的牌子,两两对一对眼神,跟自己最相关的人就多听他说两句。

相似度 = QKT,softmax 归一化成权重,乘 V 加权求和:

Attention(Q,K,V) = softmax(QKT / √dk)V

√dk 是缩放因子,防止点积太大把 softmax 顶到饱和区、梯度消失。

多头注意力:多组 Q/K/V 并行,各自关注不同关系(一个看语法、一个看指代)。

位置编码:注意力本身不认顺序,得额外注入"这是第几个词"。

最大革命:所有词并行算(RNN 得一步步来),才能堆到几千亿参数、喂几万亿 token。

例:"它咬了猫,因为它很凶"——第二个"它"指谁?
自注意力怎么决定?
解:第二个"它"的 Q 去和所有词的 K 算相似度,发现"狼"的 K 跟它最匹配(前面语境"它咬了猫"),于是权重落在"狼"上,V 就取狼的信息。这就是 BERT/GPT 理解指代的方式。
记
小结

① Q/K/V 三件套,softmax(QKᵀ/√dₖ)V。② 多头并行抓不同关系。③ 位置编码补顺序,并行训练是革命。

4.12 经典 CNN 网络史与迁移学习

LeNet → AlexNet → VGG → ResNet · 深度怎么一步步堆上去的

想引子与大白话

引子:4.7 讲了卷积和池化怎么工作。但从 LeNet 到 ResNet,人类花了 20 年才把网络堆到 152 层——每一步都在解决上一代的"训不动"。

① LeNet-5(1998):Yann LeCun 拿来识别手写邮编。7 层,卷积+池化+全连接。CNN 的开山鼻祖。

② AlexNet(2012):ImageNet 大赛一战成名,把错误率从 26% 压到 15%。三件大事:用 ReLU 替代 Sigmoid(治梯度消失)、Dropout 防过拟合、GPU 并行训练。深度学习元年。

③ VGG(2014):全部用 3×3 小卷积核堆深。证明"小堆大"比大核有效——两个 3×3 感受野等于一个 5×5,但参数更少、非线性更多。

④ GoogLeNet(2014):Inception 模块,同一层并行用 1×1、3×3、5×5 卷积再拼起来,让网络自己选用多大核。

⑤ ResNet(2015):残差连接 y = F(x) + x。给梯度一条"高速公路"直接跳回去,第一次把网络做到 152 层还能训。今天所有深度网络(包括 Transformer)都用残差。

⑥ DenseNet:每一层跟前面所有层直连,特征复用。参数更省,但内存爆。

例:为什么 ResNet 能训 152 层而普通网络 20 层就退化?
普通网络堆深后,训练误差反而上升。
解:普通网络要学"完整映射 H(x)",堆深了难。ResNet 让它学残差 F(x)=H(x)−x,学个恒等映射(F=0)就行。梯度从加法那一路直接传回去,不经过那一长串连乘,消失问题缓解。这就是"短路连接"的威力。
迁移学习

拿 ImageNet 上预训练好的 ResNet,冻住前面卷积层(它们学会了边缘/纹理这些通用特征),只把最后全连接层换成你的类别数,用自己的数据微调。小数据集也能训出好用的模型,省几万张图。

选型

小任务手机端→MobileNet;精度优先→ResNet/ConvNeXt;特征提取骨干。预训练权重直接用,别从头训。

记
小结

① AlexNet 用 ReLU+Dropout+GPU 开启深度学习。② VGG 小核堆深。③ ResNet 残差连接让百层可训。④ 迁移学习=用预训练骨干+换头微调。

4.13 生成模型:VAE / GAN / Diffusion

Generative Models · 教机器自己造一张图

想引子与大白话

引子:分类模型学"这是猫还是狗";生成模型学"怎么造一只猫"。从 VAE 到 GAN 到 Diffusion,这条线就是今天 Midjourney、Sora、Stable Diffusion 的祖宗。

① VAE(变分自编码器):把图片压成一个概率分布(均值+方差),再从分布采样解码回图片。学到的隐空间连续——两点之间插值能平滑变形。缺点:生成图偏模糊。

② GAN(生成对抗网络,2014):两个网络对着干:生成器造假图,判别器辨真假。生成器拼命骗判别器,判别器拼命识破,两者博弈一起进化。Goodfellow 提出,第一次生成清晰逼真人脸。缺点:训练不稳(模式崩溃)。

③ Diffusion Model(扩散模型,2020+):训练时给图一步步加噪声直到纯噪声,再训练网络一步步去噪还原。生成时从纯噪声开始迭代去噪,"画"出一张新图。Stable Diffusion / Midjourney / Sora 全是它。比 GAN 稳、质量高、好并行训练。

例:Diffusion 怎么从一团噪声"画"出猫?
前向加噪、反向去噪。
解:训练阶段:真图 x₀ → 加噪 t 步 → 纯噪声 xT,学一个网络预测每步加了什么噪。生成阶段:从随机噪声 xT 开始,用训练好的网络一步步减掉一点噪,T 步后得到 x₀——一张全新的猫。本质是学了一个"从噪声到数据"的逆过程。
技术里

VAE 做隐空间插值/压缩;GAN 做人脸生成/超分;Diffusion 做文生图、视频生成、语音合成。

和 LLM

大模型也是生成模型(自回归生成 token);多模态把 Diffusion 和 LLM 拼起来——LLM 理解文字,Diffusion 画图。

记
小结

① VAE 学隐空间分布,图偏模糊。② GAN 生成器 vs 判别器博弈,清晰但不稳。③ Diffusion 学去噪,今天文生图/视频的主力。

费曼学习法:讲给别人听

① 用自己的话解释:把反向传播讲成"考试完了从后往前查错"的故事。

② 举个反例 / 生活例子:反例——为什么没有非线性激活,叠 100 层也等于 1 层?

③ 哪里还说不清:Q/K/V 三个向量到底各代表什么、√dk 为什么要除,哪一步还含糊?