正确的提示信息

扫码打开虎嗅APP

从思考到创造
打开APP
搜索历史
删除
完成
全部删除
热搜词
2017-10-24 22:17

别太迷信AlphaGo Zero,AI从0自主学习还远着呢

虎嗅注:本文作者山世光,原标题为《山世光:人脸识别从0开始自主学习的可能性》。


以往,我们提起AI,有一个共识,即它在某些方面已经碾压人类,比如下围棋;它在另一些方面远不及人类,比如认识一只动物、认识很多只动物。原因之一是AI自主学习能力远不及人。

 

前几天,AlphaGo Zero横空出世,从零开始,闭关72小时自我对弈围棋,即100:0完胜之前用了几个月时间成长、胜了李世乭的AlphaGo。这似乎表明,开发某个专项智能时,AI算法不再像过去那样动辄需要百万、千万量级的有监督大数据,算法甚至可以从0数据开始自主学习,顶多只需大规模无监督数据。 

 

于是,很多人惊呼AI自主学习的时代到来了。似乎很快就会有一个叫做AI Zero的学神小宝贝横空出世,自主狂学一个月,马上长大成人,变成一个智商、情商超越人类的AI 100。

 

但事实恐怕并非如此。

 

我本人是做计算机视觉研究工作的,尤以人脸识别方面的研究比较多。便借AlphaGo Zero之东风,我也做了个Face Zero的梦,想了想人脸识别从0自主学习的可能性。

 

AlphaGo Zero自造数据的思想很难扩展到Face Zero

 

先看看AlphaGo Zero学神怎么做的:从0开始自造数据。对人脸来说,这个第一步就有点悬了,如何造人脸呢?围棋有明确的落子规则和输赢判断准则,按规则模拟对弈即可造出大量有监督的数据。可人脸如何从0造?如果没有任何的人脸样例或知识,除非上帝他老人家在,否则怕只能造一堆“鬼脸”出来——反正谁也没见过鬼,怎么造都行。

 

如果这样,怕是这梦只能醒了。

 

那,至少给一张人脸,让算法自己“举一反三”,创造千千万万张人脸可行吗?比如给算法一张大奥黛丽赫本的人脸图像,让算法把赫本这张人脸照片变啊变,变出1000幅赫本女神的人脸图出来,再变出成千上万不是赫本女神、但长相合理的人脸。

 

且不说怎么变形的难题,这里面有两个问题需要解决:


1/ 如何保证算法“举一反三”变出来的人脸还是女神的脸而不是孙悟空、猪八戒的脸部照?


2/ 如何保证算法可以“举一反三”变出奥巴马、猫王等各种人的脸部照?


要解决这两个问题,我们需要大量人脸的样例或其他知识,比如人脸的3D结构、成像的物理模型、老化模型、表情模型、眼镜模型等等。

 

这就和最初“给一张人脸”的假设矛盾了,这梦便只能是南柯梦了。

 

再退一步,即使我们有赫本女神人脸的3D结构和成像模型等,这两个问题仍然需要解决:什么幅度的3D形变,比如变胖或变瘦或变老,可以确保还是赫本本人而不会变成其他人? 什么样的形变可以确保变出一个合理的人脸,而不会变出一个史瑞克或猪八戒?

 

人脸识别在这里体现出一个和围棋对弈的较大差别:围棋有明确的胜负判定规则,而人脸识别并没有一个这样的“判定”规则。所以,人脸识别算法如果也使用对AlphaGo至关重要的增强学习方法,借“试错”实现自主学习,不太现实。这就像学生做模拟题,如果做完题不给他答案,不给他讲错在哪,什么是对。他恐怕难以进步。

 

使用大量无监督数据的思路也很难扩展到Face Zero

 

退一步,看看AlphaGo Zero其他地方有没有值得借鉴的。据AlphaGo Zero的论文所说,其核心之处是用增强学习来自动学习用于启发式搜索的评分函数(价值网络)。对人脸识别来说,其核心实际上也是学习一种评分函数,即计算两张人脸照片的相似程度:同一人图像相似度尽量高,不同人相似度尽量低。

 

看起来有点机会。既然从0或从1开始不行,那么,是否可以给算法1亿张无监督(即没有标签)的人脸照片数据,然后让Face Zero借鉴AlphaGo Zero的思路学习评分函数呢?

 

遗憾的是这也不行。因为我们使用的是无监督人脸图像,我们不知道这1亿幅人脸图像是多少人的图像,其中哪些是同一人的,人脸识别算法又不能像围棋算法一样自己判断对错和好坏,当然就没办法自我增强起来。

 

所以学习这个相似度评分函数失去了依据。

 

又是南柯一梦。

 

看到这里,懂生成式对抗网络(GAN)的读者可能会反驳:有了大量人脸图像,即使是无监督的,我们也可以用GAN这样的类“增强学习”策略来生成各种看起来符合真实人脸“分布”的人脸图像。

 

这样一来,给定一张赫本女神的人脸图像,Face Zero就可以生成她的各种美图了吗?可是,问题在于,没有了那些重要的监督信息,只能保证GAN生成的人脸图像看起来是张脸,但没法保证她不会变猫王或奥巴马。

 

