大数跨境
0
0

生成对抗网络,让AI越练越强的拳击训练赛

生成对抗网络,让AI越练越强的拳击训练赛 学术头条
2017-03-30
1
导读:在真实数据的指导下,生成网络和识别网络会变得越来越强。

生成对抗网络(GAN)由两个独立的网络组成,即生成网络和识别网络。它将非监督学习的问题作为两者之间的博弈。在这篇文章中,我们将看到为什么GAN有如此大的潜力,并将GAN比作两个对手之间的拳击比赛。


深度学习背后的理念


深度学习是受生物学上的启发而产生,许多深度学习主要概念都是直观的,并且基于现实。深度学习的基本原理是层次性的,网络中的层级以及每层所学习的表达都是彼此依存的。而现实世界也是这样的层级结构:电子,质子,中子 ->原子 ->分子。建立层次结构世界的最佳方式就是分层形式,这就是为什么深度学习可以如此成功地为非常困难的问题提供简洁、通用的解决方法。


现在让我们将这个基于生物学的灵感应用到我们目前训练网络的方式上。监督学习是目前机器学习的标准形式 - 对于每个数据样本,在训练中都需要一个实体标注/标签。但非监督学习是现实世界中大多数学习的实际状态。只要想想我们如何学习走路、说话就会明白这一点。虽然监督学习在许多任务上表现良好,但非监督学习似乎是实现真正的人工智能的关键。


要实现精确的数据标注通常是不切实际的。理想情况下,可以对缺少标注的数据进行非监督的模型训练,然后使用小得多的带有合适标注的数据集进行微调。回到对世界的层级观点,可以通过训练AI使其了解世界的基本组成部分,然后在其基础上建立现有的知识库,以更具体的方式对特定的使用实例进行微调。


无监督学习 —— 一个具体的例子


 卷积神经网络对数百万未标记的皮肤图像进行了训练。这些图像中,可能有一些是健康的皮肤,其他的是患病皮肤,还有的处于二者之间的状态。最终,网络将会对皮肤及其病症的复杂性有很深的理解。然后可以基于该网络的构建具体的使用实例(即时、准确地诊断皮肤癌)。


由于该模型已经学习了皮肤图像中包含的最重要信息的通用、强力的表示,因此应该能够使用更小的标签数据集快速理解诊断皮肤癌的新任务,而不是仅使用监督式方法进行训练。这是转移学习和微调的基本概念。


GAN是非监督学习中最有希望的研究领域之一,这将是从数据中学习强大表示方式的简单、通用的方法。


了解GAN


 我们将GAN分成几个基本组成部分:


•数据:在数学上,我们将数据集视为真实数据分布的样本。这些数据可以是图像、语音传感器读数等。

•生成网络:将一些代码(即随机噪声)作为输入,并将其转换,输出数据样本。生成网络的目标是最终从真实数据分布中输出不同的数据样本。

•识别网络:将数据样本作为输入,并将其分为真的(来自真实的数据分布)或假的(来自生成网络)。识别网络的目的是能够以高精度区分实际和生成的图像。

标准GAN的总体目标是训练生成网络,从真实数据分布生成不同的数据样本,让识别网络只能靠单纯的猜测来对图像进行分类。在训练这个网络的过程中,生成网络和识别网络都会学习基础数据的强大的层级表示,并能够将其转移到各种特定任务(如分类,分段等)和使用实例中。


了解GAN的训练流程


 下面的伪代码可能会让人摸不着头脑,我们后面将用现实世界中的对抗性学习流程的简单实例来加以说明。


while equilibrium_not_reached:
    
    # train the discriminator to classify a batch of images from our
    # dataset as real and a batch of images generated by our current
    # generator as fake
 
    1.)
    discriminator.train_on_batch(image_batch=real_image_batch, labels=real)
    2.)
    discriminator.train_on_batch(image_batch=generated_image_batch, labels=fake)
    # train the generator to trick the discriminator into
    # classifying a batch of generated images as real. The key here
    # is that the discriminator is frozen (not trainable) in this
    # step, but it's loss functions gradients are back-propagated
    # through the combined network to the generator
    # the generator updates its weights in the most ideal way
    # possible based on these gradients
    
    3.)
    combined.train_on_batch(input=batch_of_noise, labels=real)
    # where combined is a model that consists of the generator and
    # discriminator joined together such that: input => generator =>
    # generator_output => discriminator => classification


我们对GAN和对抗学习的一般概念是很熟悉的,无论我们是否意识到这一点。比如,考虑学习用吉他弹奏歌曲的情况:


首先听歌曲,找出如何将歌曲“映射”在吉他上(上述训练过程中的第1步),然后尝试弹奏歌曲,听自己弹奏的曲子,并注意与原歌曲有哪些不同之处(第2步)。再次弹奏歌曲,试着修正二者间的差异。(步骤3)。


我们基本上是在重复上述过程,将第2步和第3步合在一起,并将第1部记住一部分,每当要忘了时就来重新听一遍,直到我们弹奏出的声音和真实的歌曲听上去足够接近,我们感到很开心。


随着你成为一个更熟练的吉他手,你可以学习新的歌曲,直到达到某个点之后,你就可以弹奏以前从未听过或几乎没有练过的歌曲(即转移学习/微调)。


在这个例子中,歌曲就是数据,我们的耳朵/大脑就是识别网络,我们的手/大脑是生成网络。这个过程可能和我们学习移动,学习说话等过程类似。现在进一步考虑一下聋人说话的情况。这听起来很有趣,因为他们没有识别网络促进对抗学习(也许他们可以选择其他提示,如人们的反应,作为一种弱识别网络)。


