【机器学习】什么是GAN 小孩都看得懂的 GAN

这篇具有很好参考价值的文章主要介绍了【机器学习】什么是GAN 小孩都看得懂的 GAN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容来自:王圣元 王的机器

0

【机器学习】什么是GAN 小孩都看得懂的 GAN

 

GAN 是什么

GAN 的全称是 Generative Adversarial Network,中文是生成对抗网络

【机器学习】什么是GAN 小孩都看得懂的 GAN

一言以蔽之,GAN 包含了两个神经网络,生成器(generator)和辨别器(discriminator),两者互相博弈不断变强,即生成器产出的东西越来越逼真,辨别器的识别能力越来越牛逼。

2

造假和鉴定

【机器学习】什么是GAN 小孩都看得懂的 GAN

生成器辨别器之间的关系很像造假者(counterfeiter)和鉴定者(Appraiser)之间的关系。

  • 造假者不断造出假货,目的就是蒙骗鉴定者,在此过程中其造假能力越来越高。

  • 鉴定者不断检验假货,目的就是识破造假者,在此过程中其鉴定能力越来越高。

GAN 是造假者的,也是鉴定者的,但归根结底还是造假者的。GAN 的最终目标是训练出一个“完美”的造假者,即能让生成让鉴定者都蒙圈的产品。
 

一动图胜千言,下图展示“造假者如何一步步生成逼真的蒙娜丽莎画而最终欺骗了鉴定者”的过程。

【机器学习】什么是GAN 小孩都看得懂的 GAN

在此过程中,每当造假者生成一幅图。鉴定者会给出反馈,造假者从中学到如何改进来画出一张逼真图。

3

造假鉴定网络?

回到神经网络,造假者生成器来建模,鉴定者辨别器来建模。

【机器学习】什么是GAN 小孩都看得懂的 GAN

根据上面动图可知,辨别器的任务是区分哪些图片是真实的,哪些图片是生成器产生的。

接下来我们用 Python 创建一个极简 GAN。

首先设置一个故事背景。

4

故事背景

在倾斜岛(slanted island)上,每个人都是倾斜的,大概像左倾斜 45 度左右。

【机器学习】什么是GAN 小孩都看得懂的 GAN

岛主想做人脸生成器,由于岛上的人的脸部特征非常简单,因此用 2 * 2 像素的模糊人脸图片。

【机器学习】什么是GAN 小孩都看得懂的 GAN

限于技术,岛主只用了个一层的神经网络。

【机器学习】什么是GAN 小孩都看得懂的 GAN

但在这个极度简单的设置下,一层的 GAN 也能生成“倾斜人脸”。

5

辨别人脸

下图展示四个人脸的样子。

【机器学习】什么是GAN 小孩都看得懂的 GAN

从 2*2 像素来表示人脸,深色代表此处有人脸,浅色代表此处没有人脸。

【机器学习】什么是GAN 小孩都看得懂的 GAN

如果不是人脸呢?那么其 2*2 像素图中的元素就是随机的,如下所示。

【机器学习】什么是GAN 小孩都看得懂的 GAN

复习一下:

  • 人脸:对角线上是深色,非对角线上是浅色

  • 非人脸:任意四处都可能是深色或浅色

【机器学习】什么是GAN 小孩都看得懂的 GAN

像素可以用 0 到 1 的数值来表示:

  • 人脸:对角线上的数值大,非对角线上的数值小

  • 非人脸:任意四处都可能是 0-1 之间的任意数值

【机器学习】什么是GAN 小孩都看得懂的 GAN

弄清了人脸照片和非人脸照片用不同特征的 2*2 数值矩阵表示之后,接下来两节我们来看如何构建辨别器(discriminator)和生成器(generator)。

先分析辨别器

6

辨别器

辨别器就是用来辨别人脸,那么当看到照片的像素值时,如何辨别呢?

【机器学习】什么是GAN 小孩都看得懂的 GAN

简单!上节已经分析过:

  • 人脸:对角线上的数值大,非对角线上的数值小

  • 非人脸:任意四处都可能是 0-1 之间的任意数值

【机器学习】什么是GAN 小孩都看得懂的 GAN


