生成对抗网络(GAN)是一类在无监督学习中使用的神经网络,其有助于解决按文本生成图像、提高图片分辨率、药物匹配、检索特定模式的图片等任务。Statsbot 小组邀请数据科学家 Anton Karazeev 通过日常生活实例深入浅出地介绍 GAN 原理及其应用。

生成对抗网络由 Ian Goodfellow 于 2014 年提出。GAN 不是神经网络应用在无监督学习中的唯一途径,还有玻尔兹曼机(Geoffrey Hinton 和 Terry Sejnowski,1985)和自动解码器(Dana H. Ballard,1987)。三者皆致力于通过学习恒等函数 f(x)= x 从数据中提取特征,且都依赖马尔可夫链来训练或生成样本。

GAN 设计之初衷就是避免使用马尔可夫链,因为后者的计算成本很高。相对于玻尔兹曼机的另一个优点是 GAN 的限制要少得多(只有几个概率分布适用于马尔可夫链抽样)。

在本文中,我们将讲述 GAN 的基本原理及最流行的现实应用。

一、GAN 原理:让我们用一个比喻解释 GAN 的原理吧。

假设你想买块好表。但是从未买过表的你很可能难辨真假;买表的经验可以免被奸商欺骗。当你开始将大多数手表标记为假表(当然是被骗之后),卖家将开始「生产」更逼真的山寨表。这个例子形象地解释了 GAN 的基本原理:判别器网络(手表买家)和生成器网络(生产假表的卖家)。

两个网络相互博弈。GAN 允许生成逼真的物体(例如图像)。生成器出于压力被迫生成看似真实的样本,判别器学习分辨生成样本和真实样本。

判别算法和生成算法有何不同?简单地说:判别算法学习类之间的边界(如判别器做的那样),而生成算法学习类的分布(如生成器做的那样)。

二、如果你准备深入了解 GAN

想要学习生成器的分布,应该定义数据 x 的参数 p_g,以及输入噪声变量 p_z(z)的分布。然后 G(z,θ_g)将 z 从潜在空间 Z 映射到数据空间,D(x,θ_d)输出单个标量——一个 x 来自真实数据而不是 p_g 的概率。

训练判别器以最大化正确标注实际数据和生成样本的概率。训练生成器用于最小化 log(1-D(G(z)))。换句话说,尽量减少判别器得出正确答案的概率。

可以将这样的训练任务看作具有值函数 V(G,D)的极大极小博弈:

换句话说,生成器努力生成判别器难以辨认的图像,判别器也愈加聪明,以免被生成器欺骗。

「对抗训练是继切片面包之后最酷的事情。」- Yann LeCun

当判别器不能区分 p_g 和 p_data,即 D(x,θ_d)= 1/2 时,训练过程停止。达成生成器与判别器之间判定误差的平衡。

三、历史档案图像检索

一个有趣的 GAN 应用实例是在「Prize Papers」中检索相似标记,Prize Papers 是海洋史上最具价值的档案之一。对抗网络使得处理这些具有历史意义的文件更加容易,这些文件还包括海上扣留船只是否合法的信息。

每个查询到的记录都包含商家标记的样例——商家属性的唯一标识,类似于象形文字的草图样符号。

我们应该获得每个标记的特征表示,但是应用常规机器学习和深度学习方法(包括卷积神经网络)存在一些问题:

  • 它们需要大量标注图像;

  • 商标没有标注;

  • 标记无法从数据集分割出去。

这种新方法显示了如何使用 GAN 从商标的图像中提取和学习特征。在学习每个标记的表征之后,就可以在扫描文档上按图形搜索。

三、将文本翻译成图像

其他研究人员表明,使用自然语言的描述属性生成相应的图像是可行的。文本转换成图像的方法可以说明生成模型模拟真实数据样本的性能。

图片生成的主要问题在于图像分布是多模态的。例如,有太多的例子完美契合文本描述的内容。GAN 有助于解决这一问题。

我们来考虑以下任务:将蓝色输入点映射到绿色输出点(绿点可能是蓝点的输出)。这个红色箭头表示预测的误差,也意味着经过一段时间后,蓝点将被映射到绿点的平均值——这一精确映射将会模糊我们试图预测的图像。

GAN 不直接使用输入和输出对。相反,它们学习如何给输入和输出配对。下面是从文本描述中生成图像的示例:

用于训练 GAN 的数据集:

  • Caltech-UCSD-200-2011 是一个具有 200 种鸟类照片、总数为 11,788 的图像数据集。

  • Oxford-102 花数据集由 102 个花的类别组成,每个类别包含 40 到 258 张图片不等。

四、药物匹配

当其它研究员应用 GAN 处理图片和视频时,Insilico Medicine 的研究人员提出了一种运用 GAN 进行药物匹配的方法。我们的目标是训练生成器,以尽可能精确地从一个药物数据库中对现有药物进行按病取药的操作。

经过训练后,可以使用生成器获得一种以前不可治愈的疾病的药方,并使用判别器确定生成的药方是否治愈了特定疾病。

五、肿瘤分子生物学的应用

Insilico Medicine 另一个研究表明,产生一组按参数定义的新抗癌分子的管道。其目的是预测具有抗癌作用的药物反应和化合物。研究人员提出了一个基于现有生化数据的用于识别和生成新化合物的对抗自编码器(AAE)模型。

「据我们所知,这是 GAN 技术在挖掘癌症药物领域的首个应用。」- 研究人员说。

数据库中有许多可用的生物化学数据,如癌细胞系百科全书(CCLE)、肿瘤药物敏感基因学(GDSC)和 NCI-60 癌细胞系。所有这些都包含针对癌症的不同药物实验的筛选数据。