现在我们已经建立关于GAN的一些理念,我们来看看这些理念如何在软件中实现。您应该考虑实际中的GAN与软件之间的相似之处和不同之处。从差异上看,实际上的对抗学习过程似乎在生成网络和识别网络之间是协同的,而GAN的软件实现则似乎是对抗性的(类似拳击比赛)。


训练GAN – 生成网络和识别网络之间的拳击比赛


 初看起来,识别网络就像是教练,而生成网络是拳击手。但实际上它们都是拳击手。实际上,真正的数据才是教练。只有识别网络可以直接访问数据。


识别网络是向教练学习的拳击手(实际数据集越大,教练越有经验),而生成网络则好比只能向他的对手伙伴(识别网络)学习的拳击手。


在上述训练过程的第1步中,识别网络先跟着教练训练一回合。教练批评了他的技术,识别网络接受批评。在第2步中,识别网络观察生成网络的一回合空打,研究生成网络的打法,并相应地准备即将到来的一轮对决。


现在是第3步,开打!生成网络是来自Philly的一个大胡子拳手,他在打拳的时候显得放松而专注,会研究对手(即识别网路)的每一个动作、犯下的每一个错误,并从中学习,在每一回合逐步适应对手。识别网络讨厌打拳,每次他完全没有从拳赛中学到什么东西的时候,会很害怕和紧张。识别网络可能比生成网络更具运动天赋(将数据分为真/假,比生成实际数据更容易),但是生成网络的心态有助于拳赛领域的平衡。即使生成网络没有教练(无法访问真正的数据集),它还是在于识别网络的拳赛中学到了很多东西,因为它获得了对手的教练所教的基本的东西。


这个过程一回合一回合地持续进行,直到最终识别网络和生成网络都成为全能的拳击手,准备好竞争。教练已经将自己所知道的比赛的全部重要细节都教给了识别网络,生成网络和识别网络在相互比赛中相互学习了很多。在理想情况下,他们在训练结束时的水平都是一样的,他们之间的比赛两边的胜率是50:50.。


GAN面对的困难

 

当您深入研究GAN时,会发现我们目前面临的主要困难之一是如何训练这些网络正确收敛。我们希望生成网络和识别网络能够达到一些期望的均衡,但大多数情况下并不是这样。关于哪些地方可能出错的问题,已经有了大量的信息和相关研究。https://www.quora.com/Do-generative-adversarial-networks-always-converge还有如何应对这些问题的更多信息见:https://github.com/soumith/ganhacks。


这里举出几个GAN最常见的失败案例:


1识别网络过于迅速地变得过于强大,生成网络最终没有学到任何东西。用拳赛来打比方,这就像识别网络变得如此强大,生成网络最终完全不是对手,变成一个只会挨打的沙袋,无法学到任何东西,因为识别网络不犯错误,并且不给生成网络任何的学习机会。在理论上,这意味着在上述训练过程的第3步中,识别网络将所生成的数据精确而自信地分类为假,以致识别网络的反向传播损耗函数梯度中没有任何东西可供生成网络学习。


2生成网络仅仅学习了识别网络的某些特定的弱点,并利用它们来欺骗识别网络将生成数据划分为真实数据,而没有去学习表示真实的数据分布。这在理论上看起来如何。用拳击赛来比喻的话,这就像生成网络学习了识别网络的每一个弱点,但只是尽可能地利用这些弱点,而不是去真正学习拳击的基本技术和技巧。在与不同弱点的对手的比赛中,生成网络就一筹莫展了!识别网络从生成网络那里学到的一切也将是无用的,因为在真实的比赛中,对手不会像生成网络那样打拳。


3生成网络只学习了真正数据分布的一小部分。用拳击来比喻,这将像我们的生成网络只学习一个漂亮的刺拳和拳后防守,没有开发其他工具。这将导致识别网络从生成网络上学不到什么东西,并且对数据分布的这一小部分的表示过于看重。在实践中的一个例子是,对于每个可能的输入,生成网络会产生相同的数据样本,并且其输出之间没有变化。


结论

 

现在我们对GAN有了基本的了解,让我们回顾一下建立GAN的目的:从未标记的数据中学习强大的表示方式(即从我们的原始维度获取数据,并学习在一个低得多的维度中表示其最重要的特征,进而以更少的标记数据来实现期望的表现)。在训练GAN之后,目前大多数方法使用识别网络作为传递学习的基础模型,并用于生产模型的微调,或者使用生成网络作为用于训练生产模型的数据源。用拳击作类比的话,这意味着识别网络获得了拳手执照并且投入比赛,但是生成网络没有。这是很遗憾的,因为生成网络似乎有潜力成为更好的拳击手,却被完全抛弃了,或只被当成生产模型的陪练或教练。


训练有素的生成网络已经学到了真正的数据分布,它可以从更小的输入维度生成属于自己的样本。这表明它已经开发出非常强大的数据表示。理想情况是,直接在生产模型中利用生成网络学到的东西,但我还不知道有什么方法能实现这一点。


原文链接:http://www.kdnuggets.com/2017/03/deep-learning-gans-boxing-fundamental-understanding.html

【声明】内容源于网络
0
0
学术头条
致力于学术传播和科学普及,重点关注大模型、AI4Science 等前沿科学进展。
内容 2059
粉丝 0
学术头条 致力于学术传播和科学普及,重点关注大模型、AI4Science 等前沿科学进展。
总阅读1.3k
粉丝0
内容2.1k