如果要用一个数值表示人脸和非人脸,该用什么样的操作呢?也简单,如下图所示,加上 (1,1) 位置的元素,减去 (1,2) 位置的元素,减去 (2,1) 位置的元素,加上 (2,2) 位置的元素,得到一个数值就可以了。

【机器学习】什么是GAN 小孩都看得懂的 GAN


人脸得到的分数是 2(较大),非人脸得到的分数是 -0.5(较小)。

【机器学习】什么是GAN 小孩都看得懂的 GAN

设定一个阈值 1,得分大于 1 是人脸,小于 1 不是人脸。

将上述内容用神经网络来表示,就成了下面的极简辨别器了。注意除了“加减减加”矩阵 4 个元素之外,最后还加上一个偏置项(bias)得到最终得分。

【机器学习】什么是GAN 小孩都看得懂的 GAN


辨别器最终要判断是否是人脸,因此产出是一个概率,需要用 sigmoid 函数将得分 1 转化成概率 0.73。给定概率阈值 0.5,由于 0.73 > 0.5,辨别器判断该图是人脸。

【机器学习】什么是GAN 小孩都看得懂的 GAN


对另一张非人脸的图,用同样操作,最后算出得分 -0.5,用 sigmoid 函数转换。给定概率阈值 0.5,由于 0.37 < 0.5,辨别器判断该图是人脸。

【机器学习】什么是GAN 小孩都看得懂的 GAN

7

生成器

辨别器目标是判断人脸。而生成器目标是生成人脸,那什么样的矩阵像素是人脸图呢?简单!该规则被已经分析多次了:

  • 人脸:对角线上的数值大,非对角线上的数值小

  • 非人脸:任意四处都可能是 0-1 之间的任意数值

【机器学习】什么是GAN 小孩都看得懂的 GAN


现在来看生成过程。第一步就是从 0-1 之间随机选取一个数,比如 0.7。

【机器学习】什么是GAN 小孩都看得懂的 GAN

回忆生成器的目的是生成人脸,即要保证最终 2*2 矩阵的对角线上的像素要大(用粗线表明),而非对角线上的像素要小(用细线表明)。

【机器学习】什么是GAN 小孩都看得懂的 GAN


举例,生成矩阵 (1,1) 位置的值,w = 1, b = 1,计算的分 wz + b = 1.7。

【机器学习】什么是GAN 小孩都看得懂的 GAN


同理计算矩阵其他三个位置的得分。

【机器学习】什么是GAN 小孩都看得懂的 GAN


最后都用 sigmoid 函数将得分转换一下,确保像素值在 0-1 之间。

【机器学习】什么是GAN 小孩都看得懂的 GAN

注意按上图这样给权重 [1, -1, -1, 1] 和偏置 1,有因为 z 总是在 0 和 1 之间的一个正数,这样的一个神经网络(生成器)总可以生成一个像人脸的 2*2 的像素矩阵。

根据本节和上节的展示,我们已经知道什么样的辨别器可以判断人脸,什么样的生成器可以生成好的人脸,即什么样的 GAN 是个好 GAN。这些都是由权重和偏置决定的,接下来看看它们是怎么训练出来的。首先复习一下误差函数(error function)。

8

误差函数

通常把正类用 1 表示,负类用 0 表示。在本例中人脸是正类,用 1 表示;非人脸是负类,用 0 表示。

当标签为 1 时(人脸),-ln(x) 是一个好的误差函数,因为

  • 当预测不准时(预测非人脸,假设 0.1),那么误差应该较大,- ln(0.1) 较大。 

  • 当预测准时(预测人脸,假设 0.9),那么误差应该较小,-ln(0.9) 较小。

【机器学习】什么是GAN 小孩都看得懂的 GAN


当标签为 0 时(非人脸),-ln(1-x) 是一个好的误差函数。

  • 当预测准时(预测非人脸,假设 0.1),那么误差应该较小,- ln(1-0.1) 较大。 

  • 当预测不准时(预测人脸,假设 0.9),那么误差应该较大,-ln(1-0.9) 较小。

【机器学习】什么是GAN 小孩都看得懂的 GAN


根据下面两张总结图再巩固一下 ln 函数作为误差函数的逻辑。

