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

emd实现信息隐藏_【读书笔记】深入理解TensorFlow架构设计与实现原理(五)

首先一如既往地是我们的约定环节:MCMC:MarkovChainMonteCarlo,马尔可夫蒙特卡洛算法;VAEÿ

23fd21813bcef95737c96922f3fd378b.png

首先一如既往地是我们的约定环节:

  • MCMC:Markov Chain Monte Carlo,马尔可夫蒙特卡洛算法;
  • VAE:Variational AutoEncoder,变分自编码器;

第10章 GAN模型

机器学习和深度学习领域不仅有判别模型,而且有生成模型,获得每个标签所对应的数据分布,GAN(Generative Adversarial Network)即是这样一种判别模型,利用深度学习强大的非线性拟合能力模拟真实的数据分布。

10.1 原理、特点及应用

对条件概率

equation?tex=P%28y%7CX%3B+%5Ctheta%29 直接建模得到的模型就是判别模型,对训练数据特征和标签的联合概率
equation?tex=P%28X%2C+y%3B+%5Ctheta%29 建模而得到的模型就是生成模型。

思考:这里的生成模型,和NLP中,利用深度学习模型生成的声学模型、语言模型对应的分布有什么关系?NLP中使用的是生成模型吗?

常用的生成模型有两大类:基于显式概率密度函数的生成模型和基于隐式概率密度函数的生成模型。

  • 基于显式概率密度函数的生成模型首先建立所需拟合的数据分布的概率密度函数,然后用有限的样本不断训练该模型。假设该模型
    equation?tex=G 的目标优化函数为
    equation?tex=E_%7Bx%5Csim+p_%7Bdata%7D%7D+%5Clog+G%28x%7C%5Ctheta%29 ,最优参数为
    equation?tex=%5Ctheta%5E%2A+%3D+%5Carg+%5Cmax_%5Ctheta+E_%7Bx+%5Csim+p_%7Bdata%7D%7D+%5Clog+G%28x%7C%5Ctheta%29 。当该目标优化函数可解时,直接用优化算法求解该模型的最优参数;
  • 当它不可解时,需要用近似的方法得到上述模型的最优参数。变分近似(Variational Approximations)和马尔可夫蒙特卡洛(Markov Chain Monte Carlo,简称MCMC)变分近似中,我们首先得到原始目标优化函数的一个可解的下限函数,然后通过求解该下限函数的最大值间接得到原始目标优化函数的最大值;

不同于基于显式概率密度函数的生成模型,基于隐式概率密度函数的生成模型可以通过直接采样的方式训练模型参数,而不需要提前对真实分布建立模型。而GAN是一种全新的基于隐式概率密度函数的生成模型。

10.1.1 原理

由两个子墨性——生成器和判别器组成。G的输入为随机噪声向量,输出为与真实数据维度相同的数据。D的输入为真实数据或者G生成的数据,输出为其对输入数据的分类。对抗过程可以表示为:

equation?tex=%5Cmin_G+%5Cmax_D+V%28D%2C+G%29+%3D+E_%7Bx+%5Csim+p_%7Bdata%7D%7D%5B%5Clog+D%28x%29%5D+%2B+E_%7Bz+%5Csim+p_%7Bz%7D%28z%29%7D+%5B%5Clog+%281-D%28G%28z%29%29%29%5D+%5C%5C

实际中在每一次迭代中先训练k次判别器

