生成对抗网络GAN——学习笔记

时间:2024-10-11 13:24:15

经过大量阅读资料和博客,对GAN的认识和学习做一个记录。个人粗浅的认识,不管是什么模型都离不开最基础的神经网络。主要借鉴的博客内容如下

新型的神经网络模型,从CNN到BERT都有介绍。_最新的神经网络模型-****博客

生成对抗网络——GAN(代码+理解)-****博客

生成对抗网络(GAN)入门_gan对抗生成网络-****博客

深度学习:GAN 对抗网络原理详细解析(零基础必看)_gan网络-****博客

生成对抗网络(GAN) - 知乎 (zhihu.com)

适合小白学习的GAN(生成对抗网络)算法超详细解读_gan网络-****博客

神经网络分类总结_神经网络的分类-****博客

GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)-****博客

1.原理

GAN(生成对抗网络)是一种神经网络架构,是博弈论和机器学习相结合的创新性产物,它的设计灵感来自于博弈论的思想,经典的“纳什均衡”。具体参考一篇讲得很详细的博客一文解读“纳什均衡”(Nash Equilibrium)理论 - 知乎 (zhihu.com)

这种网络由两个关键组件组成:生成器(Generator)和判别器(Discriminator)

生成器的任务是从随机噪声中生成与真实数据相似的合成样本,

判别器负责辨别给定的样本是真实数据还是生成器产生的人工样本

这两个组件通过反复对抗性的训练相互影响和提升。

在训练过程中,生成器努力生成越来越逼真的样本,而判别器则不断提高辨别真实与生成样本的能力。这种博弈过程推动着两者的不断进步,直到最终生成器生成的样本足够逼真,使得判别器无法有效地区分真实和生成的样本。这就达到了一个状态,即生成器能够以惊人的逼真度产生伪造的真实样本。

2.结构

关于生成对抗网络的结构和形式参考上面的几篇博客。其中有一个博主讲的很简洁清晰,框架如下图所示

其中生成器和鉴别器内部都是神经网络

3.GAN网络的训练

GAN对抗网络的训练过程通常是两个网络单独且交替训练:先训练识别网络,再训练生成网络,再训练识别网络,如此反复,直到达到纳什均衡。涉及到两个核心的问题神经网络的架构和损失函数 (loss function)。神经网络架构和损失函数的定义是能够实现优化(训练)的两个基本要素。

在损失函数这里有一个重要概念:交叉熵

啥也不会照样看懂交叉熵损失函数_用交叉熵计算经验风险-****博客

有两个公式

4.实现过程

可以参考这个博主的模型搭建代码

生成对抗网络(GAN)入门_gan对抗生成网络-****博客

5.实际应用案例

GAN的典型应用是用于图像超分上,借鉴如下博客内容可以按照博主的讲解一步一步尝试自己搭建环境并尝试运行已有的超分模型,适合小白入门

超分辨重建——SRGAN网络训练自己数据集与推理测试(详细图文教程)_srgan训练-****博客