文章目录

  • 前言
  • 一、什么是GAN网络?
  • 二、GAN网络的优缺点
  • 总结

前言

  这一节主要介绍什么是GAN网络,边学习边记录,总结了一些我认为比较重要的知识点,有不对的地方欢迎大家指正~


一、什么是GAN网络?

  GAN全称为Generative Adversarial Network,翻译过来就是生成对抗网络,是一个博弈过程。因此其包含有两个模型,一个是生成模型(generative model),一个是判别模型(discriminative model)生成模型的任务是生成看起来自然真实的、和原始数据相似的实例判别模型的任务是判断给定的实例看起来是自然真实的还是人为伪造的(真实实例来源于数据集,伪造实例来源于生成模型)。

  采用通俗的例子来进行解释:“一个造假团伙,试图生产和使用假币”,而判别模型像“检测假币的警察”。生成器(generator)试图欺骗判别器(discriminator),判别器则努力不被生成器欺骗。模型经过交替优化训练,两种模型都能得到提升,但最终我们要得到的是效果提升到很高很好的生成模型(造假团伙),这个生成模型(造假团伙)所生成的产品能达到真假难分的地步。同时,如我们所想,判别模型也提升到了很高的水平。

  GAN网络整体示意如下:

  从图中可以看到,GAN网络有Generator和Discriminator两个网络。在训练过程中,生成器在生成逼真数据方面逐渐变强,而判别器在辨别这些数据的能力上逐渐变强。当判别器不再能够区分真实数据和伪造数据时,训练过程达到平衡

  同时,需要提一下的是,G网络和F网络时同时又单独交替迭代进行训练的

  交替迭代训练中,先训练判别器网络,固定生成器网络。假设已有生成器网络(当然性能不是最好的),给它一堆随机向量,就会生成一堆假样本。此时因为生成器性能不是很好,导致生成的假样本不是太好,很容易被判别器网络判别为假。如今我们有了这个假样本集,而真样本集是一直都有的,我们再人为给真、假样本集打上真假标签,比如真样本集的 label 都为1,而假样本集的 label 都为0。现在,有了两个经过标记的真假样本集,对于判别器网络来说,问题就变成了有监督的二分类问题了,将两个样本集直接送进判别器网络中进行训练即可。我们希望训练完的判别器判别真样本时,输出尽可能接近1,判别假样本时,输出尽可能接近0。

  判别器网络训练好了,接下来训练生成器网络,固定判别器网络。对于生成器网络,我们希望它能生成尽可能逼真的样本。但是,这个“逼真”要怎样来进行量化评价呢?到底有多逼真呢?我们可以借助判别器网络。生成器网络生成的样本的真实程度只能通过判别器才能知道,所以在训练生成器网络时,需要联合判别器网络,生成器网络才能真正训练。所以,生成器网络的训练其实是对“生成器-判别器串接网络”的训练。如上图所示,如果只使用生成器网络,那么就无法得到误差,也就无法训练。

  同样重要的是,我们要知道,GAN网络的生成器网络的训练过程中,不需要真样本集

  首先,给生成器一堆随机向量,生成器再次生成一堆假样本。此时,要注意的是,要把这些假样本的 label 设为1!没错,就是1!即认为这些假样本在生成器网络训练过程中是真样本,因为此时是通过判别器来得到误差的,而误差反向传播的目的是使得生成器生成的假样本逐渐逼近为真样本当假样本是假的,label 却为1,而判别器判别假样本的输出接近于0,所以会形成很大的误差,误差反向传播,对生成器网络的参数进行大更新;反之,如果生成器生成的假样本足够真实,label 为1时,判别器判别假样本的输出就会接近1,所以误差很小,误差反向传播,生成器网络的参数只是微调,趋于稳定,这就完成了假样本向真样本逐渐逼近的过程,起到了迷惑判别器网络的目的。因此可以看出,只需要生成器网络自身生成的假样本集,因为有判别器网络这位“老师”,它会告诉生成器网络生成的样本的逼真程度。

综上,GAN 设计的巧妙之处,在于假样本在交替迭代训练过程中的真假变换,这也是博弈得以进行的关键之处。

二、GAN网络的优缺点

优点:

  • 能更好建模数据分布(图像更锐利、清晰)
  • 理论上,GANs 能训练任何一种生成器网络。其他的框架需要生成器网络有一些特定的函数形式,比如输出层是高斯的。
  • 无需利用马尔科夫链反复采样,无需在学习过程中进行推断,没有复杂的变分下界,避开近似计算棘手的概率的难题。

缺点:

  • 难训练,不稳定。生成器和判别器之间需要很好的同步,但是在实际训练中很容易D收敛,G发散。D/G 的训练需要精心的设计。
  • 模式缺失(Mode Collapse)问题。GANs的学习过程可能出现模式缺失,生成器开始退化,总是生成同样的样本点,无法继续学习。