equation?tex=D ,再训练一次生成器
equation?tex=G ,具体步骤如下:
  1. 训练判别器。从噪声输入向量z的分布
    equation?tex=p_z%28z%29 中随机采用m个样本组成一组用于输入到生成器的批训练数据
    equation?tex=%5C%7B+x%5E%7B%281%29%7D%2C+...%2C+x%5E%7B%28m%29%7D+%5C%7D 。计算判别器的损失函数在当前的批训练数据上的平均值:
    equation?tex=L_D+%3D+%5Cfrac%7B1%7D%7Bm%7D+%5Csum_%7Bi%3D1%7D%5Em%5B%5Clog+D%28x%5E%7B%28i%29%7D%29+%2B+%5Clog%281+-+D%28G%28z%5E%7B%28i%29%7D%29%29%29%5D ,然后求解
    equation?tex=L_D 对判别器参数
    equation?tex=%5Ctheta_%7Bd%7D 的导数,用梯度上升法(
    注意这里是梯度上升?)更新;
  2. 重复步骤1. k次;
  3. 训练生成器。从p_z(z)中随机采样得到一组批训练数据
    equation?tex=%5C%7B+z%5E%7B%281%29%7D%2C+...%2C+z%5E%7B%28m%29%7D+%5C%7D ,计算生成器的损失函数在当前的批训练数据上的平均值
    equation?tex=L_G+%3D+%5Cfrac%7B1%7D%7Bm%7D+%5Csum_%7Bi%3D1%7D%5Em+%5Clog%281+-+D%28G%28z%5E%7B%28i%29%7D%29%29%29 ,然后求解
    equation?tex=L_G 对生成器参数
    equation?tex=%5Ctheta_g 的导数,然后用梯度下降法更新
    equation?tex=%5Ctheta_g
  4. 重复上述步骤直至收敛;

判别器的优化目标:

equation?tex=V_D%28D%2C+G%29+%3D+E_%7Bx%5Csim+p_%7Bdata%7D%7D+%5B%5Clog+D%28x%29%5D+%2B+E_%7Bz%5Csim+p_%28z%29%7D%5B%5Clog%281+-+D%28G%28z%29%29%29%5D+%5C%5C+%3D+%5Cint_xp_%7Bdata%7D%28x%29+%5Clog%28D%28x%29%29+dx+%2B+%5Cint_z+p_z%28z%29%5Clog%281-D%28g%28z%29%29%29dz+%5C%5C+%3D+%5Cint_x+%5Bp_%7Bdata%7D%28x%29+%5Clog%28D%28x%29%29+%2B+p_g%28x%29+%5Clog%281+-+D%28x%29%29%5Ddx%5C%5C

为求

equation?tex=V_D%28D%2C+G%29 的最小值,将
equation?tex=D%28x%29 看作一个未知量,令
equation?tex=%5Cfrac%7B%5Cmathrm%7Bd%7D+V_D%28D%2C+G%29%7D%7B%5Cmathrm%7Bd%7D+D%28x%29%7D+%3D+0 ,即
equation?tex=p_%7Bdata%7D%28x%29%5Cfrac%7B1%7D%7BD%5E%2A%28x%29%7D+%2B+p_g%28x%29+%5Cfrac%7B1%7D%7BD%5E%2A%28x%29+-+1%7D+%3D+0 ,可得出
equation?tex=D%5E%2A+%3D+%5Cfrac%7Bp_%7Bdata%7D%28x%29%7D%7Bp_%7Bdata%7D%28x%29+%2B+p_g%28x%29%7D 为最优解。当
equation?tex=D%28x%29+%3D+D%5E%2A%28x%29 时,目标函数可以进一步表示为

equation?tex=%5Cmin_G+V%28D%2C+G%5E%2A%29+%3D+-%5Clog%284%29+%2B+KL%28p_%7Bdata%7D%7C%7C+%28p_%7Bdata%7D+%2B+p_g%29+%2F+2%29+%2B+KL%28p_g+%7C%7C+%28p_%7Bdata%7D+%2B+p_g%29%2F2%29%5C%5C+%3D+-%5Clog%284%29+%2B+2+%5Cmathrm%7BJSD%7D%28p_%7Bdata%7D%7C%7Cp_G%29%5C%5C+

这里的

equation?tex=%5Cmathrm%7BJSD%7D 表示Jensen-Shanon散度,为了解决KL散度的非对称问题,但是和KL共同的问题在于两个分布距离较远时表达不佳,JS散度在距离较远时为常数,而KL散度无意义。

当散度下降时,

equation?tex=D%EF%BC%8CG 逼近真实数据概率分布。

10.1.2 特点

