• 算法“捡屎”
  • 发布于 2个月前
  • 159 热度
    0 评论
  • Merlin
  • 1 粉丝 37 篇博客
  •   
有一种神秘的生物,他们习惯身上穿着格子脸上顶个黑镜框,身后的电脑包是他们的武器装备,常常出没在地铁末班车上,黑眼圈和无尽的黑夜一起沉沦,沉沦……没错,他们是程序猿,一种类人型智慧生物。
 
作为他们中的一员,摆脱了白天敲代码时揪着脑袋上的毛死活没有灵感的抓狂,我摸着洗漱过后所剩无几的头发,陷入了沉思:究竟是谁发明了计算机算法?让成千上万的码农陷入脱发危机,进而引发身体机能下行以及求偶难题。

所有的大火都起源于最初的小火花,算法的发展也是如此,它基于先辈的智慧。算法作为一个复杂的体系,背后可不仅仅是计算机科学这么简单,它是数学、逻辑学和哲学的集合。尽管第一台电子计算机诞生于1946年,距今一百年不到,但是关于算法的思想雏形存在于不同学科当中,流传已久。

1  算法滥觞——数学,没有0和1拿什么来编码
数学的概念是从抽象思维中发展而来的,西方数学理念起源于古希腊,但是就像是生铁一般,只有加入零星的碳,才能完成向钢铁的转变。而阿拉伯数学理念的传入,就像是生铁中创造性加入的碳粉,激起了一场革命。

虽然阿拉伯数字是印度人发明的,经阿拉伯商人传入欧洲,但毫无疑问的是,阿拉伯数学家们是命运和地理安排下最恰当的中介,融入了自己对数字的理解。

算法一词的英文“algorithm”起源于阿尔·花拉子米的名字,这个阿拉伯数学家率先提出了“未知数”的概念,没错,从小学起一直折磨我们的x、n、a和b等等代都是花拉子米提出来的。

正是有人提出了未知数这一抽象概念,我们才有可能从特定的浅层的数据当中总结出普遍的本质的规律,并且这一规律能够在一定条件的前提下,绝对适用。而这其实就是算法中的逻辑,想要代码运行,只能好好建立可行规则,烧香拜佛可没有用。

而进一步搭好算法骨架的人物却是18世纪的托马斯·贝叶斯,这个人和梵高一样,活着的时候籍籍无名,但两三百年后,当大家开始发展算法理念的时候,翻出这位仁兄的学术论文一看——嚯,太牛了!

贝叶斯的研究领域是概率论,他率先将归纳推理运用于概率论基础理论,创造了贝叶斯统计理论。贝叶斯理论对于算法的发展来说,最大的价值在于它提出了一种偶然性,可以用来估计一个可能的因果关系。

以算法作为基础构建的网络世界是充满不可预见性和偶然性的,而贝叶斯理论就像是在黑夜中能够稍微给予人们安慰的亮光,让我们在不确定中能够把握一定的概率并且计算出具体的结果。而贝叶斯公式至今依然是在样本量不大,因素含糊的情况下帮助我们作出最优决策的助手。

在贝叶斯1761年去世时留下的论文《关于如何在机会论的框架下解决问题》里面,有一个有趣的公式。想象有两个相同的罐子(如下图),每个罐子里都有40颗石子,1号罐子装了30颗白的,10颗黑的;2号罐子里20颗白的,20颗黑的。

请问假设随机情况下,拿起一个罐子取出一颗石子且石子为白石子,那么这个石子来自1号罐子的概率是多少?

直观而言,人们认为白石子来自1号罐子的可能性更大,这里可以预先揭晓答案:没错你的直觉是对的。但是具体概率是多少呢?在计算上,有两种方法都能达到目的,设A为1号罐子,B为白色石子,可得:

(1)已知被选中的石子为白,用获得白石子的概率乘以选择1号罐子的概率,即(1)为ρ(B).ρ(A/已知B)

(2)已知白石子来自1号罐子,用选择1号罐子的概率乘以获得白石子的概率,即(2)为ρ(A).ρ(B/已知A)

我们由题目可以知道ρ(B/已知A)是75%,∵1号罐子有3/4的白石子,而ρ(A)是50%,∵罐子选择是五五开。

ρ(B)的计算比较复杂,∵A和B的假设并不相容,∴取假设A中获取B的概率和非假设A中获取B的概率相加。∴ρ(B)=50%×75%+50%×50%=62.5%

∵(1)=(2)
∴ρ(A/已知B)=


也就是说当看见石子的颜色之前,1号罐子中取出随机颜色的石子的概率为50%,一旦我们知道了石子是白色的,这个概率会上升为60%。

人类大脑的运作方式也符合贝叶斯统计学理念,通过身边已有的资料,我们可以简单估计一件事发生的概率,这种粗糙的估计被我们称为直觉。那么贝叶斯网络可以简单理解为一种精确的直觉,算法根据已有的条件可以得出一个“先验概率”,并且通过后续计算修正这个直觉,获得一个尽可能精准的判断。

