WDK李宏毅学习笔记第十四周01_GAN

2024-02-18 07:32

本文主要是介绍WDK李宏毅学习笔记第十四周01_GAN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Generative Adversarial Network(GAN)

文章目录

  • Generative Adversarial Network(GAN)
  • 摘要
  • 1、Basic Idea of GAN
    • 1.1 Generation(生成)
    • 1.2 Discriminator
    • 1.3 Generation和Discriminator的关系
    • 1.4 Algorithm
  • 2、GAN as structured learning
  • 3、Can Generator learn by itself?
  • 4、 Can Discriminator generate?
  • 方法
  • 结论


摘要

我们在解决某些问题,training神经网络时,往往需要全面的训练数据才可以得到好的model,而训练数据往往是珍贵的难获取的,在训练数据不够全面却没法获取更多的时候,我们就需要machine自己产生训练数据,而怎么产生训练数据,这就是这章要讲的。Generative Adversarial Network(GAN)可以根据现有资料,生成更多和现有资料类似的数据,GAN内主要包括Generator(G)和Discriminator(D),本章要讲的就是GAN生成数据的基本原理以及在structured learning里的应用。同时还介绍了如何用单独的Generator和单独的Discriminator来生成数据。

1、Basic Idea of GAN

1.1 Generation(生成)

Generation做的事情主要分为如下两种:

  1. Image Generation
    它是训练一个生成器,该生成器吃入一个Vector,输出一张image。
    X

  2. Sentence Generation
    它也是训练一个生成器,该生成器吃入一个Vector,输出一个句子。
    在这里插入图片描述
    两者本质一样,都是找到一个Generation,而Generator实际上就是一个神经网络,在这个Generation里面它的input就是一个Vector,Output就是image或者Sentence。

1.2 Discriminator

在训练GAN时,同时也会训练一个Discriminator,Discriminator也是一个神经网络,它的输入是Generation产生的图片,输出是该图片真实性分数scalar,分数越高,它看起来就更像真实的图片。
在这里插入图片描述

1.3 Generation和Discriminator的关系

Generation和Discriminator就像捕食者和被捕食者一样,两者都会随着对方的进化而跟着进化。例如GAN在二次元头像生成中,它的训练过程就是一个Generation和Discriminator不断进化完善的过程。
在这里插入图片描述

1.4 Algorithm

  1. 在训练时,固定Generation参数,只训练Discriminator参数。它的具体做法是将G产生的图片和Database(真实的图片)中的图片丢入D,因为G的参数初始化时是随机数,所以产生的图片是很烂的,我们希望D看到数据库中的图片时输出高分,看到G产生的图片时输出低分。
    在这里插入图片描述
  2. 在第一步中,我们已经训练好了D,所以这一步我们固定D的参数,只训练G。具体做法是,调整G的参数,我们希望G产生的图片,D看到后输出的分数越高越好。也就是希望G产生的图片越接近真实的图片越好。

2、GAN as structured learning

在传统的Structured Learning Approach里面,有两套方法,一个是Bottop Up,它是说我们要产生一个object,它是一个一个output来产生的,它的缺点就是会丢失一些全局信息。一个是Top Down,它是说产生一个Object后,从整体的角度来给其打分。此时Bottop Up可以看作G,Top Down可以看作D,将两者结合起来就是structured learning的GAN。
在这里插入图片描述

3、Can Generator learn by itself?

Generator是可以自己train的,有一个最简单的办法就是直接输入vector,然后我们有其对应的label,以此来训练Generator model。那么现在的问题就是label中的手写数字的vector是怎么产生的。
在这里插入图片描述
有一个好的办法就是training一个Encoder,这个办法其实就是之前学过的Auto-encoder。其中的Decoder就可以看作是一个G。
在这里插入图片描述
而此时就有了新的问题,也就是同样的手写数字,只是倾斜角度不同,两者的平均值丢给G,我们的想法是它会生成倾斜角度在两者中间的同样的手写数字。而事实上并不会,甚至有可能产生胡乱的图片。这个问题怎么解决呢?
在这里插入图片描述
有一个解决办法就是Variational Auto-encoder(VAE),它的做法是让Encoder在生成code的同时还产生code每个维度的value,然后从正态分布中sample一些noise,再将noise与value的vector相乘得到的结果加到code里,让Decoder还原出原来的图片。
在这里插入图片描述

4、 Can Discriminator generate?

Discriminator 用来生成是穷举所有的x,然后找出分数最高的,就是生成的结果。很明显这个生成是非常痛苦的。
在这里插入图片描述
在training时,我们也需要一些好的training data来训练我们的model,好的training data是需要正确的data和错误的data都是合适的,正确的data是容易找的,而合适的错误data则比较难找,怎么产生合适的错误data,这又变成了一个死循环的问题。
在这里插入图片描述
正确的解法是如下这样的:

  1. 首先我们有一组正确的data和错误的data。
    在这里插入图片描述
  2. 我们将其放入Discriminator进行训练,Discriminator要做的事情就是给正确data高分,给错误data低分。
  3. 我们用训练好的Discriminator生成一组它认为好的图片。将该组图片作为错误的data重新进行第二步的做法。循环训练,最后得到合适的model后停止循环。

方法

  1. GAN生成数据的方法是首先固定G的参数,用正确的data,和错误的data对D进行训练,D训练好后固定D的参数,对G进行训练,我们希望G生成的数据在D中的分越高越好。
  2. 单独的Generator生成数据的方法是Variational Auto-encoder(VAE),它的做法是让Encoder在生成code的同时还产生code每个维度的value,然后从正态分布中sample一些noise,再将noise与value的vector相乘得到的结果加到code里,让Decoder根据加入noise的code能够还原出原来的图片此时的Decoder就是Generator。用此方法生成的数据更稳定。
  3. 单独的Discriminator生成数据的方法是讲label数据和明显错误的数据丢给D,让D给label高分,给错误数据低分进行训练,再让训练好后的D画出一组它认为分最高的数据,将该组数据作为错误数据和label一起丢给D进行训练,反复循环,直至得到合适的结果再停止训练。

结论

GAN在很多方面都有应用,近年来也有越来越多的人开始研究GAN并且发了很多的文章,从本章中可以看到GAN在生成数据方面有其独特的优势,不仅GAN可以生成数据,将GAN拆开,单独的Generation和Discriminator也可以生成数据。

这篇关于WDK李宏毅学习笔记第十四周01_GAN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720472

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个