GAN模型可以逼近任何分布,适合生成非结构化高维数据。

  • 和VAE相比,GAN模型没有引入近似条件和额外假设,因此能够保证生成的效果更好,通常比VAE生成的图像更加清晰(VAE生成图像模糊好像是业界的共识);
  • 与MCMC相比,GAN的模型驯良不依赖MCMC,计算复杂度不高,训练速度较快,生成数据维度更高;
  • 以FVBN(Fully visible belief networks,比如WaveNet也是基于此模型)为代表的生成模型必须串行地生成数据在各个维度上的值,计算速度受限,而GAN模型的训练和推理计算都很容易并行化,从而能够充分利用GPU等高性能计算设备加速。

GAN的缺点:

  • 在目标函数中,当生成器生成的数据和真实的数据的分布之间没有交集时,JS散度为常数,此时如果判别器也为最优,就会出现梯度消失现象,继而难以根据目标函数更新生成器模型的参数;
  • 由于灵活性太高,GAN经常会出现模式崩溃(mode collapse)问题,即生成器和判别器的参数优化过程停滞不前、无法收敛的问题。

通过WGAN、minibatch GAN等改进解决这些问题。

10.1.3 应用

近年来利用GAN强大的数据生成能力获得更好的训练结果,也开始应用于自然语言处理等领域。

  • 图像翻译:包含两个方面,1)抽取文字描述的语义特征,2)根据语义特征生成一副相应的图像。在这样的GAN模型中,生成器的输入包括噪声向量和文字的编码向量,这两个向量同时输入到生成器中用于图像生成,使得图像语义与对应文字的语义产生关联。判别器不仅需要判断图像看起来是否真实,而且需要判断图像是否与文字编码向量互相对应;
  • 图像编辑:对图像中指定的某些内容进行语义上的修改。在GAN模型中,通过改变生成器输入向量中的某些维度的值来控制生成器输出图像的局部语义信息。为了使用户可以编辑模型的隐藏向量,进而控制图像的语义信息,我们通常需要将编码器与GAN模型结合使用。在训练完GAN模型后,再训练两个编码器,分别将待编辑的图像转换为一个噪声向量和一个隐藏向量。隐藏向量上的每一个维度的值都表示一些高级语义特性。将这两个向量同时作为GAN生成器的输入,就可以通过修改隐藏向量来控制GAN模型生成器所生成图像的某些局部语义信息;
  • 图像超分辨率:高维空间中数据分布非常稀疏,仅靠MSE训练出的模型生成的图像在某些细节处看起来不太真实。GAN对真实数据有更好地拟合;
  • 半监督学习:同时利用带标签的数据和不带标签的数据进行模型训练的方法。利用GAN产生逼近真实的数据,将不带标签的数据看作第
    equation?tex=K%2B1 类,并将其作为训练数据的一部分。训练数据得到了扩充;
  • 基于GAN的强化学习:传统的强化学习大多是单任务系统,智能体只能通过奖励函数一直执行一个单一的、不变的任务,通过GAN为智能体持续地生成难度适宜的多个目标任务。

10.2 GAN模型的改进

GAN的主要问题:生成图像的分辨率不高、学习特征不可控、训练过程不稳定等。

10.2.1 CGAN模型

原始的GAN框架不需要对数据分布做假设,而直接采用多层神经网络模拟数据分布。这种训练方式太过自由,在实际中数据表前或其他辅助数据可被用作训练GAN的约束条件。CGAN在判别器和生成器的输入中分别引入一个条件向量

equation?tex=y ,用于约束生成图像的某些属性。最优化问题可以从之前的输出的分布改写为新的条件分布。

以手写字体为例,条件向量可以是数字的值、笔迹的宽度等。

10.2.2 LAPGAN模型

LAPGAN(Laplacian Pyramid GAN,拉普拉斯金字塔生成式对抗网络,和高斯金字塔配合使用,高斯金字塔通过高斯滤波和降采样获得不同尺度的图像金字塔,拉普拉斯金字塔表示上采样/高斯滤波后与上一级图像的差,表示降采样过程中丢失的高频信息,由拉普拉斯金字塔可以重构出原始图像)模型。

LAPGAN的原理是在每个尺度下都有一个生成器,用于生成该尺度下的拉普拉斯金字塔图像。例如,在

