热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:赠书|读懂生成对抗神经网络GAN,看这文就够了

篇首语:本文由编程笔记#小编为大家整理,主要介绍了赠书|读懂生成对抗神经网络GAN,看这文就够了相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了赠书 | 读懂生成对抗神经网络 GAN,看这文就够了相关的知识,希望对你有一定的参考价值。









生成对抗神经网络(Generative Adversarial Nets,GAN)是一种深度学习的框架,它是通过一个相互对抗的过程来完成模型训练的。典型的GAN包含两个部分,一个是生成模型(Generative Model,简称G),另一个是判别模型(Discriminative Model,简称D)。生成模型负责生成与样本分布一致的数据,目标是欺骗判别模型,让判别模型认为生成的数据是真实的;判别模型试图将生成的数据与真实的样本区分开。生成模型与判别模型相互对抗、相互促进,最终生成模型能够生 成以假乱真的数据,判别模型无法区分是生成的数据还是真实的样本,如此一来,就可以利用生 成模型去生成非常逼真的数据。


由于GAN能够生成复杂的高维度数据,因此被广泛应用于学术研究和工程领域。GAN的主要应用包括图像处理、序列数据生成、半监督学习、域自适应(Domain Adaptation)。图像处理是GAN应用最多的领域,包括图像合成、图像转换、图像超分辨率、对象检测、对象变换等;序列数据生成包括音乐生成、语音生成等。



GAN架构


生成模型的输入是低维度的随机噪声(如向量),输出是高维度的张量(如图像或音乐)。判别模型的输入是高维度的张量(如图像或音乐);输出是低维度的张量,如代表输入张量是否来源于真实样本的热向量(one-hot)。在训练阶段,生成模型输出的高维度张量也会输入给判别模 型,由判别模型判断生成的数据是否已经足够像真实的样本数据。模型训练完成之后,在评估阶段就可以通过给生成模型输入低维度的随机噪声,让生成模型输出高维度的张量数据(图像或音乐)。


关于 GAN 的生成和对抗,最早的 GAN 是作者通过警察(判别模型)和造假币者(生成模 型)来举例的。造假币者试图造出非常逼真的假币,警察试图将假币和真币区分开。造假者不断提升造假币的能力,以试图欺骗警察;警察也不断提高自己的辨别能力,将假币尽可能地 识别出来。二者相互对抗、相互竞争,造假者的造假水平和警察的辨别能力都不断地提高,直到最终造假币者能够造出以假乱真的假币,这就是生成对抗的原理。GAN 的架构如图 1-1 所示。




判别模型


判别模型的输入是一个高维度的张量(如图像或音乐),输出是一个低维度的张量,一般是向量(如图像所属类别)。这个转换的过程是典型的降采样(Down Sampling)过程,即将高维度、大尺寸的输入张量逐步转换成低维度、小尺寸的输出张量,最终输出向量的过程。这一降采样的过程与卷积神经网络的过程十分类似。实际上,GAN网络架构中采用卷积神经网络作为判别模型是十分常见的。判别模型的网络架构如图1-2所示。




生成模型


生成模型的输入是一个代表随机噪声的低维度张量,输出是一个代表高维度的张量(如图像 或音乐)。生成模型的转换过程是一个典型的升采样(Up Sampling)的过程,这一过程与反卷积神经网络的操作过程非常类似。实际上,采用反卷积神经网络作为生成模型的情况也是十分常见的。典型的生成模型的网络架构如图1-3所示。




训练方法


由GAN的原理可知,生成模型(G)和判别模型(D)相互对抗,用L (G,D)代表损失函数,其中 判别模型试图最小化误差,生成模型试图最大化误差。最终的误差函数如下:



由式(1-1)可知,生成模型和判别模型对误差都有影响,其中任何一个变动都会导致误差变动。所以,GAN是采用交替训练的方法来训练的,即固定一个模型,训练另外一个模型。


GAN模型的训练过程可以通过以下步骤来完成。


