打卡Day53
知识点:
1.对抗生成网络的思想:关注损失从何而来
2.生成器、判别器
3.nn.sequential容器:适合于按顺序运算的情况,简化前向传播写法
4.leakyReLU介绍:避免relu的神经元失活现象
ps:如果你学有余力,对于gan的损失函数的理解,建议去找找视频看看,如果只是用,没必要学
作业:对于心脏病数据集,对于病人这个不平衡的样本用GAN来学习并生成病人样本,观察不用GAN和用GAN的F1分数差异。
对抗生成网络(GAN,Generative Adversarial Network)是一种深度学习模型架构,由生成器(Generator)和判别器(Discriminator)两部分组成,通过两个模型相互对抗、博弈,以达到生成高质量数据样本的目的。
工作原理
生成器 :负责从随机噪声中生成逼真的数据样本,如图像、文本等。它类似于一个伪劣艺术家,试图通过学习训练数据的分布,生成能够以假乱真的作品。判别器 :负责判断给定的数据样本是来自真实训练数据还是生成器生成的假数据。它就像一个专业的艺术评论家,通过不断地审视作品,给出真伪判断。对抗过程 :训练过程中,生成器和判别器相互博弈。生成器不断尝试生成更逼真的样本以欺骗判别器,而判别器则不断学习如何更准确地识别真假样本。在这一过程中,生成器逐渐学习到训练数据的分布规律,生成的样本质量越来越高,判别器的判别能力也越来越强,最终达到纳什均衡,此时生成器生成的样本几乎可以以假乱真。
网络结构
生成器结构 :通常以随机噪声作为输入,经过一系列的线性变换、激活函数等操作,逐步将噪声转化为具有一定结构和特征的数据样本,常见的结构有全连接层、反卷积层、批量归一化层等。例如,DCGAN(Deep Convolutional GAN)中的生成器采用反卷积层逐步上采样,将低维噪声映射到高维图像空间。
判别器结构 :一般是一个卷积神经网络(CNN),用于接收数据样本并输出其为真实数据的概率值。它通过卷积层、池化层等提取样本的特征,并经过全连接层和激活函数(如 sigmoid)得到概率输出。判别器的设计需要考虑如何有效地捕捉数据样本的真实特征,以便准确地区分真实数据和生成数据。
训练过程
初始化 :随机初始化生成器和判别器的网络参数。训练判别器 :固定生成器的参数,使用真实数据和生成器生成的假数据训练判别器,通过优化损失函数(如交叉熵损失)来调整判别器的参数,使其能够更好地判断数据的真伪。
训练生成器 :固定判别器的参数,使用生成器生成的假数据训练生成器,通过优化损失函数(通常也是基于判别器对假数据的判断结果)来调整生成器的参数,使生成器生成的样本更有可能被误判为真实数据。
迭代交替训练 :重复上述训练判别器和生成器的过程,直到达到一定的训练轮数或生成器生成的样本质量达到预期。
应用领域
图像生成与编辑 :可以用于生成高质量的图像,如人物肖像、风景图等;还可以进行图像的风格转换、超分辨率重建、图像修复等图像编辑任务。
文本生成 :在自然语言处理领域,GAN 可以用于文本生成,如生成新闻报道、故事、诗歌等,也可以用于文本到文本的转换任务,如机器翻译、文本摘要等。
语音生成与合成 :能够生成逼真的语音信号,实现语音合成、语音转换等功能,在语音助手、语音识别等应用中具有潜在价值。
数据增强 :通过生成与真实数据分布相似的样本,为其他机器学习任务提供更多的训练数据,提高模型的性能和泛化能力,尤其在数据稀缺的情况下具有重要意义。
GAN 自提出以来,不断涌现出各种改进和变体,如 WGAN(Wasserstein GAN)、CGAN(Conditional GAN)、StyleGAN 等,这些改进在不同方面提升了 GAN 的性能和应用效果。