equation?tex=K 尺度下,噪声向量
equation?tex=z_K 输入到生成器
equation?tex=G_K 中得到生成图像
equation?tex=J_K 。在
equation?tex=K-1 尺度下,生成器
equation?tex=G_%7BK-1%7D 的输入为噪声向量
equation?tex=z_%7BK-1%7D ,以及
equation?tex=J_%7BK%7D 升采样后的图像
equation?tex=J%27_K (与CGAN类似,该图像作为条件变量引导
equation?tex=G_%7BK-1%7D 的输出),根据拉普拉斯金字塔图像和高斯金字塔图像之间的关系,
equation?tex=G_%7BK-1%7D 的输出与
equation?tex=J%27_K 相加后即可得到
equation?tex=K-1 尺度下的生成图像
equation?tex=J_%7BK-1%7D 。以此类推直到生成最终图像
equation?tex=J_0 (
既另一种形式的CGAN)。

10.2.3 DCGAN模型

(注意!这里的C不是CGAN里的Conditional,而是深度卷积的意思)DCGAN模型的整体架构与原始的GAN模型一致,区别在于Generator和Discriminator的具体实现方面的细节:

  1. 判别器中的池化层被逮捕长的卷积层取代。这是的CNN能够自动学喜特征途的降采样模式,而非按照固定的最大池化或平均池化做降采样。同时这种降采样方式也使得整个DCGAN模型变为完全可微的(啥意思?应该是指可以全局进行反向传播梯度计算,而LAPGAN的降采样方式将不同生成器的梯度更新割裂开来,无法构成端到端应用),对于训练的稳定性有好处;
  2. Discriminator(除了输出层之外)和Generator(除了输入层之外)的卷积层都经过BN层做归一化,基于BN层的归一化使得训练精度对于参数初始化不敏感,并且能够加快训练速度

10.2.4 InfoGAN模型

在InfoGAN模型中,在损失函数中加入了输入语义特征向量

equation?tex=c 和输出图像之间的互信息的相反数,互信息越打,相关性越高,损失越低。然而直接优化新的损失函数意味着需要对隐变量
equation?tex=c 的后验概率分布
equation?tex=P%28c%7Cx%29 进行采样,InfoGAN中引入变分法,采用一个辅助分布
equation?tex=Q%28c%7Cx%29 来近似后验概率分布,简化了计算。实际中可以采用深度学习模型来表示
equation?tex=Q%28c%7Cx%29

10.2.5 LSGAN模型

上述几种GAN模型目标函数大部分都是基于sigmoid交叉熵,会导致梯度消失的问题,当生成器G生成的数据处于判别器D的分类面正确的一侧,但又离真实数据分布比较远时,很难通过该目标函数计算相应的梯度更新G的模型参数,难以继续优化G。LSGAN(Least Squares GAN)是基于最小二乘法的目标函数,分别优化生成器和判别器的GAN模型。

基于sigmoid交叉熵的目标函数容易出现饱和,从而导致无法继续训练。实验效果表明LSGAN模型生成的图像分辨率更高,训练过程更加稳定。

10.2.6 WGAN模型

将JS散度替换为EMD(Earth Mover's Distance,也就是Wasserstein距离)来定义生成数据和真实数据分布之间的差异,相比于JS散度,它可以做到处处连续且可微。

10.3 最佳实践

参见这里。

10.4 小结

GAN模型接住了深度学习模型对数据分布强大的建模能力,使得生成逼真的图像等高维数据成为可能。



推荐阅读
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 超分辨率技术的全球研究进展与应用现状综述
    本文综述了图像超分辨率(Super-Resolution, SR)技术在全球范围内的最新研究进展及其应用现状。超分辨率技术旨在从单幅或多幅低分辨率(Low-Resolution, LR)图像中恢复出高质量的高分辨率(High-Resolution, HR)图像。该技术在遥感、医疗成像、视频处理等多个领域展现出广泛的应用前景。文章详细分析了当前主流的超分辨率算法,包括基于传统方法和深度学习的方法,并探讨了其在实际应用中的优缺点及未来发展方向。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
author-avatar
刘洁05_836
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有