8.27周报

news2024/9/23 7:19:24

文章目录

  • 前言
  • 论文阅读
    • 摘要
    • 介绍
    • 模型
    • 算法
  • 总结


前言

本周学习了GAN论文《Generative Adversarial Nets》,了解GAN主要由两部分组成:生成器和判别器,知道生成器G和判别器D的作用及原理,相比于其他的生成模型,了解GAN的优势和不足分别是什么。

This week, I study the paper about GAN and learn that GAN are mainly composed of two parts: generator and discriminator. I also learn about the functions and principles of generator and discriminator, and explore the advantages and disadvantages of GAN compared to other Generative models.


论文阅读

机器学习有两大类模型:
• 分辨模型,判断数据类别或预测一个实数值
• 生成模型,怎样生成数据本身

标题 Generative Adversarial Nets (GAN)

作者 Ian J. Goodfellow∗ , Jean Pouget-Abadie† , Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair‡ , Aaron Courville, Yoshua Bengio§

摘要

We propose a new framework for estimating generative models via an adversarial process, in which we simultaneously train two models: a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that a sample came from the training data rather than G. The training procedure for G is to maximize the probability of D making a mistake. This framework corresponds to a minimax two-player game. In the space of arbitrary functions G and D, a unique solution exists, with G recovering the training data distribution and D equal to 1/2 everywhere. In the case where G and D are defined by multilayer perceptions, the entire system can be trained with backpropagation.There is no need for any Markov chains or unrolled approximate inference networks during either training or generation of samples. Experiments demonstrate the potential of the framework through qualitative and quantitative evaluation of the generated samples.

我们提出了一个通过对抗过程来估计生成模型的新框架,其中我们同时训练两个模型:捕获整个数据分布的生成模型G(对整个数据的分布进行建模,使得你能够生成各种分布)和估计样本来自训练数据而不是G的概率的判别模型D。G的训练过程是尽量的想让你的辨别模型犯错。这个框架对应于一个极大极小的二人博弈。在任意函数G和D的空间中,存在一个唯一解,这个解是代表既能够把你整个训练数据的真实分布给找出来。D是辨别模型,因为已经把真实数据给挖掘出来了,辨别模型基本做不了什么事情。如果G、D是MLP的话,整个系统就可以通过一个误差反传来整个进行训练。这里我们不需要使用任何的马尔科夫链或者说对一个近似的推理过程展开,实验效果非常好。

介绍

深度学习在生成模式上进展不多,我们要去近似分布来计算似然函数,这篇文章不用近似的似然函数的方法,使用别的方法得到一个计算更好的模型。

GAN介绍:框架里面有两类模型,生成模型(类似于造假的人产生假币)和判别模型(任务是找出假币和真币区分开来),通过不断的学习,造假者提高造假的能力,警察提高判别真假币的能力,最后希望造假者能赢,造的钱币和真的一样,警察没有能力分辨真币和假币,这时我们就可以来生成跟真实一样的数据。
框架里的生成模型是一个MLP,它的输入是一个随机噪声,MLP能够把产生随机噪音的分布(通常是一个高斯分布)可以映射到任何一个我们想去拟合的分布。同样,如果判别模型也是MLP,因为两个模型都是基于MLP的,在训练的时候可以直接通过误差的反向传递,从而不需要通过向使用马尔科夫链一样的算法来对一个分布进行复杂的采样,从而导致在计算上有优势。
相关工作
之前的方法是想去构造这个分布函数,把函数提供一些参数让他学习,这些参数通过最大化它的对数似然函数来做。这些方法计算困难,但这篇论文没有构造分布,通过学习模型来近似结果,弊端就是不知道最后的分布是什么。

模型

这个框架最简单的应用是当生成器和辨别器都是MLP的时候,生成器要去在数据X上学一个Pg的分布,GAN主要用在图片的生成上(图片生成的例子:假如在玩游戏,显示器是4K 的分辨率,每秒输出60张图片,要学一个生成器,也能够生成和游戏一样的图片,上面说的X就是在显示器里的4K分辨率(800万像素)图片,每个像素是一个随机变量,X是一个长为800万维度的多维随机变量,每个像素的值都是由后面的分布Pg来控制)。那么生成模型怎样来输出X?我们定义一个先验在一个输入的噪音变量pz(z)上,Z是噪音变量(可以认为100维的向量,每一个元素是一个均值为0,方差为1的搞高斯噪音),分布是PZ,生成模型就是把Z映射成X,生成模型是一个MLP,它有个可学习的参数为θ_g,假设想要生成游戏的图片,可以反汇编游戏的代码,伶出代码,就知道游戏真正是怎样生成的,这种方式代表前面说的我们去构造一个分布,在计算上比较难,但GAN不是这样的,学习一个MLP映射,因为理论上MLP理论上可以拟合任何的一个函数,构造一个差不多大小的向量,MLP强行把Z映射成要的那些X,使得两者长得很相似,好处是计算简单,坏处是MLP并不了解背后的原理。辨别器也有自己学习的参数θ_d “它的作用是把之前的数据,也就是800万像素的” 图片 放进来D(x;θd)然后输出一个标量,判断X到底是来自于真实采样数据(真实数据标号)还是生成出来的图片,采样数据,训练一个两类的分类器。在训练D的同时也会训练G,G用来最小化log⁡(1-D(G(z))),Z是随机噪音,G(Z)生成图片,如果辨别器正确D(G(z))为0,最小化这一项也就是训练一个G使得辨别器尽量犯错,无法区分出数据到底是真实还是生成。
目标函数:
在这里插入图片描述