(1)固定生成模型的参数,优化判别模型的参数。首先生成一批样本数据G (z),将它们标记 为生成的样本,然后与真实的样本数据 x(标记为真实样本)一起输入判别模型。由于判别模型 的目标是将二者区分开,因此这是一个典型的分类预测问题,这也是卷积神经网络非常擅长的。实际上,目前主流的 GAN网络的判别模型往往都是卷积神经网络。经过训练,如果判别模型具 备足够的容量,就能够将真实样本与生成的数据区分开,于是可以得到一个判别模型D1。


(2)固定判别模型D1的参数,优化生成模型的参数。生成模型的优化目标是降低判别模型 的准确率,所以应根据判别模型的辨别结果调整生成模型的参数,直到生成模型能够产生让判别模型D1无法区分的生成数据。至此,可以得到一个生成模型G1。


(3)循环执行(1)和(2),交替训练并且升级生成模型和判别模型,每经过一轮训练,就会提高 一些模型的准确率,升级一次模型,最终得到生成模型 G2、G3、G4、⋯、Gn 和对应的判别模型 D2、D3、D4、⋯、Dn。经过以上 n轮训练,不管是生成模型还是判别模型的性能都会得到极大的提升,判别模型能够区分稍有瑕疵的生成数据。为了能够欺骗判别模型,生成模型必须能够生成 几乎没有瑕疵,或者说是能够以假乱真的数据,最终 GAN具备了生成足够逼真的高维度数据的能力。



为什么要学习GAN?


因为GAN功能强大、应用广泛,并且无须限定样本数据分布,就能够生成锐利而清晰的数据。


GAN 的应用场景十分广泛,包括图像生成、图像处理、序列数据生成、半监督学习、域自适应,以及其他相关领域,如医学图像细分(通过图像细分算法精确定位病灶)、隐写术(一种加密技 术,通过将加密信息写入肉眼可视的图像中实现)、持续学习(深度生成重放)。


图像处理是GAN应用最广泛的领域,包括图像生成、图像转换、图像超分辨率、对象检测、对 象变换、视频合成等场景,其中图像生成是 GAN模型的最原始的应用场景。图像转换是指将一 个领域(x)中的图像转换成另一个领域(y)中的图像,如将真人模特的照片转换成动漫卡通人物 的角色;图像超分辨率是指将低分辨率的图像转换成高分辨率图像的场景;对象检测是指检测图 像中是否包含指定的对象(如图像中是否包含狗);对象变换是指将图像中的对象替换成其他对 象,并且在不改变对象背景的前提下,让变换后的图像看起来足够真实;视频合成是指根据当前 视频的内容,预测未来一段时间的视频内容。


序列数据生成是指生成序列化数据的场景,包括语音对话或音乐合成。


半监督学习是指样本数据中只有少量的样本是有标记的,大量的样本数据是没有标记的,这 种类型的数据在生活中广泛存在。GAN能够通过充分利用标记的样本数据所属类别的信息,从理论角度来说,GAN的识别准确率可以达到非常高。


域自适应是迁移学习的一种,是指将在一个领域学习得到的模型应用在另一个领域中,其应用也十分广泛。例如,根据黄种人的人脸数据集训练一个人脸识别模型,如果该模型直接应用于 非黄种人的人脸(如白种人或黑种人)识别,那么识别的准确率可能会很低。域自适应能够提高 模型的适应能力,保证模型在应用于新领域时的性能。


以上内容来自《GAN生成对抗神经网络原理与实践》,还想学习更多 GAN 的知识?


机会来了~


在评论区留言你对 GAN 或者 AI 学习的看法


AI科技大本营将选出三名优质留言


携手【北京大学出版社】送出


《GAN生成对抗神经网络原理与实践》一本


截至6月18日14:00点



更多精彩推荐后疫情时代,RTC期待新的场景大爆发
Python + 爬虫:可视化大屏帮你选粽子
二次元会让人脸识别失效吗?
点分享点收藏点点赞点在看




推荐阅读
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文探讨了 Java 中 Unsafe.park 和 Object.wait 方法的区别,分析了它们的性能和适用场景,并提供了专业建议。 ... [详细]
  • 本文详细介绍了在编写jQuery插件时需要注意的关键要点,包括模块化支持、命名规范和性能优化等内容,旨在帮助开发者提高插件的质量和可维护性。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
author-avatar
Imzgu_208
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有