这是彭文华的第120篇原创
算法代表了科学,迷信意味着愚昧,这很容易区分,也没什么好区分的。作为数据工作者,这本应该就是板上钉钉的事情,根本没有什么好争辩的。但是,请你看下去,你会开始疑惑,然后开始怀疑人生。
奇怪的迷信传统
我描述一些迷信传统,你猜猜是哪个群体做的事情:
- 在做某件事情之前48小时内,关键人物不许出现;
- 在某件事进行的适合,要把一枚硬币放在指定地方;
- 不允许在某一天做这种事情;
- 关键人物出发之前,男士要在汽车后轮小便,女士则提前尿在容器里撒到汽车后轮;
- 正式开始之前,每个人都要佩戴护身符;
你也许会说,这是邪教吧?这么邪性?那么我告诉你,这是美国、苏联的宇航员上太空之前的一些传统。就连中国宇航员杨利伟、翟志刚他们登舱之前,也都喝掺了酒的水,当壮行酒。
不仅是宇航员,神舟五号上天的时候,所有人都要喝酒壮行。你说,这群人都是什么人?称他们为世界上最顶尖的科学家不过分吧?为什么他们都搞看上去没啥用的迷信呢?
算法为什么准?
算法是什么?用最简单的二元分类器来说,就是一个能把输入的数据区分为是/否的自动分类器。只要你输入的数据在范围之内,就会像下面的硬币分类器一样,更像1角的会滚到1角的盒子里,更像5角的会滚到5角的盒子里。
但是很多时候,输出的结果并不会按照我们期望的那样,也会搞错了。算法工程师大多数时候就是在提升准确率。算法中有2个重要的指标,叫做“精准率”和“召回率”。
准确率就是这个算法模型一共预测准了多少个案例的程度(1角硬币到1角盒子,5角硬币到5角盒子的情况,占所有硬币的比)。召回率就是1角硬币到1角盒子占所有1角硬币的比。
所以算法优化的过程就是不断提升准确率和召唤率的过程。算法工程师的工作就是在不断的调整参数,让1角硬币滚到1角盒子里。
有些算法的过程我们是能理解并且控制的,比如决策树及其衍生GBDT、XGBoot等。举个例子,相亲中,“合则约见”的决策树长这样,写出来的算法也是这样子的:
这个算法是个人都能看到懂。符合当前条件再看下一个条件,不符合就拉倒。这些所有的逻辑都是我们自己定义的。机器忠实的按照这个模型比对每一个个体,这样就把所有的个体都打上了“见”或者“不见”的标签。
但是也有很多算法是我们看不太懂的。比如K-means、神经网络。K-means是一个聚类算法,就是把所有的相亲对象归归堆。比如我们已经有所有人的月薪和颜值数据。用K-means聚3类的话,算法会随机给出3组值,比如(月薪5000,颜值90)、(月薪9000,颜值60)、(月薪20000,颜值40),然后计算所有人的与这三个值之间的最短距离,更新K值,然后不断重复直到触发停止条件。请注意初始的3组值是随机的,也就是说,算法是在猜。所以每次执行K-means,大概率结果是会不一样的。
如果说K-means是在猜,那好歹我们还能总结一下这几类都有啥特征。比如颜值高但是工资低的,可以叫好看组;颜值中等,月薪也中等的,可以叫实用组,颜值低但是月薪高的,可以叫有钱组等。
但是神经网络就是真的扯了,我们完全不能理解为什么得出这个结果。神经网络分为三个层,输入、隐藏、输出。其中隐藏层又可以拆成N层。他会计算每一个路径通到最后的成功概率,然后不断的优化路径,达到最优化的效果。
所以神经网络有个好处,就是自适应和自学习,迭代N次之后就会出现类似于人类蹒跚学步的效果,所以都叫它“人工智能”算法。围棋界扛把子机器人阿法狗就是神经网络的升级版本,投喂了大量棋谱+超强算力的综合体。现在有些人在下围棋的时候会感觉出来对方是一个“人工智能”。因为人工智能棋手会下出一些我们不能理解的手法。从这个角度上来说,算法本质上就是在乱来,如果死了就结束,重新再来一次,仅此而已。
所以你看,从决策树到K-means到神经网络,算法越来越复杂,越来越不能理解,越来越乱来,越来越像是在瞎猜瞎撞,这哪里像科学啊!这比算命还扯好么?
算命为什么准?
岁数越大,越信命。算法跑的越多,越觉得麻衣神相、算命有道理。比如《麻衣神相》有云:
一取威仪:如虎下山,百兽自惊。如鹰升腾,狐兔自战。不怒而威,不但在眼,亦观顴骨神气取之。
二看精神:身如万斟之舟,驾于巨浪之中,摇而不动,引之不来, 坐卧起居,神气清灵...如此相者,不大贵亦当小贵,富亦可许,不可妄谈定。
《柳庄神相》有云:
把这些话转换一下,跟算法的逻辑是一样一样的。先获取信息,然后根据相书上已经建好的模型,直接套用即可得出结果。看上去好像有点扯?NONONONO!其实不仅是看相是这样,算命也是这样。需要很多信息其实都是话套话套出来的。算命师必备技能是观察技巧和话术技巧,那些算命的口诀只是工具而已,怎么说都有理。
比如:凡是很穷但是穿袜子的,必然是家中落寞之人。为啥?因为古时候真正的穷苦人家是不会穿袜子的。这在算法中就叫特征啊!所以算命就会很准,因为在不停的收集信息,然后根据书上的和算命先生的经验,综合起来的模型,得出一个非常靠谱的结论,自然就很准了。
比如“父在母先亡”。如果来算命的人想算父母,用这句就能应对所有情况。
对方说,父母尚在呢,怎么解?好解啊,人总要死的么,反正是一个先死一个后死。
对方说,父母早亡,怎么解?一样啊,反正一先死一个后死。
对方说,是爸爸先死的,怎么解?一样啊,父在母先,亡。你看,对上了。
对方说,是妈妈先死的,怎么解?一样啊,父在,母先亡。你看,还是对上了。
是不是觉得我在瞎扯?中国的算命就是迷信,就是在瞎扯是不是?好,咱再看一个例子。
《Lie To ME!》
这是一部美剧。内容我不多说,超级经典的一部美剧。不过我们只需要看第一季的第一集就行。片中的莱特曼博士根本不需要严刑拷打或者识谎仪,只需要云淡风轻的聊几句,就能知道罪犯那句话是真的,那句话是假的。
他靠的是微表情。是不是感觉神叨叨的,跟跳大神也差不多了?聊了不到10句话,看了几眼,就能知道他想知道的一切?这样太扯了吧?
其实,我们想象一下算法的逻辑。微表情识谎与算法的逻辑是一致的。博士自己构建了一个模型,输入信息是语气、表情、肢体动作等等细微的信息,模型是不同情况下的不同表现代表什么意义,输出结果就是这句话是真的还是假的。
结语
你看多有意思啊?科学和迷信貌似就这样完美的结合了?但是,为什么?
其实我更愿意这么理解迷信和算法:我们对这个世界的一切认识,其实都是一种解释。迷信也好,算法也好,运气也好,命运也好,都是我们自己理解世界、理解复杂事务的一种解释。
我们无法理解为什么有人买彩票就能中奖,如同一只蚂蚁不明白为什么旁边的那只蚂蚁突然被踩死一样。蚂蚁可能会把无聊的小孩当成命运,因为它理解不了人类的行为。
如同我们不能理解也不知道如何提升去太空的成功概率,那么就找一个自己能解释的事情去解释就好了。
我们同样不能完全理解这个世界,只能用看上去很合理的方式去解释,比如壮行酒、朝轮胎撒泡尿、幸运数字等等。算法就一定科学吗?迷信就一定不科学吗?科学就一定是解释这个世界唯一途径吗?再想想蚂蚁,它们是不是也有自己的一套科学理论,来解释他们看到的世界呢?