这举一反三的想法,恐怕还是不行。

 

AlphaGo Zero的思想对减少人脸识别有监督数据需求量的价值较小

 

再退一步,AlphaGo Zero的思想是否可用于减少有监督数据的需求量呢?例如,按照目前的方法论,用深度学习做人脸识别,首先需要收集整理尽量多的人脸图像,比如100万人的1亿张有标注的照片,然后让深度学习算法用这些图像学习如何提取可以区分不同人脸的好特征或者如何计算相似度评分函数。

 

比如,先给人脸识别算法提供1万人的有标注人脸图像,让它学会区分1万人的人脸,然后让它“举一反百”、“举一反千”、“举一反万”,即从这1万人造出100万人、1000万人、1亿人,甚至全球所有人的图像。

 

这个想法如果可行,那我们对数据的需求量就减少了100倍,这意味着在收集和标注数据方面,大幅降低了成本,从而使得深度学习算法的易用度“蹭蹭”的提高。

 

为此,一种可能的办法是用GAN这样的类增强对抗算法“创造”不同的人脸。在“创造”第10001个人的面部图像时,要求其既与之前的10000人都不同,又要确保第10001个人的面部图像看起来是真实的照片,而不是卡通人像或鬼脸。

 

遗憾的是,按照目前GAN的思想,是有局限的。GAN可以“内插式创造”,要“外延式创造”是有极大风险的,设想:如果算法能从10000个白人自动外延出从没见过的某个黄种人,怎么保证不外延出绿巨人?如果算法能从10000个鹅蛋脸自动外延创造出从没见过的国字脸,怎么保证不创造出被压扁的长条脸?

 

那么,我们把GAN的能力限定在内插式创造。这要求我们在上面提到的10000个人具有足够的代表性。“代表人”经过精心挑选,均匀覆盖各种面部属性,如肤色、男女、脸型、眉形、眼型、嘴型、高低鼻梁、高低颧骨、粗细肌肤……这样一来,就可以内插创造出各种可能的人脸了。

 

但是,10000人是否足够代表整个人类的特征?这里涉及几十甚至上百种面部属性的组合。每多一个面部属性,组合结果的数量便多几倍,呈指数爆炸式增长。就算每个属性只有2个可能的取值,比如男女,即使只有14种面部属性就有超过10000种组合。更何况,很多属性有很多取值,比如脸型、肤色、眼型,组合数就更多了。

 

如果每种组合我们需要至少一个“代表人”(实际可能有些组合1个代表还不够,也有可能某种组合并不存在),这意味着我们需要的“代表人”数恐怕远远不止10000人…

 

Face Zero的梦真要醒了吗?

 

减少有监督数据需求量的其他可能

 

别急着放弃做梦,上面的推演中并没有考虑人类对面孔的认识。


以人脸识别为例,解剖学专家或许可以制定出一些“规则”,告诉我们什么样的脸部改造可以“创造”出不同但又实际存在的人脸。如此,便可使用少量有监督数据“创造”出或者说“虚拟”出大量数据,从而使得深度学习的易用性更高。

 

举个例子,如果我们有10000个“代表人”的3D头部模型,以及相应的可以修改这些头部模型的方法,加上上述的“解剖学专家经验”,就可以像上帝一样创造出千千万万的人脸,且还是实际存在的、合理的人脸,而非绿巨人的人脸。

 

这样一想,似乎最开始的想法在一定程度上成真了。但遗憾的是,这种想法离我们最初渴望的从0自主学习差了十万八千里了:既需要众多的精确监督3D人脸数据,又引入了大量的不容易用程序实现的“专家知识”。

 

总之,仅仅以人脸识别Face Zero为例,AlphaGo Zero的启发是微弱的。谨慎乐观的说有一些,但这种启发并非AlphaGo Zero带来的,而是那个下围棋胜过李世乭的AlphaGo,甚至之前就已经有的“对抗增强”思想带来的。

 

这令人遗憾。实际上不仅仅对人脸识别,对自然图像识别任务,对语音识别任务,对医疗诊断任务,对自动驾驶任务等众多问题,AlphaGo Zero的算法都难以产生直接的作用。


背后的根本原因在于:与围棋最终可以自判输赢不一样,对这些任务不具备AI算法自判对错的能力,也就难以形成以自我奖惩为目标的自主学习。


作者注:本文的推演并不说明AlphaGo Zero的算法对所有AI问题都没有价值,事实上,它对一大类AI问题的解决,特别是棋类、游戏类、模拟训练等任务,将带来方法论上的巨大变迁。


作者简介:山世光,研究员,中科视拓创始人、董事长兼CTO,超过20年计算机视觉研究经验。已在国内外刊物和学术会议上发表论文200余篇,论文被谷歌学术引用10000余次。研究成果获2005年度国家科技进步二等奖,2015年度国家自然科学二等奖等。

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系 hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
打开虎嗅APP,查看全文
频道:

支持一下

赞赏

0人已赞赏

大 家 都 在 看

大 家 都 在 搜

好的内容,值得赞赏

您的赞赏金额会直接进入作者的虎嗅账号

    自定义
    支付: