今天是1024程序员节,首先祝各位程序员节日快乐!今天就说一说轻松的事情吧。
这里我们只是针对目前以深度学习作为方法进行人工智能实现的一点想法和探讨。对于其中技术细节不在此进行讨论,仅做科普探讨。
关于人工智能的类型划分,以及最终目标,之前已经讨论很多,例如强弱人工智能、人工智能1/2/3型划分等。这里我只是想提提自己的一些看法。
智能这词含义广泛,既不是指知识也不是指智慧。其实它包含不同层次的能力:
当然,智能只从实用的角度来讲是这样,但是我们从来不害怕人工智能在这条路上越走越远,我们害怕的,其实是我们自己,那就是自我意识。人类之所以害怕人工智能,并不是因为人工智能的能力超越了人类,而是害怕人工智能拥有了自我意识,开始能够反思自己,尤其是人类的存在。这和编码进人类的基因里的恐惧感有关。
我们都在进行通用人工智能(Artificial General intelligence, AGI)的科研活动,我们希望人工智能最终不仅在行为上与人类相似,甚至是在生理和心理上,都和我们人类相类似,它具有听说读写,会思考,能行动的一个物种。
那么我们现在认为人工智能成功的标志是什么?那就是超越人类水平。从国际象棋开始,围棋、德州扑克、麻将甚至是星际、魔兽和王者荣耀,人工智能在策略类游戏中攻城略地,完全击败人类最强选手。
这时有人就会说,这种都是特殊任务的人工智能,它们只能在某一任务上取得如此成就,换到其他任务中,就没有那么有效了。
我们的终极目标当然是要人工智能不仅仅可以在某一任务取得最优的性能,而且它能在某些方面,甚至是所有方面都可以取得最优性能。这才是我们想要的通用人工智能(AGI)。就像我之前说的那样,想拥有这样的一个AGI,那分明是要造一个无所不能的神。这样,先不说能否实现,即使实现了,那整个世界也只需要一个神,至多需要它的复制品即可。
考虑这样一个新的物种,物种具有分化性,有些个体擅长一类任务,另一些个体擅长另一类任务。这些物种在内部可以将自己的知识进行传递下去,而物种之间很难进行交互和传承。
星际中的虫族给我们留下了深刻的印象。只需要一个虫后,其他的虫都各司其职,擅长近战的,擅长远战的,擅长策略与擅长运输的,各不相同。在不同领域的虫子只需要进化的适应该项任务就好,从而完成整个虫群的进化。回到我们人类内部,随着社会的发展,每个人只需要专注于很小的一个部分即可,这叫做社会分工。
其实人工智能大可以朝着这种方向发展,只是这个方向的前景远不如“造神”更加令人向往罢了。但是上一个尝试完全仿生学的是飞机,自古以来,一直想模仿鸟儿扇动翅膀飞翔,一直都是失败的。终有一天,人类发现了空气动力学的理论和规律,从而飞机才真正的进入到了人类文明之中,并且作为目前最先进的运输工具翱翔于蓝天之上。这和鸟类的飞翔方式是迥然不同的,但是更符合人类的要求:更快、更舒适、更加健壮。
进化分为两个方面,一方面是宏观上,人工智能正在攻陷一个又一个人类的智慧结晶。另一种,是微观上,在特定任务上,人工智能的能力越来越强,直到某一天超越人类最顶尖水平,就可以划归到宏观上了。但是这两项进化目前仍然归属于人类智慧,离开了人类,人工智能根本不能完成进化过程。
至于像alphago, alphago master, alphago zero,他们更像是3代人,而并非一个人的3个阶段。当然也有其衍生版本可以博弈更多的棋种,但是本质上,没有差异,只不过在训练时的目标不同而已。
真正想让人工智能拥有自我迭代功能,类似强化学习的方法、老师-学生网络、迁移学习等方法必不可少,我认为它应当具备以下3个能力。
自我学习功能:
这里指的是类似通过与外界的交互,自动的学习某一任务的能力。目前我们大多专注于这个领域,像目前的强化学习、迁移学习等都是为了解决这个问题。
自我进化功能:
这里指可以通过自己对于已有知识的整合,从而变得更快的完成某项已掌握的技能。这个像目前的老师-学生网络、知识蒸馏、表示学习等方法也是在此路上进行探索。目前做的好的,就是融入了人类智慧的人工迭代,像alphago, alphago master, alphago zero这种进化(开个玩笑)。
自我繁衍功能:
这里指的是人工智能可以通过自己对另一个体进行教授,从而完成知识的升华与迁移。目前我们仅仅是只能复制,有点克隆人的意味。而像父母与子女,老师与学生的这种关系,我们也局限于如何做好父母与子女之间的协调,却忽略了子女有一天也要成为父母的迭代过程。
学生的知识不是直接通过数据,而是通过老师进行获得。老师教授的不仅仅是真实的答案,更多的,应当是思考问题的方法。现有的学生-老师网络,都是为了让复杂度降低从而达到类似的效果,老师网络比较大,计算比较慢,学生网络比较小,计算比较快。我觉得这样做有一定的现实意义,但是完全不可能出现青出于蓝而胜于蓝的教学本质。只有越来越大,就算不大,也要能学到不同老师赋予的知识,这才行。而且,目前学习的不是方法,而是目标(一是和真实答案作比较,二是和老师答案作比较),这种学习方法仍然过于粗暴。
在老师学生这个场景下,其迭代过程分为3个部分,分别是学生->老师,学生->环境,学生成为老师3个部分。
例如,我们如果教学学生学会解一元二次方程,老师不仅仅给出解题步骤,而且还会给出解释和说明。这个解释和说明与我们所要学习的隐变量之间还是有差异。但如果是我们自己对着参考答案学习,那基本上就是依葫芦画瓢的方法。即使我们看过正确答案如何进行求解,我们也需要加上自己的理解才能够真正掌握,否则当我们见到一个新的题目时,就容易陷入不会求解,或者求解错误的情况。
学生->环境
当然,在学生自我学习的过程中,基本上也是来源于两个方面。一方面来源于观察,另一方面来源于参与。所谓的观察就是遇到一个问题或者情境时,别人是如何解决的?一个比较明显的例子是,学生做题时,看参考答案学习解题过程。二所谓的参与,则是自己亲自参与有人指导的解题过程,这基本上就是老师课堂演练的过程。这两者没有谁优谁劣,因为这要考虑到资源与效率的平衡。
学生成为老师
这一个方向目前我们看到的还比较少,那就是如何完成从学生完成到老师角色的转换。这里比较接近的是遗传与自我迭代,但是这里有两个不同。
第一个不同就是学生和老师的目标不同,学生是要学的好,而老师是要教的好。另外一点就是两者的结构不同。相比较老师,学生的知识架构有可能是不同的,尤其体现在对于知识掌握的更加精炼和有序(这要多亏了老师的教导以及自己学习的初始化阶段)。而现在多半是在自己的基础上进行不断的迭代,因此才出现“忘记”了不该忘记内容,反而没有“忘记”该忘记的内容。当然,我们目前仍然先解决让人工智能先记住自己应该记住的。
事实上,我们对于目前的模型在整个学习中的角色还是比较模糊的。有时候,我们把它看做是一个智能体的代表。有时候,又把它看做是大脑反馈。还有时候,把它看做是规律的存储。其实目前任何一个人工智能的模型,都需要一个系统进行表示。我们现在所做的很多模型,都仅仅是这个系统中的一部分。这就像是一个标准化组件,给定特定的输入,就会有特定的输出。这样,看起来更像是大脑中的其中的一小部分。