【机器学习】什么是GAN 小孩都看得懂的 GAN

【机器学习】什么是GAN 小孩都看得懂的 GAN

接下来就是 GAN 中博弈,即生成器辨别器放在一起会发生什么事情。

9

生成器和辨别器放在一起

复习一下两者的结构。

  • 生成器:输入是一个 0-1 之间的随机数,输出是图片的像素矩阵

  • 辨别器:输入是图片像素矩阵,输出是一个概率值

【机器学习】什么是GAN 小孩都看得懂的 GAN


下面动图展示了从生成器辨别器的流程。

【机器学习】什么是GAN 小孩都看得懂的 GAN


因为该图片是从生成器来的,不是真实图片,因此一个好的辨别器会判断这不是脸,那么使用标签为 0 对应的误差函数,-ln(1-prediction)。

【机器学习】什么是GAN 小孩都看得懂的 GAN

反过来,一个好的生成器想骗过辨别器,即想让辨别器判断这是脸,那么使用标签为 1 对应的误差函数,-ln(prediction)。

【机器学习】什么是GAN 小孩都看得懂的 GAN


好戏来了,用 G 表示生成器,D 表示辨别器,那么

  • G(z) 是生成器的产出,即像素矩阵,它也是辨别器的输入

  • D(G(z)) 是辨别器的产出,即概率,又是上面误差函数里的 prediction

