经典长存
这本书的标题多多少少显得有点怪异。那这里主要就我个人的理解追溯一下历史,谈一谈为什么叫作“集体智慧”,说说我自己的揣测。
带大家回顾一下时间背景。本书英文版出版于2007年,党的十七大这一年召开,北京奥运还未举办,网络游戏跑跑卡丁车广受欢迎,电视剧《潜伏》尚未播放。智能手机时代根本没有到来,诺基亚还要好几年才能从王者的位子上退下来。豆瓣网、土豆网、优酷网、去哪儿网刚刚问世不久,校内网风头正劲,腾讯正在纠结要不要把自己卖掉,距离开心网上线还有一年,距离新浪微博诞生还有两年,360和QQ的争端还没上演,现今的世界第一大搜索引擎还没有退出中国,现今的世界第二大搜索引擎bing还没有诞生。ruby和perl当时还都比较流行,python尚未显示出明显特别的优势。Hadoop这个名字才刚刚出现。web2.0正是当时的一个热词(移动端、O2O、物联网、大数据、区块链、深度学习、人工智能等等层出不穷的沾满资本腥味的概念还没有一点迹象)。而web2.0的主要倡导者,恰恰正是这一套丛书所属的 O'Reilly 出版社。
什么叫web2.0?作为一个早期互联网资本造词运动的一大成果(后来的“工业4.0”都不难找到它的影子),它最大的特点无非是:用户不再是阅读静态的孤立的网页(所谓的“冲浪”,颇有怀旧感的用于),而是自身投入到网络世界的创建之中去。互联网从单纯服务器、html、数据库的集合,向人与人的互动演变。WordPress的出现显著降低了网站开发的成本,有想法都可以在网上表达出来,facebook正是人和人的互动的典型,wikipedia集合了众多网友的智慧,豆瓣这类的网站提供了综合群众意见给书影音评分的平台。由于人的力量突显出来,互联网开始出现了某种类似于“自组织”的概念。群体的意识推动着互联网的演进。
终于要谈到“集体智慧”了。其实这个词语早已有之,但始终不是个非常热门的概念。个人的意识行为与群体的意识行为的关系,个体推动群体,群体约束个体,这是个亘古以来的个性与共性的哲学问题。而对于现代的学术领域,实证的精神越来越在方方面面得到贯彻,群体怎样思考,群体怎样行动,这个问题固然有趣,可难免受到数据收集整理的局限性的影响。而web2.0的出现,恰恰提供了观察群体行为最便捷的条件。试问除了人人贡献知识贡献思想的互联网,还有哪里能这样便捷地观察群体模式呢?正是由于这个特点,“集体智慧”自然而然地就依附在了web2.0概念的身上。
额外多提一嘴,2010年豆瓣曾经上线了一款不太成功的产品,叫阿尔法城,2015年下线。百度百科里这样讲:“造城者对阿尔法城有细致而长远的规划。第一步是把用户放到无序的环境中做实验,让他们自行聚集,像是在模拟城市的起源,又像是在探索一种新的城市生态。”这是什么意思?不正是一场用户自我组织、“集体智慧”的实验吗?
可惜,“集体智慧”这个词尽管一时得到了web2.0的加持,后续也并没有得到学界产界的追捧。直到“web2.0”的概念已深入人心无需再行吹鼓,“集体智慧”依旧少有人知晓。和阿尔法城一样,淹没在流量和资本的大潮之中。
为什么要会关注“集体”的这个概念?这就不得不再另行扯到一些玄而又玄的概念:网络,复杂系统,非平衡态,自组织,蚁群寻踪,遗传算法,模拟退火算法。即便早在前互联网时代,群体行为也早就是个饶有趣味的话题了。容我再掉一会儿书袋。
第一,从计算的领域看,不少成功的优化算法恰恰是对某种自然界中“群体”现象的模仿。蚁群算法,模仿蚂蚁觅食释放信息素的行为。每只蚂蚁遵照一定的规则探索周围的环境,最后一群蚂蚁的集合则能够自动地找到觅食路径。遗传算法模仿的是DNA遗传和突变。遗传物质一代一代地演化下去,生成下一代的时候会带有一定程度的突变,最终可以找到最佳适应环境的配置。模拟退火算法(和玻尔兹曼机、Ising模型紧密相关)模仿的是统计物理中粒子组态在能级之间的跃迁,最终随着环境温度的降低,组态会达到整体的能量最低。这些算法的成功明确地显示了,个体遵从一些特定的规律,则总体能够表现出一些特别的性质。
第二,从图的领域看,正是作为“群体”的结点才能构成图。web2.0极大丰富了图理论的内涵和应用。在本书的推荐序中Tim O'Reilly盛赞PageRank的划时代的意义。页面和页面的关系恰恰正和人与人的关系有相似之处,都是图。query和document构成二部图。人和物构成二部图。凡事物间有关系,皆可建立图。PageRank的成功推动了人们用更新的观点、使用更有利的工具去处理一切彼此关联着交错着的事物。
第三,从非平衡态的领域看,“群体”中的粒子处在变化发展中,故而能带动总体的变化发展,产生出特定的模式,即所谓“自组织”的现象。无尺度网络、小世界理论反映的恰是群体主动向hub聚集的过程,PageRank的计算正是概率分布从非平衡态向平衡态的收敛。
因此,基于当时人们对复杂系统就有的认识,总体大于个体之和,可以说是个基本观念,已经成功地在诸多领域树立起来。而对于当时的互联网而言,怎样从貌似杂乱的群体参与中,提取出饶有趣味的信息,建立起更高级的服务和应用,从群体中来,到群体中去,就是个非常值得研究的课题。能不能综合大家的主观意见对某物评分?能不能集合不同网站的信息来对所有网页的重要程度评分?能不能根据人与物的关系来发现人和人的群组,发现物和物的群组?提取出的这些信息和知识,我们不妨就称之为“智能”。
用以佐证,下面的这几本书同时也算是当时的重要文献,特别是《智能web算法》知名度还颇高。翻译之一的“阿稳”就曾经是豆瓣网的推荐算法工作者。但我个人感觉,下面这几本书的质量都比不上这本《集体智慧编程》。
以上,就是我对本书标题《集体智能编程》所做的一点私人的阐释。尽管没有什么太多用处,这些思路也并非为学界和产界所感兴趣,但也希望能够给大家提供个更广阔的时代背景、科学背景下的观点。纯属个人理解,难免错漏之处,欢迎大家指正。
最后我还是想议论一下众多网友对这本书的评论。发现个现象,似乎越是早年读过这本书的读者,好评率越高,倒是越新的读者越喜欢非议。个人觉得有几种评论意见是不正确的,这里想说说我的看法,供大家参考。
有的网友评论说这本书的数学太浅了,不是严肃的介绍算法的读本。这个未免也太鸡蛋里挑骨头了吧,简直就像是说“辞海里没有水凭什么叫海”,“XX权威指南没有磁铁,凭什么可以指南”。这本书的定位根本就不是数学书教科书,书名写的清清楚楚,叫“编程”,既不叫“机器学习”,也不叫“数据挖掘”,更不叫“程序员的数学”。目的是利用算法构建web2.0时代的网络服务和应用。难道看到一本机器学习教科书,也要差评一下里面没有工程实现吗?难道看到一本深度学习的图书,也要评论一下里面的数学莫名其妙根本不严谨吗?要么是这样的读者数学知识丰富、见解深刻,想显示一下自己的优秀,曾经学过机器学习理论知识,学得很好;要么基本修养恐怕也太欠缺了,读书连主旨和重点都抓不住,有点浪费时间。
还有不少网友评论说这本书过时了。距离我写这评论的2020年,时间已经过去十多年了,确实有过时之嫌。但我要指出,如果真的接触过严肃的开发工作,见过实际的互联网服务,可能在评判它是不是过时的时候会三思。我想问问他们:搜索引擎现在还有吗?推荐系统现在还有吗?是收音机、BP机、VCD机这种基本没人使用的东西吗?它们基本的算法架构跳脱作者在书中所介绍的了吗?并没有。搜索引擎不还是在给<query, document> pair打分吗?推荐系统不还是在挖掘人和人的关系、物和物的关系、人和物的关系吗?那怎么叫作过时了呢?kNN已经土到掉渣了吗?问答系统里相似问题的判断不依然还是紧邻搜索的思路吗?SVM已经过气了吗?凡是bag of words/tf-idf的地方,SVM不都还首当其冲吗?Naïve Bayes已经没有人用了吗?信用评级最的基本算法不还依然是它吗?说过时了也要讲根据,哪里过时了,哪里还依然适用,难道不需要思考一下吗?X86更早,而且落后,现在就不要学X86了吗?《资本论》更早,还不是经济学主流,《资本论》也过时了吗?
也有一些网友评论说很多API已经失效了,或者无法在境内访问,这个我也同意,就不多说什么了。