向计算机学习思维原则
在计算机的算法思维里,所有的原则都必须排序、都必须编码、都必须有高阶低阶的次序、都必须能处理实际出现的所有情况。这真正结合了原则性和灵活性。
最近“算法”这个词的提及率越来越高。这说明什么?说明整个社会越来越意识到,人类文明到了一个重要的关头。过去,是人类来创造计算机算法,而未来,人类要反过来向计算机学习算法思维。
“算法思维”和日常思维有什么区别?这一篇我们简单和大家聊一聊。
最重要的一个区别是,算法思维是有原则的,而人类的思维很难有坚定的原则。
《战争论》的作者克劳塞维茨讲过一句话:“制定原则并不难,难的是始终坚持原则。”这句话听起来是句大白话,但是道出了人类思维的一个根本性的难题。我们在日常生活中,经常跟别人说“这件事原则上可以”,实际上是什么意思呢?现在不可以;或者反过来,“这件事原则上不行”,实际意思就是特殊情况下也行。
在潜意识中,我们就是认为原则是可以用来打破的。但是之所以要有原则,就是因为不能有例外,这难道不是一个问题吗?
过去,我们觉得计算机很笨,它只会坚守原则,机械地执行指令。人要灵活得多,没错,这是人的巨大优势。
但是现在情况变了,如果着眼于未来,计算机的这种笨,反而要成为人学习的对象。为什么?因为人要处理的情况越来越复杂,灵活性带来的优势越来越小。相反,没有原则带来的劣势越来越大。
举个例子说,业余做投资的人都模模糊糊地知道一个原则:绝不能用杠杆借钱去投资。道理很简单,一旦投资失败,不仅血本无归,而且债台高筑,人不能玩自己玩不起的游戏。有没有例外呢?很多人会觉得有。比如,这个投资机会是我最好的朋友告诉我的,一家大机构为这个投资机会做担保,很多有钱人、聪明人也加入了这个投资机会,那我要不要借钱用杠杆赌一把呢?
在小规模的人类共同体中,比如一个村里,这么想问题不大。因为复杂性有限,可以调用人的灵活性,去判断机会、判断人性、判断具体的机会是不是靠谱儿。但是,现在的投资市场、金钱游戏,已经是一个全球性的复杂网络。复杂到没有任何一个人能说清楚全貌。在这种情况下,一个人如果有侥幸心理,即使这一次安全地得手了,迟早也会踩响地雷。聪明的投资者恰恰不能自恃聪明,而是要坚守一个笨原则:绝不能用杠杆去投资。
再举一个例子。简单说,就是当我们面对一大堆选择,又没有重新选择的机会的时候,我们在做判断前需要考察的总数的百分比。
计算机算法给出的答案是37%,当我们考察了总数的37%后,不应该继续考察剩下的63%,而应该迅速做决策,而不是等全部考察完。比如,买房,市场上在考察范围内的房有100套,那我们要把100套全部看完才能下决心吗?算法思维告诉我们不用,考察前37套,就可以选了。这是算法决定的,在这个地方停止考察做决定,是成本收益最优的策略。
大家可能觉得算法提供的37%这个原则,看起来冷冰冰不近人情。但是,无论是数学推演,还是客观统计,这个数字都是有效的。不是真的建议你接受这个数,只是通过这个例子,展示两种思维方式之间的巨大鸿沟。
不过,说到这里,大家可能会有一个误解,认为算法思维只会坚持原则,没有灵活性。其实恰恰相反,算法思维,不仅有原则,同时还能够兼顾更多的原则,而这一点恰恰是人类做不到的。
银行门店里排队办业务通常需要遵循什么原则?先来后到。谁领的等候号码靠前,谁先办业务。这是单一的原则。
如果有一个人的业务特别复杂,要办很长时间,后面的人就会等很久;有一位的业务特别重要,不仅对他自己重要,对银行也很重要,但是他也不得不按部就班地排队。从全局的角度看,这不是一个效率最高的策略。但是没办法,银行面对公众,在复杂的情况中它只能采取单一的、看起来公平的策略:先来后到。
计算机也面对同样的问题,要完成那么多任务,它只有一个CPU,先算哪个后算哪个?算法就会有很多原则来处理这个事。比如,法官原则:谁先排队谁先办理;客服原则:谁最重要,谁先办理;先苦后甜原则:哪个客户消耗时间最长,哪个客户先办理。
这些原则怎么统一在计算机处理的过程中呢?计算机操作系统的设计者,通常会把好几种方案混合使用。比如同时设定,越重要的顾客优先级越高,等待时间越长的顾客优先级越高。这样一个顾客即使不是很重要,但是等待时间已经很长了,他也有机会先办理业务。
所以说算法思维不是单一原则,它恰恰更灵活,更能考虑全局。它的唯一出发点是,哪种方式消耗的时间最短、花费的资源最少、效率最高。
有一次,脱不花跟我说,考察一家公司有没有真正的价值观,一个问题很有效,问他们老板:“贵公司排序第二的价值观是什么?”
这个问题通常会把人问蒙,问第二不问第一的目的,就是看看他们的价值观是不是有排序,没有排序的价值观就等于没有价值观。
对啊,很多公司贴在墙上的使命、愿景、价值观都是很大的词,比如高效、诚实、正直等等。这些大词本身没错,但问题是,当这些大词发生矛盾的时候,比如高效和诚实发生抵触的情况下,哪个原则优先呢?如果没有清晰的排序,怎么能说这是有价值观呢?还是处理不了具体情况。
在计算机的算法思维里,就没有这个问题,所有的原则都必须排序、都必须编码、都必须有高阶低阶的次序、都必须能处理实际出现的所有情况。这才是真正结合了原则性和灵活性。人的思维方式很难做到这一点,也是我们在这个超级复杂时代必须向算法学习的原因。
我们人类的思维能力和计算机相比,差的不仅是运算速度,更是思维结构。