GAN
GAN(Generative Adversarial Network,生成对抗网络)是深度学习中一种非常重要的生成模型框架,核心思想是通过"对抗 "来学习生成逼真的数据。可以从直觉 → 原理 → 数学 → 训练 → 变体 → 应用,全链路理解。
一、直觉理解:两个"对手"的游戏
GAN 由两个神经网络组成:
生成器(Generator, G):负责"造假"(生成数据)
判别器(Discriminator, D):负责"鉴别真假"
可以类比为:
👉 造假者 vs 鉴定专家
过程是:
1.G 生成一张"假图片"
2.D 判断这张图是真的还是假的
3.D 变得更会识别假货
4.G 也不断改进,让假图越来越像真的
最终目标:
让生成的数据"以假乱真 ",连判别器都分不出来

二、核心思想
GAN = 用对抗训练,让模型学会数据分布
三、数学原理
GAN 的目标函数是一个极小极大博弈:

第一部分:真实数据

如果这是真的,你就应该说"这很真!"
D(x) 越接近 1 → 越好
log 是用来"放大奖励"的(不用太纠结)
第二部分:生成数据

如果这是假的,你就应该说"这是假的!"
D(G(z)) 越接近 0 → 越好
三、判别器在干嘛?(max)
它的目标是:
真实数据 → D(x) = 1
假数据 → D(G(z)) = 0
你可以理解为:
D 在当一个"特别严格的鉴定专家"
四、生成器在干嘛?(min)
生成器在最小化这个公式
它只能影响这一项:

关键转化
生成器其实是在干:
让 D(G(z)) 变大(接近1)
也就是:"我生成的假数据,你必须说它是真的!"
四、训练过程
训练是交替进行的:
Step 1:训练判别器 D
输入真实数据(标签=1)
输入生成数据(标签=0)
更新 D,让它更会分辨
Step 2:训练生成器 G
生成假数据
通过 D 判断
反向传播更新 G
👉 注意:此时 D 不更新!
Step 3:循环
不断重复:
训练 D → 训练 G → 训练 D → 训练 G
五、GAN 为什么有效?
核心原因:
👉 隐式学习数据分布
传统方法:
显式建模概率分布(很难)
GAN:
不建模分布
直接学"如何生成像真的"
六、收敛时的理想状态
理论上:
判别器无法区分真假
𝐷(𝑥)=0.5
👉 表示:
生成数据分布 ≈ 真实数据分布
七、常见问题
GAN 很强,但训练非常"脆弱":
1️⃣ 不稳定
loss 不收敛
模型崩溃
2️⃣ 模式崩溃(Mode Collapse)
只生成一种样本
👉 比如:只会生成同一张脸
3️⃣ 梯度消失
D 太强 → G 学不到东西
八、GAN 的应用
🎨 图像生成
人脸生成(StyleGAN)
AI绘画
🧠 图像处理
超分辨率(SRGAN)
去噪、修复
🎭 风格迁移
照片 → 梵高风格
🎥 视频 / 动画
DeepFake
🧬 医疗
医学影像增强
GNN
(Graph Neural Network,图神经网络)
生活中的图结构:
社交网络(人 ↔ 人)
推荐系统(用户 ↔ 商品)
分子结构(原子 ↔ 键)
知识图谱(实体 ↔ 关系)
GNN 的核心思想
每个节点通过"邻居"来更新自己
假设你是一个节点:
你会做三件事:
1️⃣ 收集邻居信息
"我的朋友都是什么样的人?"
2️⃣ 聚合信息(Aggregation)
比如:平均、求和、加权
3️⃣ 更新自己(Update)
"结合邻居,我变成一个新的我"
数学表达


总结:"我把邻居的特征拿过来,加权,然后更新自己"
三种经典 GNN 模型
1️⃣ GCN(Graph Convolutional Network)

2️⃣ GraphSAGE
不是用所有邻居,而是"采样邻居"
GAT(Graph Attention Network)


可以理解为每一层都是同一个节点,只不过是每层都在不断更新邻居,更新节点的表示,并逐层融合更远的信息。

第 k+1 层,依赖第 k 层的结果
意味着:
第1层用原始特征
第2层用第1层的结果
第3层用第2层的结果