知乎:GAN 的发展对于研究通用人工智能有什么意义?
资历不深,入坑一年的我仅从个人角度谈谈理解,希望能抛砖引玉。
GAN对于人工智能的意义,可以从它名字的三部分说起:Generative Adversarial Networks。为了方便讲述,也缅怀过去两周在某论坛上水掉的时间,我先从Networks讲起。
Networks:(深度)神经网络
自从12年AlexNet横空出世后,神经网络俨然已成为现在learning的主流。比起贝叶斯学派的强先验假设(priori),SVM在核函数(kernel)上的反复钻研,神经网络不需要科研者过多关注细节,只需要提供好海量的数据和设置好超参数,便能达到不错的效果。用武侠小说的方式来说,便是各大门派高手潜心十余载修炼一阳指/九阴真经/麒麟臂等神功,比试时却发现有一无名小卒内力浩瀚如海,出手虽毫无章法可言,但在内功的加持下,轻松打得众人抬不起头。
Deep系列的算法不仅在众多benchmark上霸据榜首,其衍生应用也给人工智能带来了一股新的浪潮,例如创作艺术品(Gatys 的 Neural Alorightm for Artistic Style),AlphaGo(CNN估值 + 蒙特卡洛剪枝),高质量的机器翻译(Attention + seq2seq)等等。这些衍生应用在部分任务上,已经能媲美人类中的专家,让人不禁浮想强人工智能(strong AI)的到来。然而,纵使深度网络(Deep Neural Networks)再强大,它也有自己的局限,生成模型上的不尽人意便是其中之一。
Generative(Model):生成模型
机器学习的模型可大体分为两类,生成模型(Generative Model)和判别模型(Discriminative Model)。判别模型需要输入变量 ,通过某种模型来预测 。生成模型是给定某种隐含信息,来随机产生观测数据。举个简单的例子,
- 判别模型:给定一张图,判断这张图里的动物是猫还是狗
- 生成模型:给一系列猫的图片,生成一张新的猫咪(不在数据集里)
众所周知的imagenet-1000图像分类,自动驾驶的图片语义分割,人体骨架点的预测都属于判别模型,即给定输入预测某种特征。实际上12~14年的大部分工作都属于判别模型,为什么呢,原因之一便是判别模型的损失函数(loss)方便定义。
回到根源,什么是机器学习?一句话来概括就是,在训练过程中给予回馈,使得结果接近我们的期望。对于分类问题(classification),我们希望loss在接近bound以后,就不要再有变化,所以我们选择交叉熵(Cross Entropy)作为回馈;在回归问题(regression)中,我们则希望loss只有在两者一摸一样时才保持不变,所以选择点之间的欧式距离(MSE)作为回馈。损失函数(回馈)的选择,会明显影响到训练结果的质量,是设计模型的重中之重。这五年来,神经网络的变种已有不下几百种,但损失函数却寥寥无几。例如caffe的官方文档中,只提供了八种标准损失函数 Caffe | Layer Catalogue。
对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数的定义就不是那么容易。例如对于NLP方面的生成语句,虽然有BLEU这一优秀的衡量指标,但由于难以求导,以至于无法放进模型训练;对于生成猫咪图片的任务,如果简单地将损失函数定义为“和已有图片的欧式距离”,那么结果将是数据库里图片的诡异混合,效果惨不忍睹。当我们希望神经网络画一只猫的时候,显然是希望这张图有一个动物的轮廓、带质感的毛发、和一个霸气的眼神,而不是冷冰冰的欧式距离最优解。如何将我们对于猫的期望放到模型中训练呢?这就是GAN的Adversarial部分解决的问题。
Adversarial:对抗(互怼 )
在generative部分提到了,我们对于猫(生成结果)的期望,往往是一个暧昧不清,难以数学公理化定义的范式。但等一下,说到处理暧昧不清、难以公理化的问题,之前提到的判别任务不也是吗?比如图像分类,一堆RGB像素点和最后N类别的概率分布模型,显然是无法从传统数学角度定义的。那为何,不把生成模型的回馈部分,交给判别模型呢?这就是Goodfellow天才般的创意--他将机器学习中的两大类模型,Generative和Discrimitive给紧密地联合在了一起。
模型一览
对抗生成网络主要由生成部分G,和判别部分D组成。训练过程描述如下
- 输入噪声(隐藏变量)
- 通过生成部分 得到
- 从真实数据集中取一部分真实数据
- 将两者混合
- 将数据喂入判别部分 ,给定标签, (简单的二类分类器)
- 按照分类结果,回传loss
在整个过程中, 要尽可能的使, (火眼晶晶,不错杀也不漏杀)。而 则要使得 ,即让生成的图片尽可能以假乱真。整个训练过程就像是两个玩家在相互对抗,也正是这个名字Adversarial的来源。在论文中[1406.2661] Generative Adversarial Networks ,Goodfellow从理论上证明了该算法的收敛性,以及在模型收敛时,生成数据具有和真实数据相同的分布(保证了模型效果)。
从研究角度,GAN给众多生成模型提供了一种新的训练思路,催生了许多后续作品。例如根据自己喜好定制二次元妹子(逃),根据文字生成对应描述图片(Newmu/dcgan_code, hanzhanggit/StackGAN),甚至利用标签生成3D宜家家居模型(zck119/3dgan-release),这些作品的效果无一不令人惊叹。同时,难人可贵的是这篇论文有很强的数学论证,不同于前几年的套模型的结果说话,而是从理论上保证了模型的可靠性。虽然目前训练还时常碰到困难,后续已有更新工作改善该问题(WGAN, Loss Sensetive GAN, Least Square GAN),相信终有一日能克服。
从通用人工智能高层次来看,这个模型率先使用神经网络来指导神经网络,颇有一种奇妙的美感:仿佛是在辩日的两小儿一样,一开始两者都是懵懂的幼儿,但通过观察周围,相互讨论,逐渐进化出了对外界的认知。 这不正是吾等所期望的终极智能么 -- 机器的知识来源不再局限于人类,而是可以彼此之间相互交流相互学习。也难怪Yann Lecun赞叹GAN是机器学习近十年来最有意思的想法 https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f 。
知乎:GAN 的发展对于研究通用人工智能有什么意义?的更多相关文章
- [ZZ] Valse 2017 | 生成对抗网络(GAN)研究年度进展评述
Valse 2017 | 生成对抗网络(GAN)研究年度进展评述 https://www.leiphone.com/news/201704/fcG0rTSZWqgI31eY.html?viewType ...
- 如何利用AI识别未知——加入未知类(不太靠谱),检测待识别数据和已知样本数据的匹配程度(例如使用CNN降维,再用knn类似距离来实现),将问题转化为特征搜索问题而非决策问题,使用HTM算法(记忆+模式匹配预测就是智能),GAN异常检测,RBF
https://www.researchgate.net/post/How_to_determine_unknown_class_using_neural_network 里面有讨论,说是用rbf神经 ...
- 生成式对抗网络GAN 的研究进展与展望
生成式对抗网络GAN的研究进展与展望.pdf 摘要: 生成式对抗网络GAN (Generative adversarial networks) 目前已经成为人工智能学界一个热门的研究方向. GAN的基 ...
- 提高驾驶技术:用GAN去除(爱情)动作片中的马赛克和衣服
同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27199954 作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章.这篇就介绍利用生成式对抗网络(GAN)的两个基 ...
- GAN综述
生成式对抗模型GAN (Generativeadversarial networks) 是Goodfellow等[1]在 2014年提出的一种生成式模型,目前已经成为人工智能学界一个热门的研究方向,著 ...
- 【NLP】大数据之行,始于足下:谈谈语料库知多少
大数据之行,始于足下:谈谈语料库知多少 作者:白宁超 2016年7月20日13:47:51 摘要:大数据发展的基石就是数据量的指数增加,无论是数据挖掘.文本处理.自然语言处理还是机器模型的构建,大多都 ...
- (转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍
首页 视界智尚 算法技术 每日技术 来打我呀 注册 SLAM系统的研究点介绍 本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我 ...
- KVM的虚拟化研究及应用
引言 虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率.随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为 ...
- 为你揭秘知乎是如何搞AI的——窥大厂 | 数智方法论第1期
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 数智物语(公众号ID:decision_engine)出品 策划.编写:卷毛雅各布 「我们相信,在垃圾 ...
随机推荐
- error/exception/runtime exception区别
(1)java中的异常是什么? 异常指的是程序运行过程中出现的非正常情况或错误,当程序违反了语义规则时,jvm就会将出现的错误表示为一个异常抛出.在java中,一切皆对象,异常也是,它被当作一个对象, ...
- WorldFinal11 (2/11)
WorldFinal 11 Trash Removal 题意 给你一个多边形,问这个多边形至少需要多宽的长度,才能把这个多边形放进去. 数据范围100 题解 数据范围只有100,暴力枚举两点,然后算最 ...
- Token以及签名signature的设计与实现
LZ第一次给app写开放接口,把自己处理Token的实现记录下来,目的是如果以后遇到好的实现,能在此基础上改进.这一版写法非常粗糙,写出来就是让大家批评的,多多指教,感谢大家. 当初设计这块想达到的效 ...
- 微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客
微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客 http://blog.csdn.net/zhaorui2017/article/details/7643679 ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- [Go] Cookie 使用简介
Golang 的 Cookie web 开发免不了要和 cookie 打交道.Go 的 http 库也提供了 cookie 的相关操作. type Cookie struct { Name strin ...
- WebLogic使用总结(六)——WebLogic创建虚拟主机和修改启动端口号
一.在WebLogic中创建一个虚拟主机 找到虚拟主机面板,如下图所示:
- js中 object.constructor
- 深入理解ClassLoader工作机制(jdk1.8)
ClassLoader 顾名思义就是类加载器,ClassLoader 作用: 负责将 Class 加载到 JVM 中 审查每个类由谁加载(父优先的等级加载机制) 将 Class 字节码重新 ...
- Java并发编程的艺术(一)——并发编程需要注意的问题
并发是为了提升程序的执行速度,但并不是多线程一定比单线程高效,而且并发编程容易出错.若要实现正确且高效的并发,就要在开发过程中时刻注意以下三个问题: 上下文切换 死锁 资源限制 接下来会逐一分析这三个 ...