古往今来的人类是怎样有女朋友的?
根据2015年的数据,世界上每天大约有37万人出生,算下来平均每秒有4.3人出生,扣除掉男孩子后,大概每半秒有一个妹纸出生,当然这时候的她还没能成为一个合格的女朋友。在接下来的大概五年里,她必须一边使劲折腾父母一边慢慢学会走路,说话,写自己的名字,还有改掉随地大小便的坏习惯。这样在大概二十年后的某个大学的图书馆里,某个想不劳而获的年轻人才能偷偷瞄到她写在作业本上的名字,和她搭讪,陪她出去逛街,还有不会因为女朋友在公众场合随地大小便而让他陷入难堪。在接下去的十五年,她还必须进入幼儿园,小学,中学学习,熬过“三年起步,最高死刑”的年纪,渐渐具备和人相处的能力,习得关于自然科学与社会科学常识。由于某些男性同胞的苛刻要求,她们当中的某些人还必须学会化妆,服装搭配,诗词歌赋,琴棋书画等一些非必需的技能和具备所谓“相合”的三观。总而言之,我们的世界要耗费至少十几年的时间、大量的自然和社会资源才能培养出一个合格的女朋友。然而在这之后,在某个不明所以的晚上,那个想要不劳而获的年轻人,心不在焉对她说一句类似“今夜月色真美”这样不知所谓的话,她就傻傻地成为了他的女朋友,而对自己"历经苦难才变得像现在这样聪明可爱,他根本没有一点功劳”这样一个事实不知不觉。
然而这大概就是人类几百万年来拥有女朋友的唯一方式。
这样培养女朋友的方式存在什么问题?
在程序设计中存在着类似“不要重复造轮子”以及”Don't Repeat Yourself“的思想。意思大概是,比如你想制造一辆车,你不必从怎么造轮子想起,而可以利用前人已经造好的轮子。【在程序员的开源世界中,假设现在全人类想要一起造一辆会飞的汽车,其中程序员拉里佩奇带领了100人的团队率先成功地制造了飞行汽车的轮子,那么他就会把这个制造方法公开,这样全世界的其他人只要复制粘贴一下他的代码,大家也就会造飞行汽车轮子了,之后全人类就可以在这基础上继续研究飞行汽车的其他部分如发动机等,而不需要在造轮子上继续浪费时间。所以全人类是在齐心协力一起推动科技的发展。当然也有某些公司比如苹果、微软等,因为商业利益等原因不愿意接受开源。这也是我们能用到本土化(被中国人改造过)的安卓(比如MIUI),而却用不到本土化的IOS的原因。】所以对于程序员来说,很容易就能发现在培养女朋友的这个过程中,一直在重复造轮子和repeat yourself。不知道在几百万年前直立人就学会了走路,不知道在几千年前人类就拥有了文字和语言。以及可能一两百年前某些利益熏心的欧洲商人就强行发明了化妆、喷香水的技能,以及提出服饰具有时尚与否的概念。然而现在刚出生的女孩子却不是生下来用一秒复制粘贴一下就能继承这些走路,说话,化妆,欣赏等有人类早已经就掌握的技能。这无疑是一个十分低效的事,也是导致目前供求不平衡,也就是大多数程序员找不到女朋友的原因之一。对此,我们感到非常angry。我们呼吁全天下的程序员一起来努力创造一个人人都有女朋友的美好世界。
那么怎样去解决这个问题?答:我们自己动手造一个。
怎么无中生有造出女朋友呢,程序员首先想到的当然是”电脑“。
计算机刚被发明制造的时候是单纯被当作计算器来用,但是后来有一些聪明可爱的女孩子,比如美海军准将及计算机科学家葛丽丝·霍普(1906-1992),世界上最早一批的程序员,也是最早的女性程序员之一。她告诉我们计算机不仅能算数,还能做其他事,并且动手创造了第一个编译器系统。人们不得不相信计算机还能做其他事。
目前我对计算机程序的理解是,你给它一个输入,它经过一些你预先写好的处理过程,然后返回一个输出。比如说,我们在百度上搜索一个词,它返回给你一堆网页。我们在优酷上点击播放,它给你展示一段视频,还有比如我们扔给它一个生鸡蛋,它返回你一个煮鸡蛋。
什么?你说程序不能用来煮鸡蛋?
这就未免太侮辱人类的智慧了。实际上,从广义上讲,我们接触到的大部分机器,都可以称为计算机。像煮蛋器,电磁炉,电视机,冰箱这类的电器,它们与电脑的不同之处只在于它们是只能按照特定的程序实现特定的功能,而电脑可以通过编程这一活动来创造更多的功能而已。就像淘宝上简易的煮蛋器,他的程序可能类似于【当(有水)时,接通电烙铁】所以在没水的时候他会自动断开。所以要让”狭义上“的电脑实现煮鸡蛋的功能,只需要在笔记本旁外接一个电烙铁就行了。(或者直接试试小米的产品?)顺便说一句,现在被媒体热炒的”智能硬件“以及”物联网“之类的概念与此有一定关系。比如我们给冰箱加个摄像头,编写一段实现自拍功能的程序,那么冰箱就有了自拍的功能,即所谓“智能冰箱”。之后我们再给冰箱接上家里的WIFI(物联网),然后比如你下班的时候想着回家喝啤酒,又因为忘了家里有没有啤酒这件事而犹豫去不去超市买的时候,就可以给家里的冰箱发条微信”嘿,给我发张自拍“,然后就可以看到里面有没有啤酒了。
所以现在,我们的电脑已经具有煮鸡蛋和给我们发自拍的功能了,是不是.....开始有点像女朋友了?
当然,你可能会说,“啊,女朋友不应该是一个接着键盘电烙铁冰箱的怪物”。确实是这样的,不过庆幸的是,我们也不用女朋友来打字,煮鸡蛋,储藏食物。
所以我们首先应该思考,人造女朋友应该是怎么样的,应该会点什么。
首先我们当然希望她和人类一样有身体发肤,这不是计算机科学的范畴,我们只能将希望寄托于材料科学的发展,即使目前为止,我们也已经有了许多优质的可选材料,比如可以用碳纤维之类的材料来制作头发,用钛合金来制作骨架,用氧化锆来制作牙齿,以及硅胶之类的来做**,(似乎现实中的不少女朋友也在某些地方含有这种成分)。在这方面,我们不是专家,所以应该拉拢日本某些产业的专家来参与这个项目。
到目前为止我们已经有了一具高仿人类的肉体,其实这已经满足某些死宅对女朋友的要求了。当然我想绝大多数人所想要的不绝于此。
除了拥有一具肉体,我对人类的理解是它们至少要具备对外界不同的情况,条件做出一些不同的反应。麻烦的是人类具有各种不同的性格,特别是“女朋友”这种群体,有时候饿了却说不饿,不爱的时候自欺欺人,爱的时候却说“我放弃了”。当然这可能让世界变得更加丰富多彩,但对计算机科学家来说却可能是件难事,程序必须具有确定性,在特定的输入下应该有特定的输出。所以对于我们而言,造一个诚实的女朋友可能要容易一些。《霍乱时期的爱情》里对诚实的定义是:诚实的生活方式其实是按照自己身体的意愿行事 饿的时候才吃饭 爱的时候不必撒谎。
好了,所以我们现在的目标就是造一个诚实的女朋友,他能对外界不同的条件做出诚实的回应。
我们首先来观察一下自古以来人类培养女朋友的方式,比如,蹒跚学步,牙牙学语什么的。我们现在可以从一些现有的科技获得一些启发。比如谷歌无人驾驶汽车的项目,我们可以从中获得“让女朋友学会走路”的一些启发。牙牙学语对应的则是计算机科学火热的研究领域自然语言处理(Natural Language Processing)。【语言产生的目的是为了人类之间的通信,实际上人说出一句话,是对大脑的思想做一次编码,听的人获取了这串编码后,再在大脑中解码以此获得信息。这是语言的数学本质,不同的语言实际上则是不同的编解码方式。编程语言是人类与计算机通信的方式,它和自然语言有着许多共通的地方,这也是它也能被称为语言的原因。自然语言经过几百万年的淘汰和发展,已经具有许多优良的特性,它在无意中也窃合了计算机编码中的某些思想,(例如:哈夫曼编码,大概即出现越频繁的词语用越短的位来存储)比如要表示自己“中文:“我” 英文:“I” 日语是“私(わたし)”人类不会造出一个有十几个汉字或者假名来表示一个这么频繁使用的单词”。目前为止计算机已经掌握了大概一百多种语言(c,c++,python.java...)。所谓自然语言处理,大概就是让计算机再多学会一门语言(汉语,英语之类)。当然很显然这不是一件容易的事。我们的大脑比计算机聪明灵活一万倍,对于我们而言,学会一门新的语言也没有那么容易。更何况,编程语言和自然语言还存在很多区别,例如自然语言具有二义性,模糊性。即使人类的大脑也不一定总是能正确理解自然语言。而且我们在之前说过了计算机喜欢确定性。当然目前她听得懂编程语言,不过我相信没人会乐于和女朋友用编程语言沟通的,所以现在的问题是我们怎么教会我们的人造女朋友说汉语?在解决这个问题上,科学家们曾经走过一些弯路。在20世纪50年代至70年代,人们把学习语言的思想局限在规则和语法之中,它们教给计算机例如(名词+动词+名词)这样的规则以避免计算机说出“play basketball I”这样错误的语句,但是计算机仍然无法分辨是“I play basketball”还是"basketball play I"。我在想我们曾经在学习英语的过程中也陷入过分重视语法和规则的误区。在当时,包括信息论的鼻祖香农也陷入了这样的误区,人类在这二十年之间几乎一无所获。70年代后,人们依靠数学模型和统计解决了这个问题,人类慢慢教会了计算机自然语言,很明显Siri之类的产品依赖了这一基础,至于数学模型和统计如何解决这一问题,我觉得实际上这很接近于我们小时候学习母语的方式(通过输入大量的语言材料,然后建立一定的奖赏机制)。我待会再讲】
现在我们的人造女朋友已经掌握了汉语,具备了表达思想和接受信息的能力。这是一个巨大的进步。当然这仅仅只是一个成型女朋友的一小小小部分。学会语言并不代表她已经会运用语言,她现在已经学会了说我爱你,但是我们当然只希望他在见到你的时候才说这句话,而不是见到隔壁老王也说。所以我们需要让她拥有视觉,我们很容易想到摄像头,我们确实发明了高清高速的摄像头,在未来的某一时刻,他可能会赶上并超过人眼的频率和分辨率。但是拥有视觉并不意味着能理解事物,就像我们小的时候,也是每见到一个陌生的东西,就吵着妈妈问“这是什么,这是什么”,日积月累慢慢认识了世间万物。怎样教会计算机理解东西?这与计算机视觉以及机器学习这两个计算机科学前沿领域是有关系的。在教会计算机识别图像的时候计算机科学家也陷入过误区,同自然语言处理一样,因为囿于规则和语法,在较长时间内没有取得进展,科学家试图教给计算机这样的规则(有两个三角形的耳朵,圆圆的头,还有胖乎乎的棕色的身子)就是猫,这同样不是一个聪明的方法,因为可能它见到狗,熊也会说是猫。有些科学家比如李飞飞教授就改变了思路,通过给计算机看一堆图片并告诉它这就是猫,在参数足够多样本足够大的情况下,计算机慢慢学会了识别猫。在这方面,可以看李飞飞教授在TED上的演讲(网易公开课上有)。她比我讲得要清楚的多。并且她的研究已经取得了巨大的进展。在TED中她也提到了她开源了这些数据,所以我们没有必要重复造轮子。可以放心地把这项任务交给她,然后去关心下一部分。
现在在世界各地上的不同实验室,有各种各样的顶尖科学家在教会计算机不同的事,比如前不久轰动棋坛的阿法狗,所以如果Deepmind肯开源自己的代码,我们就会拥有一个围棋世界冠军级女朋友。当然,我们的祖国也为此做出了许多贡献,比如说我们教会了机器人怎么做刀削面。比起下围棋,这可能是个实用得多的技能。
机器学习这门科学将帮助我们很多。教机器如何学习,那么在造女朋友的这个过程中很多难题就可以靠这个技术去解决(当然具体的操作以及实现仍然困难重重)。不会的想会的就去学习。学习学习学习我们生命中最重要的两个字,现在机器也会学习了,那么我想:在开源的世界下,大家齐心协力地去完善这么个项目。在不久的将来,我们就能创造一个人人都有女朋友的和谐幸福的世界了。
有些人可能会认为,人造的女朋友再怎么黑科技高智能也没法真正赶上自然人。确实。人类绝不仅仅是是一台给他一个输入返回一个输出的机器,绝不仅仅是为了具有几个特定的功能,为了做事而生。人类有情绪,情感,有创造力。至少目前为止,我们没有思路去让计算机也具有这些东西。然而根据李飞飞教授所言,人类的眼睛和大脑经过5亿多年的时间才慢慢有了理解所见的能力。所以我相信我们需要的只是时间。
最后,我想,在人类真正具有造女朋友能力的时候。必然会出现一些“难以接受”的伦理问题之类的。人们常常高举缅怀过去,崇尚自然的旗帜,来给反抗科技的发展,做些无谓的挣扎。就像通信网络四通八达的今天,文学家会说“从前的日色变得慢,车,马,邮件都慢,一生只够爱一个人”。搞得好像,是因为有了发达的互联网才让年轻人失去纯情,而不是它们心里早就埋下了想不劳而获的种子,才有了互联网。