一文读懂对抗生成网络的3种模型

article/2025/9/24 18:14:49

https://www.toutiao.com/i6635851641293636109/

 

2018-12-17 14:53:28

一文读懂对抗生成网络的3种模型

 

 

基于对抗生成网络技术的在线工具edges2cats,

可以为简笔画涂色

前言

在GAN系列课程中分别讲解了对抗生成网络的三种模型,从Goodfellow最初提出的原始的对抗生成网络,到改进型的DC GAN,再到解决了原始GAN存在问题,从而生成效果更好的WGAN。

生成模型不同于分类聚类等传统的机器学习任务,要做的是从无序中生成有序,从输入的随机数出发,生成有意义的数据,例如图片,文字,时间序列等。课堂中讨论的生成模型主要应用在计算机图形学中。

 

生成模型本身可以分成三类,一类是基于概率的,比如用传统统计非线性ICA或变分自编码器(VAE),第二类是自动化生成的,主要是使用RNN产生的图片,或者写出的诗,而GAN这一类是基于对抗性取样(adversial sample)。

 

一、传统GAN模型

 

GAN(Generative Adversarial Networks对抗生成网络)模型使用一组真实的图片作为输入,试图生成能够以假乱真的类似图片。方法是先由生成器随机的生成图片,之后由判别器判定图片是否为真实的。由于在所有的GAN模型,都可以分为生成器和判别器两个部分,训练的过程是先训练生成器,等到训练一定时间后再固定生成器训练判别器,这使得GAN不同与传统的机器学习的训练过程,更加不稳定,而这也是GAN模型之后的改进版要优化的部分。

 

一文读懂对抗生成网络的3种模型

 

 

在传统的GAN模型中,图像的处理使用的是全连接层,训练的方法是随机梯度下降,优化的目标是真实数据的概念分布与生成数据概念分布的差距。根据理论推导,在无限的训练时间,无穷的模型容量,以及可以直接修改生成器的概率分布的假设时,模型一点可以训练达到最优解。但实际中,上述的假设都不满足,这也成了之后GAN模型改进的基础。

 

 

一文读懂对抗生成网络的3种模型

 

 

相比VAE这样的生成模型,GAN生成的图片不会是模糊的,会有清晰的边缘,但可能会出现塌缩,即生成器生成的图像都是类似的,不具有多样性。从理论的角度来看,GAN模型提出了一种全新的生成模型的范式,不依赖马尔可夫链这样的类线性模型,可以捕捉到全局的关联,但无法显式的导出生成器的概率分布。

 

二、改进版:DCGAN模型

 

接下来看看GAN的改进版DCGAN(Deep Convolutional Generative Adversarial Networks 深度卷积对抗生成网络),这篇文章讲原来判别器和生成器中的全连接层的结构改为了更适合处理图像的卷积层和反卷积层,引入了批量正则化,将训练的策略改为了Adam,在像素间进行了插值,同时进行了GAN模型标配的黑科技向量运算,即通过对生成器所需的随机分布进行向量运行,控制生成的图像,例如下图所示,通过戴眼镜的男生减去不戴眼镜的男生,再加上不戴眼镜的女生,生成出戴眼镜的女生。

 

 

一文读懂对抗生成网络的3种模型

 

 

 

为了加速训练,DCGAN还改变了优化目标,对于判别器和生成器,逐个对于卷积层分别进行优化,同时对判别器和生成器单独使用mini batch的方式,使用一组图像进行训练,从而隐式的对缺乏多样性的生成结果予以惩罚。

 

DCGAN还引入了一些小技巧,例如在损失函数中加入之前项的均值,例如Label smooth,将判别器判定的较小概率的值,例如0.1等价于0,从而避免了判别器的过渡训练,由于最初生成器的训练要难于判别器,Label smooth可以看成是对判别器加上了early stopping(提早停止)的正则化操作。

 

DCGAN的另一个创新点是通过inception这样成熟的分类器去判别生成图片的质量,从而不必由人类去判定。如果模型生成的图片是类似真实图片的,那通过inception的分类器,总会被分为一类,而如果模型生成的图片是四不像,那分类生成的标签就会有较大的不确定性,即较大的相对信息熵。同时为了评价网络生成图片的多样性,DCGAN的作者提出以一个可以计量的标准,即通过比较真实图片与生成图片的差异(计算KL散度的积分)来完成。

 