有两项,第一项是一个期望,X是采样真实分布,X放入辨别器,再加LOG,假设辨别器在完美的情况下,D(X)为1,log 之后为0,第二项是采样噪音的分布,噪音放进生成器,生成X,放入D中,理想情况下D为0,如果不理想,有误分类,这两项因为有log都会变成负数值。想要辨别器完美分类要最大化V(D,G),G是让辨别器尽量犯错,要最小化log⁡(1-D(G(z)))。min和max在相互对抗,D尽量使数据分开,G尽量使得生成数据使D分不开,达到均衡叫做纳什均衡。
在这里插入图片描述
这四张图表示GAN在前面三步和最后一步干了什么?
(a)随机噪音Z、X是一个一维的标量,噪音是均匀分布采样而来,真实去拟合X在图中黑圆点处,基本是一个高斯分布,辨别器是蓝色的线,生成器把均值分布映射为绿线。下一步辨别器尽量把这两个东西分开,
(b)更新生成器
(c)生成模型可以把来自均匀分布的随机噪声Z映射为一个几乎和真实分布差不多的高斯分布。

算法

在这里插入图片描述
首先是FOR循环,每个循环中做一次迭代,迭代的第一部分是循环K布,每一步中先采样m个噪音样本,再采样m个来自于真实数据的样本,组成2m大小的一个小批量,放进辨别器,放进之后对辨别器的参数求梯度来更新辨别器,做K布之后,再采样m个噪音样本,放进第二项,把它的梯度对于生成器的模型算出来,对生成器进行更新,完成一次迭代。K为超参数。GAN的收敛不稳定。
实验+结论:目标函数有一个全局最优解,当且仅当生成器学习到的分布和真实数据的分布是相等的。
目标函数是正确的?
当生成器G是固定的,辨别器D的计算方式:(*是最优解的意思)
在这里插入图片描述
Pdatda(x):把X放进去之后,在真实的产生数据的分布里面,它的概率是多少。
Pg(x):生成器所拟合的那个分布把我的X放进去后它等于多少。最优的情况下DG(x)为1/2。
期望公式:E_(x~p) f(x)=∫_x▒P(x)f(x)ⅆx

总结

论文主要阐述了以下三点内容:

  1. 提出了生成对抗型网络
  2. 分别叙述了生成器G,鉴别器D的作用及原理。
  3. 网络在训练过程中的优势。

G、D叙述:生成模型G捕获数据分布,判别模型D估计样本来自于训练数据而不是G的概率。
优点:

  1. 不需要马尔可夫链。
  2. 函数变化多样性,无需推理学习过程。
  3. 由于其独特的更新方式,意味着输入源数据不会直接复制到生成器的参数中。
  4. GAN可以表示非常尖锐、甚至退化的分布,而基于马尔可夫链的方法要求分布有点模糊,以便链能够在模式之间混合。

缺点:

  1. pg(x)没有显式表示。
  2. 训练时D必须与G保持良好的同步(要避免不平衡更新),像玻尔兹曼机器的负链必须在学习步骤之间保持最新。

展望:
GAN可用作半监督学习:当有限制的标记数据可用时,鉴别器的特征可以提高分类器的性能。
效率提高: 通过划分更好的方法来协调G和D,或者在训练过程中确定更好的样本z的分布,可以大大加速训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/936254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【java】【项目实战】[外卖六]套餐管理业务开发

目录 一、新增套餐 1 需求分析 2 数据模型 3 代码实现 3.1 实体类SetmealDish 3.2 SetmealDto 3.3 SetmealDishMapper 3.4 SetmealDishService 3.5 SetmealDishServiceImpl 3.6 SetmealController 3.7 DishController 3.8 SetmealService 3.9 SetmealServiceImp…

4.21 用了 TCP 协议,数据一定不会丢吗?

