向电脑学习

作者:薛巍

算法的日常应用

当你在一个大城市租房时,怎样才能使自己租到最好房子的概率达到最大?认知科学家说,假如你给自己一个月的寻找时间,你应该把其中37%的时间(11天)用于探索你的选项。过了这个时间点之后,你就要租下你看到的第一个胜过之前看过的房子的那套房子。这不只是靠直觉来决断,而是最好的解决方法。因为找房子属于数学上的“最优停止”问题,37%法则决定了解决这类问题的算法。

布莱恩·克里斯蒂安是《华尔街日报》记者,汤姆·格里菲斯是加州大学伯克利分校的心理学和认知科学教授,二人合著了《赖以生存的算法》一书。书中说:“算法”一词总让人觉得高深莫测,但一个算法其实就是用于解决问题的有限的步骤序列。算法比电脑更广泛也更古老。算法早在被机器使用之前,就在被人类使用着。“算法”一词因9世纪波斯数学家阿尔-花剌子模而得名,他写过一本书叫《代数学》,但算法不只限于数学领域。“当你按照食谱烤面包时,你在遵循一套算法。当你按照图谱织毛衣时,你也是在遵循一套算法。当你用打火石磨鹿角、制作石器的时候,你也是在遵循一套算法。自石器时代以来,算法就一直是人类技术的一部分。”

向电脑学习0

向电脑学习1《华尔街日报》记者布莱恩·克里斯蒂安(左)、加州大学伯克利分校的心理学和认知科学教授汤姆·格里菲斯及他们合著的《赖以生存的算法》

许多人对电脑都有一个误解,以为电脑会为困难的问题找出简单、正确的答案。其实计算科学关心的是困难问题的近似答案,因为如果简单完美的答案果真存在的话,找到时也已经晚了,也许要到宇宙毁灭之后。计算科学总要面对限制。我们让计算机以闪电般的速度做许多事情,但是它们的处理能力是有限的,所以总要权衡。什么时候快比准确更好?什么时候要准确而不是快?计算机在什么时候要停止搜寻完美的解决方法,转而给出一个手头就有的大致的办法?这跟人在生活中遇到的问题类似。

找停车位跟找房子一样,属于“最优停止”问题。人们都想找一个离自己的目的地比较近的停车位,但在不断靠近目的地时,每当你经过一个空的车位,你都要做一个决定:是就停在这里,还是再往前开看看自己的运气是否足够好,前面还有车位?假如你走在一条无限长的路上,停车位是均匀分布的,你的最优选择是驶过一定距离内的所有空车位,然后停在之后的第一个空车位上。至于多远的距离,这取决于车位的被占用比率。如果99%的车位都被占用了,你应该在距离目的地还有大约70个车位的地方(1/4英里)之后,再看到空车位就该停车了。类似地,如果一个人打算从18岁开始找对象,并在40岁以前结婚,他应该选择在26岁时遇到第一个心仪的对象。

另一个对日常生活有帮助的算法叫摩尔算法。冰箱里的每一样食物都有不同的保质期,先吃马上要过保质期的食物能够最大限度地减少浪费。但有时候快过期的不是你最想吃的,为了把坏掉的食物降低到最少,可以使用摩尔算法。按照摩尔算法,我们按照食物的保质期食用,最先过期的要最先食用,但一旦看上去我们无法及时吃掉下一样食物,我们就暂停,检视一下计划中想吃的菜,然后扔掉最大的那一种,即需要最多时间才能吃掉的那一种。比如可能扔掉那个好几次才能吃完的西瓜,这样才能早点食用后面的所有食物。然后重复这一模式,按照保质期摆放食物,赶不及时就扔掉其中最大的。

哥白尼定律

两位作者在书中写道:“媒体经常告诉我们,我们生活在大数据时代,计算机能梳理大量数据,找出裸眼看不见的模式。但日常生活中我们遇到的问题与此完全相反。我们的生活充满着小数据。我们经常要从很少的数据中做推断,少到只有一个简单的观察。”

要想用很少的数据对未来做出预测,最好使用“哥白尼法则”。哥白尼认为地球在太阳系中并没有享受特殊待遇。这一发现被发展为哥白尼定律,表示我们并不特别,也没有受到宠爱。天体物理学家理查德·戈特提出,判断事物的时间位置也可以采用哥白尼定律,不靠其他的信息,就能估算出事物的寿命。1969年,戈特在前往普林斯顿大学攻读天体物理学博士学位前,前往欧洲旅行。在那里他看到了8年前修建的柏林墙。站在墙下时,他开始琢磨,这道墙还能持续多久。仅仅从一个数据点做预测从数学上看很可笑,但其实我们每时每刻都不得不做这种预测。你到了一个陌生城市的公交车站,得知另一个游客已经等了7分钟,下一辆公交车大概何时到?值不值得等?等多久之后应该放弃?

当理查德·戈特抵达柏林墙时,他问了一个问题:我处于何地?即在一个人造物品的寿命中,他到了它的哪个点?这是一个时间问题,哥白尼问的是空间问题:我们在哪里?地球在宇宙中的哪里?哥白尼提出,地球并不是位于宇宙的中心,地球不是处于一个很特别的地方。戈特决定对于时间也这么处理。他假定他遇到柏林墙的时间并不特别,它可能是这个墙的一生中的任何一个时间点。如何任何时间点都有同样的可能,那么平均来说他到的时候是它的中点。更一般地说,除非我们能知道更多,不然我们可以假定我们处于任何现象的中点,这样它们将持续多久就很明显了:跟它已经持续的时间一样长。这一推理方法戈特称之为哥白尼定律,由此能得出一个预测一切的算法。它预测美国还能延续到大约2255年,谷歌能延续到大约2032年。

如果有人去一个建筑工地找工作,看到一个告示牌上说“自上次事故之后已经过去了7天”,那最好躲远点,除非想找的是特别短的工作。如果公交系统没有提供实时信息,告知乘客下一班车何时到,哥白尼定律表明有一个简单、便宜的做法:只要显示前一班车抵达后过去了多久就行了。但有人发现,使用哥白尼定律会做出一些错误的预测。如果你遇到一个90岁的老人,哥白尼定律会预测他将活到180岁,而每个6岁的孩子预计能活到12岁。因此,哥白尼定律只有在我们对预测目标一无所知的情况下才合理。对于我们有些了解的东西,它会让人觉得完全是错的,预测一个90岁的老人能活到180岁显得不合理,只是因为我们很了解人类寿命的范围。

另一个决定哥白尼定律是否适用的因素是事物的分布状况。人类的寿命属于正常分布,其形状是钟形曲线。比如美国人的平均寿命是76岁,在曲线中它位于“钟”的顶点,在它的两侧(低于和高于76的)都下降得比较快。自然界中的许多事物都是正常分布,从人的身高、体重、血压到一个城市正午的气温和果园中水果的直径。但世界上还有许多东西不是正常分布的,比如美国城镇的平均人口是8226人,但有的城镇人口远多于平均数,有的少于平均数,这种模式叫幂律分布或者无尺度分布,因为其数值可能是各个尺度的。日常生活中有些现象跟城镇的人数一样,大部分低于平均值,少数高于平均值,比如电影的票房、人们的收入。 算法

上一篇: 自行车的故事
下一篇: 死生契阔