一文读懂对抗生成网络的3种模型

 

 

DCGAN 生成器的一种架构

 

有了新生成的数据,就可以用来做半监督学习,即交新增的生成数据当成是带标签的,从而提升训练集的数量。在做半监督学习时,需要修改分类器的损失函数,将所有生成图片看成新的一类,这里新加项类似与GAN模型待优化的函数。

 

DCGAN生成的图片缺乏全局的统一性,可能生成的猫有头有耳朵,但是其位置是不对的,可能耳朵长到了腿上。

 

三、WGAN模型

 

一文读懂对抗生成网络的3种模型

 

 

 

接着说WGAN(Wasserstein GAN)这个偏数理的模型,该文章先指出了原始GAN模型的缺陷,通过将训练的目标函数的拆分,找出其中内部相互矛盾的方向,指出了为什么GAN的训练是不稳定的。通过导入Wasserstein 距离,通过向判别器引入连续噪音,对判别器的概念分布进行钝化(smooth),同时使用模拟退火的思路,随着训练降低引入的随机性。WGAN相比DCGAN,训练的过程更为稳定,生成的图像更为清晰。

 

四、小结

 

总结一下,GAN是一类脱胎于监督学习的生成模型,可以用在特征提取的评价,半监督学习,也可以用在强化学习的模拟环境构建中。GAN的发展很快,例如基于GAN的风格迁移让机器具有了想象力,GAN中相互博弈的猫鼠游戏类似于找到博弈论中的纳什均衡,而这在理论上属于一个还没有解决的开放问题。

本文为郭瑞东老师关于《深入浅出GAN-原理与应用》的学习心得

原创: 郭瑞东 集智AI学园


http://chatgpt.dhexx.cn/article/41ZuqveX.shtml

相关文章

对抗生成网络(GAN)详解

目录 前言 目标函数 原理 训练 给定生成器,训练判别器 给定判别器,训练生成器 总结 前言 之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但是这种方法…

对抗生成网络(GAN)简介及生成数字实战

一、简介 生成对抗网络(Generative Adversarial Netword,简称GAN),是一种生成式机器学习模型,该方法由伊恩古德费洛等人于2014年提出,曾被称为“机器学习这二十年来最酷的想法”,可以用来创造虚…

对抗生成网络(Generative Adversarial Net)

好久没有更新博客了,但似乎我每次更新博客的时候都这么说(泪)。最近对生活有了一些新的体会,工作上面,新的环境总算是适应了,知道了如何摆正工作和生活之间的关系,如何能在有效率工作的同时还能…

【PaddleOCR-det-finetune】一:基于PPOCRv3的det检测模型finetune训练

文章目录 基本流程详细步骤打标签,构建自己的数据集下载PPOCRv3训练模型修改超参数,训练自己数据集启动训练导出模型 测试 相关参考手册在PaddleOCR项目工程中的位置: det模型训练和微调:PaddleOCR\doc\doc_ch\PPOCRv3_det_train.…

模型微调(Finetune)

参考:https://zhuanlan.zhihu.com/p/35890660 ppt下载地址:https://github.com/jiangzhubo/What-is-Fine-tuning 一.什么是模型微调 给定预训练模型(Pre_trained model),基于模型进行微调(Fine Tune)。相…

fine-tuning

微调(fine-tuning) 在平时的训练中,我们通常很难拿到大量的数据,并且由于大量的数据,如果一旦有调整,重新训练网络是十分复杂的,而且参数不好调整,数量也不够,所以我们可…

大模型的三大法宝:Finetune, Prompt Engineering, Reward

编者按:基于基础通用模型构建领域或企业特有模型是目前趋势。本文简明介绍了最大化挖掘语言模型潜力的三大法宝——Finetune, Prompt Engineering和RLHF——的基本概念,并指出了大模型微调面临的工具层面的挑战。 以下是译文,Enjoy! 作者 | B…

