参与:Jane W、晏奇、吴攀 生成对抗网络(GAN)近来在研究界得到了很大的关注。在这篇文章中,Waya.ai 的创始人 Michael Dietz 介绍了 GAN 如此大有潜力的原因,并且通过 GAN 与拳击比赛的生动比较对 GAN 的工作方式进行了阐释。 生成对抗网络(GAN)由两个独立的网络组成,即生成器(generator)和判别器(discriminator)。GAN 将无监督学习问题作为这两者之间的博弈。在本文中,我们将看到为什么 GAN 有这么大的潜力,并且通过 GAN 与拳击比赛的比较来对其进行阐释。 生成对抗网络和拳击比赛没什么不同 深度学习源于生物学的启发,因此许多深度学习主要概念都是直观的和基于现实的。深度学习的基本原理是层次性架构——层次不仅指网络中的层,还有它们建立在彼此之上的学习到的表征。实际上,我们的现实世界也是如此:电子、质子、中子 → 原子 → 分子 →……通过层次化的方式来对层次性的世界建模是顺理成章的,这就是为什么深度学习使用简单、优雅和通用的方法就已经能够如此成功地解决非常困难的问题。
可视化由深度卷积神经网络学习的层次结构和表征 激励无监督学习 「对抗训练是有史以来最酷的东西。」 ——Yann LeCun,Facebook 人工智能研究部门主管、纽约大学教授 现在让我们将这个生物学的灵感应用到目前训练网络的方法上。监督学习(supervised learning)是目前机器学习的基本方法——即对于每个数据样本,训练中都需要一个真实的注释/标签。但现实世界中大多数学习是无监督学习完成的。只要想想我们如何学习走路、谈话等……虽然有监督学习在许多任务上表现良好,但无监督学习似乎才是真正的人工智能的关键。 准确的数据标签通常是不切实际的。理想情况下,可以对无标签数据进行无监督的模型训练,然后使用足够小的标签的数据集进行微调。回到层级世界的观点,应该有可能训练人工智能了解世界的基本构建块,j2直播,然后在现有的知识库之上进行开发,然后以更监督式的方式对特定用例进行微调。 无监督学习——一个具体的例子 我们通过训练数百万未标记的皮肤图像来构建一个卷积神经网络。这些图像中,一些是健康的皮肤,另一些是患病的皮肤,还有一些介于患病和健康之间。最终,神经网络将通过学习而获得对皮肤及其复杂性的深入理解。构建网络之后,就可以使用该网络处理具体的实例(如即时准确地诊断皮肤癌)。 由于该模型已经学会皮肤图像中包含的最重要信息的通用、有效的表征,因此相比于仅使用监督式方法进行训练,模型应该仅使用更小的标签数据集就能快速学习诊断皮肤癌的新任务。这是迁移学习(transfer learning)和微调(fine-tuning)的基本概念。 GAN 是无监督学习中最有希望的研究领域之一,我们将看到它们是学习大数据表征的简单且有效的方法。 理解 GAN 让我们从细节讲解 GAN 的基本组成部分: 数据:从数学上讲,我们将数据集看作是从真实数据分布抽样出的样本。这些数据可以是图像、语音、传感器读数等。 生成器(generator):将一些代码(即随机噪声)作为输入,将其转换并输出数据样本。生成器的目标是最终输出服从真实数据分布的不同数据样本。 判别器(discriminator):将数据样本作为输入,并将其分类为真实的(来自真实数据分布)或伪造的(来自生成器)。判别器的目的是能够高精度地分辨真实的和生成的图像。 标准 GAN 的整体目标是训练出能够生成服从真实数据分布的不同数据样本的生成器,使得判别器只能有 50% 的概率将图像分类为真实的/生成的。在训练这个网络的过程中,生成器和判别器都会学习源数据的强大的层次化的表征,然后可以将其迁移到各种特定任务(如分类、分割等……)和应用案例。 理解 GAN 的训练过程 下面的伪代码可能会令你感到困惑,所以我们将紧接着用一个简单的真实的对抗学习(adversarial learning)过程例子来展示它。 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. 听歌曲——弄清楚如何将歌曲映射到吉他上(上面的训练过程中的第 1 步) 2. 尝试弹奏歌曲——聆听弹奏的内容,并注意与实际歌曲的不同之处(第 2 步) 3. 再次弹奏歌曲——试图解决这些差异(第 3 步) (责任编辑:本港台直播) |