总结

  GAN网络的学习资料有很多,也有很多学者在不断优化GAN网络生成一些其他GAN网络,大家如果还有什么疑惑,可以在评论区进行评论或者在网上进行查阅~

  参考网址如下:
  生成对抗网络(GAN)
  《大白话讲解 GAN 的训练机制(for 初学者)》
  生成对抗网络 – Generative Adversarial Networks | GAN

异常检测 and GAN网络(1)相关推荐

  1. 使用GAN进行异常检测——可以进行网络流量的自学习哇,哥哥,人家是半监督,无监督的话,还是要VAE,SAE。...

    实验了效果,下面的还是图像的异常检测居多. https://github.com/LeeDoYup/AnoGAN https://github.com/tkwoo/anogan-keras 看了下,本 ...

  2. 异常检测 | 基于Siamese网络学习距离函数来定位视频中的异常

    关于<Learning a distance function with a Siamese network to localize anomalies in videos>论文学习 这篇 ...

  3. 【轩说AI】基于GAN模型的异常检测

    文章目录 基于GAN模型的异常检测 AnoGAN 基本思想 工作流程 在迭代z时的损失函数 问题 Conditional GAN 简单回顾. Info GAN 基本思想 网络结构 实验结果 VAE-G ...

  4. 【论文分享】MAD-GAN :基于生成对抗网络的时间序列数据多元异常检测

    2019年ICANN文章 MAD-GAN: Multivariate Anomaly Detection for Time Series Data with Generative Adversaria ...

  5. 网络流量异常检测综述

    摘 要 随着网络攻击的复杂化.自动化.智能化水平的不断提高,网络中不断涌现出新的攻击类型,这些未曾见过的新攻击给基于特征码的网络攻击检测和响应带来了极大挑战.网络流量异常检测通过对网络流量进行分析,可 ...

  6. 半监督异常检测(Anomaly Detection)的研究线

    半监督异常检测(Anomaly Detection)的研究线 在假设数据集中大多数实例都是正常的前提下,半监督异常检测方法根据一个给定的正常训练数据集创建一个表示正常行为的模型,然后检测由学习模型生成 ...

  7. 最新研究总结:工业图像异常检测

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 异常检测,GAN如何gan ? 作者丨小小理工男@知乎 来源丨https://zh ...

  8. python进行异常检测工具_异常检测以及开源工具简介

    图1 异常检测 什么是异常点 异常点是指其值与其他值存在显著不同的数据点.以时间序列为例,时间序列中的异常点,其时间超过了该序列的正常范围,而不考虑数据点之间的时间关系.换句话说,即使将所有数据点都视 ...

  9. AIOps中异常检测的简单应用

    女主宣言 异常检测是AIOps领域中最为常见也是十分重要的一个问题,它将直接影响到报警产生以及后续所有自愈动作的开展.异常检测作为运维领域的通用场景,已经存在很多的方法模型可以使用.但是各个方法之间的 ...

最新文章

  1. C#静态构造函数总结
  2. 小学计算机教室管理制度范本,《中小学微机室规章制度》.doc
  3. linux 路由添加
  4. Jzoj5421 嘟嘟噜
  5. mybatis实现模糊查询时%%的处理
  6. 书籍-分布式系统常用技术及案例分析
  7. 软件质量保证与测试 问答题
  8. Lesson 6: CronTrigger
  9. mysql提示表不存在的解决方法error: 1146: Table doesn‘t exist
  10. python查找excel中重复数据_python中查找excel某一列的重复数据 剔除之后打印
  11. tm影像辐射定标_ENVI中TM的辐射定标和大气校正
  12. 计算机怎么显示正确,电脑显示器怎么正确设置
  13. 测试人员日常基本工作流程
  14. discuz 论坛配置 QQ/163 网易邮箱
  15. gsoap linux中文乱码,gsoap中文乱码及内存清理等问题的解决方案
  16. 深信服邮件服务器配置,使用深信服设备实现邮件服务器高可用
  17. win7 install solution for intel SKL and BSW platform
  18. 华为手机系统服务器在哪里,华为云服务这软件在哪?
  19. java进阶(9)——JVM jar包加载顺序
  20. php if为空那么,PHP中判断数组是否为空的方法

热门文章

  1. 特步CIO:企业信息化建设的“解放战争”
  2. React-native 路由的使用 导航栏
  3. 时间序列分析ARMA模型原理及Python statsmodels实践(上)
  4. 王燕《应用时间序列分析》学习笔记2
  5. Redis持久化RDB/AOF详解与实践
  6. Linux下安装EPSON L310打印机驱动
  7. 关于C语言中,while循环的结束
  8. 常微分方程中混合边界及狄利克雷边界条件下的Shooting method以及Finite difference method
  9. 火狐浏览器 : 获取安卓系统新版火狐浏览器(fenix).2021-02-19
  10. 如何关闭vivado的Jtag自动检测