RCNN网络源码解读(Ⅲ) --- finetune训练过程

目录 0.回顾 1.finetune二分类代码解释(finetune.py) 1.1 load_data(定义获取数据的方法) 1.2 CustomFineTuneDataset类 1.3 custom_batch_sampler类( custom_batch_sampler.py) 1.4 训练train_mod…

FinSH

finSH介绍 FinSH 是 RT-Thread 的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信。 命令执行过程 功能: 支持鉴权,可在系统配置中选择打开/关闭。(TODO…

从统一视角看各类高效finetune方法

每天给你送来NLP技术干货! 来自:圆圆的算法笔记 随着预训练模型参数量越来越大,迁移学习的成本越来越高,parameter-efficient tuning成为一个热点研究方向。在以前我们在下游任务使用预训练大模型,一般需要finetune模型…

finetune

finetune的含义是获取预训练好的网络的部分结构和权重,与自己新增的网络部分一起训练。下面介绍几种finetune的方法。 完整代码:https://github.com/toyow/learn_tensorflow/tree/master/finetune 一,如何恢复预训练的网络 方法一&#xf…

11.2 模型finetune

一、Transform Learning 与 Model Finetune 二、pytorch中的Finetune 一、Transfer Learning 与 Model Finetune 1. 什么是Transfer Learning? 迁移学习是机器学习的一个分支,主要研究源域的知识如何应用到目标域当中。迁移学习是一个很大的概念。 怎么理解源域…

飞桨深度学习学院零基础深度学习7日入门-CV疫情特辑学习笔记(四)DAY03 车牌识别

本课分为理论和实战两个部分 理论:卷积神经网络 1.思考全连接神经网络的问题 一般来收机器学习模型实践分为三个步骤,(1)建立模型 (2)选择损失函数 (3)参数调整学习 1.1 模型结构不…

unity sdk(android)-友盟推送SDK接入

注意:一开始想接友盟Unity的SDk,但是导入后缺少各种jar,所以最后还是接了android的,demo文档齐全 官方文档:开发者中心 按照官方文档对接即可, 接入流程 1、项目中com.android.tools.build:gradle配置&…

友盟推送学习

一、首次使用U_Push 1、首先注册友盟账号,进入工作台,选择产品U_Push。 2、创建应用 3、在自己的项目中自动集成SDK 开发环境要求: Android Studio 3.0以上 Android minSdkVersion: 14 Cradle: 4.4以上 在根目录build.gradle中添加mav…

Android 学习之如何集成友盟推送

我是利用Android studio 新建一个空的Android项目。 步骤一 导入第三方库 1.切换Android项目状态为Project状态 2.在main文件下新建 jniLibs文件夹(用来导入PushSDK项目下lib文件中的so文件) 3.在libs文件夹下添加友盟PuskSDK中的 jar 文件&#xff…

用PaddlePaddle(飞浆)实现车牌识别

项目描述:本次实践是一个多分类任务,需要将照片中的每个字符分别进行识别,完成车牌的识别 实践平台:百度AI实训平台-AI Studio、PaddlePaddle1.8.0 动态图 数据集介绍(自己去网上下载车牌识别数据集) 数据…

深度学习(五) CNN卷积神经网络

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 CNN卷积神经网络 前言一、CNN是什么?二、为什么要使用CNN?三、CNN的结构1.图片的结构2.卷积层1.感受野(Receptive Field)2.卷积…

CNN网络实现手写数字(MNIST)识别 代码分析

CNN网络实现手写数字(MNIST)识别 代码分析(自学用) Github代码源文件 本文是学习了使用Pytorch框架的CNN网络实现手写数字(MNIST)识别 #导入需要的包 import numpy as np //第三方库,用于进行科学计算 import torc…

Android删除chartty证书,C/C++知识点之android应用安全分析

本文主要向大家介绍了C/C知识点之android应用安全分析,通过具体的内容向大家展示,希望对大家学习C/C知识点有所帮助。 应用名 :OKEx(OKEx-android.apk) 包名 :com.okinc.okex MD5 :1ffbd328d13e91b661592cdf58516bd2 版…