这种能力相当于让算法模拟人类大脑思考的方式,它的重要性不言而喻。


2  别和算法谈感情, 逻辑就是它的真理
在电影《她》(Her)里,男主人公西奥多情感丰富细腻,离婚后选择对人工智能萨曼莎付诸感情,本来以为情投意合可以跨越人机差别,结果意外发现自己只是她六百多个情人中的一个,结果摊牌后即被甩,好惨一男的。我们想要赋予人工智能感情,但在算法上,这是个和逻辑相悖的命题。

世界三大逻辑体系分别是希腊体系,印度体系和中国体系。它们都是三段论,没错,我们熟悉的三段论,古希腊和中国体系有异曲同工之妙,由因及果,而古印度体系比较奇葩,由果溯因。
算法采用的是希腊逻辑体系。

然而尽管逻辑学十分美妙,但是纯粹不加验证的三段论有缺陷的。比如说这个推论:

●所有男人都是旅行者。
●有些旅行者极富有魅力。
●因此,有些男人极富有魅力。

这个推理第一直觉听上去非常合理不是吗,但并非如此,我们无法确定是否所有男人都是旅行者,要知道世界上还有我们这一类和电脑锁了的码农。

第二个就容易判断多了:

●我的睡衣可以放进抽屉里。
●我可以穿进我的衣服里。
●因此,我可以进入到抽屉里。

三段论处处都是陷阱,跳开了一个坑,还有千千万万个坑,如果没有人力介入,第一个例子和第二个例子在算法上几乎都是可以被认为是一样的,都符合逻辑但违背常理。机器在逻辑上绝对的理性对于数据抓取和整合来说,相当于提高效率的火箭推动器,可借用阿尔贝·加缪的话:“想合乎逻辑总是容易的,但是想从头到尾一直都合乎逻辑几乎是不可能的。”

Bug的引起很多时候要归结于码农写程序的时候逻辑框架出了问题,前言和后文神仙打架,计算机直接罢工不运行了。所以码农们都要“抓虫子”(bug),哪怕你是大佬,也要抓虫子,没有“抓过虫”的程序猿不是好社畜。

当逻辑上通顺后,就要帮助机器理解信息,这个时候就要请出另一位大佬——香农,他的信息学通过二进制帮助算法理解信息。为了将逻辑数学化,乔治·布尔发明了二进制编码,可是将二进制变成机器语言,赋予0和1灵魂的人却是香农。

比特(bit)相当于不确定性减半的信息量,让信息流通效率提高。想象一下,在一座拥有4000本藏书量的图书馆里,如果其中有500本书的封面为蓝色。那么“你寻找的那本书封面为蓝色”这个信息相当于:

这就意味着,3bit的信息可以将你寻找这本书的不确定性减少,只需原来时间的1/8就可以解决问题。没错,二进制就是这么高效。

逻辑是算法的灵魂,没有逻辑的算法就像是一盘散沙,无法发挥真正的作用。计算机之所以能够拥有人脑无法媲美的效率,正是因为严谨的逻辑能够帮助算法迅速过滤非必要的纷杂信息,将范围缩小到所需的信息量,处理进程。如果算法就像人脑一样天马行空,那么它就丧失了自身最大的优势。

3  人与技术共舞,谁是领舞人,哲学给答案

算法的发展不是一个完成时,而是一个进行时。当投资者把目光投射到人工智能领域,当人类更加期待创造出智能生命时,我们应该放弃造物者的傲慢,此时我们更需要做的可能是思考——思考我们和技术的关系。

当AlphaGo占领了人类智商制高点——围棋的时候,人类不由得打了个冷颤,套用起点一句话,人工智能竟然恐怖如斯。

实际上,机器基于大数据分析不断延展的算法能力并不像我们想象中的那么强大。哲学上,世间充满了不确定性,在2017年3月的《哲学杂志》中诺姆·乔姆斯基提出,科学的核心并不是在统计的基础上建立一个粗略近似的现象。而算法看似精确,然而对于未来趋势走向,它能做的只能是估计,即使这种估算基于过去历史大数据,但是依旧无法预见未来。

这个世界上除了“如果……那么……”,还有第三种不确定性,超脱了人类的想象和过往的经验,这就是“黑天鹅”像三星Galaxy炸弹系列、棱镜门以及其他“黑天鹅”拍打翅膀呈现出的事件,都是在我们经验以外的。但是,我们能够很快内化新的状况,形成处理机制,这是人类天赋使然,然而对于人造的算法来说,它应对黑天鹅的能力显然不如人类。

先别急着骄傲,我们被大数据牵着鼻子走也是事实。你能想象吗,美国有很大一部分人相信地球是平的!而强化他们认知偏差的正是算法推送,算法察觉到你对相关方面信息的兴趣,像加农炮一样把同质信息传达给用户,不断加深这个印象。算法考虑了人类的这些认知偏见,继而对每个人的偏见进行了解码,并通过强化这种偏见来做出反应,算法不过是朝着它认为的风向继续吹气。
用户评论