对抗自编码器以药物浓度和指纹作为输入并使用生长抑制率数据进行训练(GI,显示治疗后癌细胞的数量减少情况)。

分子指纹在计算机中有一个固定的位数表示,每一位代表某些特征的保留状态。

隐藏层由 5 个神经元组成,其中一个负责 GI(癌细胞抑制率),另外 4 个由正态分布判别。因此,一个回归项被添加到编码器代价函数中。此外,编码器只能将相同的指纹映射到相同的潜在向量,这一过程独立于通过额外的流形代价集中输入。

经过训练,网络可以从期望的分布中生成分子,并使用 GI 神经元作为输出化合物的微调器。这项工作的成果如下:已训练 AAE 模型预测得到的化合物已被证明是抗癌药物,和需接受抗癌活性化合物实验验证的新药物。

「我们的研究结果表明,本文提出的 AAE 模型使用深度生成模型显著提高了特定抗癌能力和新分子的开发效率。」

结论

无监督学习是人工智能的下一个蓝海,我们正朝着这一方向迈进。生成对抗网络可以应用于许多领域,从生成图像到预测药物,所以不要害怕失败。我们相信 GAN 有助于建立一个更好的机器学习的未来。

GAN的基本原理与入门应用!相关推荐

  1. 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

    生成对抗网络 – Generative Adversarial Networks | GAN 文章目录 GAN的设计初衷 生成对抗网络 GAN 的基本原理 GAN的优缺点 10大典型的GAN算法 GA ...

  2. GAN的基本原理、应用和走向

    近年来,基于数据而习得"特征"的深度学习技术受到狂热追捧,而其中GAN模型训练方法更加具有激进意味:它生成数据本身. GAN是"生成对抗网络"(Generati ...

  3. 深度学习新星:GAN的基本原理、应用和走向 | 硬创公开课

    深度学习新星:GAN的基本原理.应用和走向 | 硬创公开课 本文作者:亚萌 2017-01-07 15:56 专题:硬创公开课 导语:新加坡国立大学冯佳时通过[硬创公开课]为我们洞悉GAN的诞生和走向 ...

  4. 深度学习新星:GAN的基本原理、应用和走向(文末附其他GAN的原理、方法、问题、改进方式和应用)

    转载自:http://www.leiphone.com/news/201701/Kq6FvnjgbKK8Lh8N.html GAN是"生成对抗网络"(Generative Adve ...

  5. 深度学习新星:GAN的基本原理、应用和走向

    深度学习新星:GAN的基本原理.应用和走向 https://www.cnblogs.com/DicksonJYL/p/9617443.html 相关参考: [OpenAI] Generative Mo ...

  6. GAN学习:Keras入门

    Keras入门 1.环境配置 2.搭建一个简单的网络 3.多元线性回归 3.1 准备数据集 3.2 环境配置 3.2代码 3.4 结果 4.全链接模型之手写数字识别模型 5.优化手写数字识别模型 6. ...

  7. Hadoop框架:MapReduce基本原理和入门案例

    本文源码:GitHub·点这里 || GitEE·点这里 一.MapReduce概述 1.基本概念 Hadoop核心组件之一:分布式计算的方案MapReduce,是一种编程模型,用于大规模数据集的并行 ...

  8. GAN生成对抗网络入门篇

    笔记整理:王小草 时间:2019年1月 一.GAN简介 1 背景 全称:generative adversarial network 生成式对抗网络(不一定是深度学习) 论文:https://arxi ...

  9. TensorFlow基本原理,入门教程网址

    TensorFlow TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节 ...

最新文章

  1. 输出内容时后面显示乱码
  2. lambdas_借助Java 8和lambdas,可以一起使用AssertJ和Awaitility
  3. 不要争了,别的程序员是这么给变量起名的!
  4. 深度学习在推荐领域的应用
  5. 七招挽回受损WORD文档
  6. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]
  7. android cordova 教程,cordova入门教程(一)
  8. 语句拼接_Linux 进阶语句
  9. java l1 l2缓存,Java 两级缓存框架
  10. 微软Tech·Ed与中国IT行业一同成长
  11. Linux下的文件共享全攻略系列之二:NFS快速配置教程与安全策略
  12. java exe 反编译工具_windows下java反编译工具
  13. CSDN博客添加使用百度统计
  14. TwinCAT 3 安全门程序
  15. 如何备份博客:利用博客备份工具BlogDown
  16. 即将截止?四川省2022年工业领域大企业大集团跨越发展激励项目申报条件、材料、要求及流程
  17. matlab imrotate图像旋转
  18. VC++6.0共享内存技术总结
  19. 微信公众平台网页授权两次重定向跳转问题
  20. 像扫二维码一样的快速录入银行卡信息

热门文章

  1. python processpoolexector 释放内存_关于python:如何在multiprocessing.queue中从Process中释放内存?...
  2. 前端笔记(9)元素的隐藏与显示,css用户界面样式,vertical-align垂直对齐,溢出文字省略号显示,css精灵技术,过渡,焦点,滑动门,margin负值
  3. java servlet post_Java中Servlet Post和Get乱码
  4. mysql经纬度转距离_Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)
  5. 平滑重启_swoole服务平滑重启
  6. 0UL能做C语言常量吗,c语言中的0UL或1UL是什么意思
  7. java前台传多个id用什么接收_jsp 页面传多个id 到java后台的处理方式
  8. 指针的本质是:内存(地址)+ 类型 装包解包
  9. wait和notify
  10. 汉化 Hirens.BootCD 中的 XP 系统