目录 数据包的发送流程: 建立连接时丢包 流量控制丢包 网卡丢包 RingBuffer过小导致丢包 网卡性能不足 接收缓冲区丢包 两端之间的网络丢包 ping命令查看丢包: mtr命令: 发生丢包了怎么办 用了TCP协议就一定不会丢包吗​编辑 这类丢包问题怎…

Mysql--技术文档--基本概念--《世界上最流行的关系型数据库之一》

官方网址 MySQL 阿丹: 作为关系型数据库管理的老大哥,一个合格的程序员多多少少一定要了解mysql库。 官方解释 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管…

浙大MBA冲刺上岸经验分享:紧急备战的大龄考生

前些天我在朋友圈分享了一组我们前段时间在浙大开学前同学聚会的照片。结果,许多朋友都开始询问与浙大有关的情况,并且他们最关心的问题集中在以下几点:我去年备考花费了多少时间?要不要报班学习?现在开始备考还有机会…

postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况&…

c++ 判断基类指针指向的真实对象类型

在 c 面向对象使用中,我们常常会定义一个基类类型的指针,在运行过程中,这个指针可能指向一个基类类型的对象,也可能指向的是其子类类型的对象,那现在问题来了,我们如何去判断这个指针到底执行了一个什么类型…

FreeMarker使用

说明:FreeMake可以通过设置一个模板,使用一些语法规则,可根据返回的VO数据填充到这个模板中,生成一个静态。这个技术,在项目中可以实现如预览页面的功能,将查询完成的VO数据按照这个模板填充,生…

Redis 10 大数据类型

1. which 10 1. redis字符串 2. redis 列表 3. redis哈希表 4. redis集合 5. redis有序集合 6. redis地理空间 7. redis基数统计 8. redis位图 9. redis位域 10. redis流 2. 获取redis常见操作指令 官网英文:https://redis.io/commands 官网中文:https:/…

python函数学习

def add(num1,num2):resultnum1num2print(f"函数add输出的结果是{result}")return result resultadd(int(num1), int(num2)) print(f"调用def add(num1,num2):这个函数最终返回的结果是: {result}")# 函数返回值 ②无返回值(也就是说是返回值类…

python下载bilibili视频,下载合集,下载选集

一. 内容简介 bilibili视频下载,下载合集,下载选集 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接:https://pan.baidu.com/s/1tO8xSmaqqoTxHI9P_UkDBw?pwd1234 提取码:1234 三.主要流程 3.1 …

Linux系统:CentOS 7 CA证书服务器部署

目录 一、理论 1.CA认证中心 2.CA证书服务器部署 二、实验 1. CA证书服务器部署 一、理论 1.CA认证中心 (1)概念 CA :CertificateAuthority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证…

C语言-内存分布(STM32内存分析)

C/C内存分布 一、内存组成二、静态区域文本段 (Text / 只读区域 RO)已初始化读写数据段(RW data -- Initialized Data Segment)未初始化数据段(BSS -- Block Started by Symbol) 三、动态区域堆&#xff08…

如何复刻稚晖君的ctrl-FOC-lite

一、simpleFOC版本工程使用clion重新打开为“Cmake”工程: 1、我删除了simpleFOC版本工程文件夹下的cmake-build-debug、.idea文件夹; 2、使用clion重新打开为“Cmake”工程,配置均按照稚晖君的教程进行的配置。 3、使用stm32cubeMX6.5版本重…

数仓--------简单了解

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

[Android]JNI的基础知识

目录 1.什么是JNI 2.配置JNI开发环境NDK 3.创建Native C类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI JNI(Java Native Interface)是一…

SciencePlots 基本语法及特点

文章目录 简介安装 LaTeXSciencePlots 绘图示例 简介 用户有时需要根据期刊的配图绘制要求进行诸如字体、刻度轴、轴脊、图例等图层属性的定制化修改,耗时的同时也会容易导致用户忽略一些图层细节要求。 SciencePlots 作为一个专门用于科研论文绘图的第三方拓展工…

设计模式第九讲:常见重构技巧 - 去除不必要的!=

设计模式第九讲:常见重构技巧 - 去除不必要的! 项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢?本文是设计模式第九讲,讲解常见重构技巧:去除不必要的! 文章目录…

机房安全之道:构筑坚固的网络防线

引言: 在数字化时代,机房成为了许多组织和企业的核心基础设施,承载着重要的数据和应用。然而,随着网络攻击日益猖獗,机房的安全性显得尤为重要。本文将深入探讨如何构建坚固的网络防线,保护机房免受攻击的方…

代码随想录打卡—day42—【DP】— 8.27 01背包基础

1 01背包基础 背包概述: 1.1 01背包是什么 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 1.2 01背包二维数组 二维数组还…