为了使生成器辨别器都变强,我们希望最小化误差函数

    -ln(D(G(z)) - ln(1-D(G(z))

其中 D(G(z)) 就是辨别器的 prediction。

【机器学习】什么是GAN 小孩都看得懂的 GAN


将我们得到的误差函数对比 GAN 论文中的目标函数(下图),发现还是有些差别:

【机器学习】什么是GAN 小孩都看得懂的 GAN

解释如下:

辨别器除了接收生成器产出的图片 G(z),还会接收真实图片 x,在这时一个好的辨别器会判断这是脸,那么使用标签为 1 对应的误差函数,-ln(-prediction)。那么对于辨别器,需要最小化的误差函数是

    -ln(D(x)) - ln(1-D(G(z))

将负号去掉,等价于最大化

    ln(D(x)) + ln(1-D(G(z))

这个不就是 V(D,G) 么?此过程是固定生成器,来优化辨别器来识别假图片。

V(D, G) 最大化后,在固定辨别器,来优化生成器来生成以假乱真的图片。但是生成器的误差函数不是 -ln(D(G(z)) 吗?怎么能和 V(D, G) 扯上关系呢?其实 -ln(D(G(z)) 等价于 ln(1-D(G(z)),这时 V(D, G) 的第二项,而其第一项 ln(D(x)) 对于 G 是个常数,加不加都无所谓。

最后 V(D, G) 中的两项都有期望符号,在实际优化中我们就通过 n 个样本的统计平均值来实现。第一项期望中的 x 从真实数据分布 p_data(x) 中来,第一项期望中的 z 从特定概率分布 p_z(z) 中来。

综上,先通过 D 最大化 V(D,G) 再通过 G 最小化 V(D, G)。

10

训练 GAN

在训练中,当人脸来自生成器,通过最小化误差函数,辨别器输出概率值接近 0。

【机器学习】什么是GAN 小孩都看得懂的 GAN

当人脸来自真实图片,通过最小化误差函数,辨别器输出概率值接近 1。

【机器学习】什么是GAN 小孩都看得懂的 GAN


当然所有神经网络的训练算法都是梯度下降了。

OK,接下来的内容确实不适合普通小孩了,对数学和编程有强烈兴趣的小孩可以继续看下去 

【机器学习】什么是GAN 小孩都看得懂的 GAN

11

数学推导

辨别器:从像素矩阵到概率

【机器学习】什么是GAN 小孩都看得懂的 GAN

【机器学习】什么是GAN 小孩都看得懂的 GAN

生成器:从随机数 z 到像素矩阵

【机器学习】什么是GAN 小孩都看得懂的 GAN

【机器学习】什么是GAN 小孩都看得懂的 GAN

得到误差函数相对于生成器和辨别器中的权重和偏置的各种偏导数后,就可以写代码实现了。文章来源地址https://www.toymoban.com/news/detail-429149.html

到了这里,关于【机器学习】什么是GAN 小孩都看得懂的 GAN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知识星球 感谢大家一直以来对我CSDN博客的关注和支持,但

    2024年02月09日
    浏览(45)
  • GLSL基础概念(绝对看得懂)

    GLSL(OpenGL Shading Language)是一种用于描述顶点和片元着色器的语言。它是一种 C 语言的变体,专门为 OpenGL 和其他着色器渲染系统而设计。 在渲染图形时,主程序会将顶点数据发送到 GPU,然后 GPU 会使用图形着色器来计算每个像素的最终颜色。图形着色器的输入是顶点数据,

    2024年02月01日
    浏览(52)
  • 【可乐荐书】有趣的矩阵:看得懂又好看的线性代数

    本栏目将推荐一些经典的、有趣的、有启发性的书籍,这些书籍涵盖了各个领域,包括文学、历史、哲学、科学、技术等等。相信这些书籍不仅可以让你获得知识,还可以让你感受到阅读的乐趣和魅力。 今天给大家推荐的书籍是:《有趣的矩阵:看得懂又好看的线性代数》

    2024年02月05日
    浏览(57)
  • verilog 从入门到看得懂---verilog 的基本语法数据和运算

            笔者之前主要是使用c语言和matab 进行编程,从2024年年初开始接触verilog,通过了一周的学习,基本上对verilog 的语法有了基本认知。总统来说,verilog 的语法还是很简单的,主要难点是verilog是并行运行,并且强烈和硬件实际电路相关,在设计到的时候需要考虑时序

    2024年03月18日
    浏览(48)
  • 想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

      如果想在自然语言处理(Natural Language Processing,NLP)领域内脱颖而出,那么你一定不能错过 ChatGPT 的 5 大自然语言模型:LM、Transformer、GPT、RLHF 和 LLM。这些模型是 NLP 领域中最为重要的基础,涵盖了 语言模型、预训练模型、生成模型 等关键知识点。即使你是一个 NLP 小白

    2024年02月09日
    浏览(50)
  • 大数据机器学习GAN:生成对抗网络GAN全维度介绍与实战

    本文为生成对抗网络GAN的研究者和实践者提供全面、深入和实用的指导。通过本文的理论解释和实际操作指南,读者能够掌握GAN的核心概念,理解其工作原理,学会设计和训练自己的GAN模型,并能够对结果进行有效的分析和评估。 生成对抗网络(GAN)是深度学习的一种创新架

    2024年02月03日
    浏览(41)
  • 【机器学习1】什么是机器学习&机器学习的重要性

    什么是机器学习? 简而言之,机器学习就是训练机器去学习。 机器学习作为人工智能(Artificial Intelligence,AI)的一个分支,以其最基本的形式来使用算法通过从数据中获取知识来进行预测。 不同于人类通过分析大量数据手动推导规则和模型,机器学习提供了一种更有效的方法来

    2024年02月13日
    浏览(41)
  • 【机器学习300问】1、什么是机器学习?

            维基百科定义:机器学习是一门系统的学科,它关注设计和开发算法,使得机器的行为随着经验数据的累积而进化,经验数据通常是传感器数据或数据库记录。         百度百科定义:         机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、

    2024年01月23日
    浏览(39)
  • 炫云为什么要采用让人看不懂的GHZ计费?

    很多人看到炫云GHZ计费都表示看不懂,觉得麻烦,没有按核数、按线程或者按分钟计费简单易懂,甚至还被某些同行经常拿来攻击。哪为什么炫云还坚持用GHZ计费呢?哪是因为使用GHZ计费更加公平、透明,且具有硬件无关性。今天就来和大家详细说说炫云为什么要用GHZ计费。

    2024年02月05日
    浏览(62)
  • 【机器学习300问】4、机器学习到底在学习什么?

            首先我们先了解一个前置问题,再回答机器学习到底在学习什么。         求解机器学习问题的步骤可以分为“学习”和“推理”两个阶段。首先,在学习阶段进行模型的学习,然后,在推理阶段用学到的模型对未知的数据进行推理。 总结一下: 学习阶段 :

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包