《从1到π———大数据与治理现代化》,蓝云编著,南方日报出版社2017年5月版。
阿基米德有一句话脍炙人口,“给我一个支点,我就能撬动地球。”
近期很多人问我,什么是模型,什么是算法?我在回答时偶尔会引用阿基米德这句话,之后解释,先“给我一个支点”就是模型、假设,怎么撬、那根棍子要多长、多粗,就涉及到算法。
这个回答肯定是在打擦边球了,但意思就是那个意思。模型、建模等体系,还真是天文学带来的。正如军事、国防产业带动广泛的民用体系一样,远古的占星家开启的天文学是第一模型。
年历、日历、时辰就是一种模型。今天我敲击这段文字时是“2017年3月21日晚上21:31”,天空中哪个地方刻下了这行标记?都没有的。是基于公元纪年我们测算出来的。
地心说也是一种模型,随后将之纠正产生的日心说更是一套模型。为什么日心说比地心说更能流传下来,因为日心说更接近客观规律。模型基于一种基本假设,还要符合现实、易于传播。前面我们提到的十进制、十六进制,也就是一种模型。模型就是人们对外界的一种符号化、主观化的标志及认知,有了这种认知,人们能更好地认知世界,模型的本质其实就这么简单。当然,计算机要理解模型比这要更进一步,要能适合及其运算。
天文学起源于古埃及。尼罗河洪水每年泛滥一次,下游有着十分肥沃而且灌溉方便的土地,由此孕育出人类最早的农业文明。为了准确预测洪水到来和退去的时间,6000年前的埃及人发明了天文学,他们根据天狼星和太阳在一起的位置来判断一年中的时间和节气。自然语言处理和搜索专家吴军,出版了《浪潮之巅》及《数学之美》等畅销书籍,在他看来,古罗马时代的托勒密在天文学上的地位堪比欧几里得之于几何学,牛顿之于物理学。托勒密发明了球坐标(今天我们还在用),定义了包括赤道和零度经线在内的经纬线(今天的地图就是这么划的),他提出了黄道,还发明了弧度制(中学生学习的时候可能还会感觉有点抽象)。托勒密最大最有争议的贡献是对地心学说模型的完善。
思维再发散一些,我们会发现,几千年来在政治、社会体系也借鉴类似的机制,国家、民族、宗教也是一种建模方式。除了学术、科学的理性认同,还会有感性的心理认同。
接下来谈谈什么是算法。若干回昼夜思考之后,我的思维都会回到三十年前,那时我应该是读小学一二年级,能比较顺畅地数到一百,家里有几伙小鸡,要数一数有多少只。小鸡是会走动的,不听指挥的,数完这几只又走散了,我怎么数都数不清楚。我有一位姑丈,他二三十秒钟就数完了,他用的是三个一组法,“一三,二三,三三缺一,四三多一,五三……”准确数字很快就出来了。现在我明白了,姑丈这种三个一组的算鸡法,就是算法。最简便地说,算法就是“算数的办法”。
在小学期间参与过奥数题训练的朋友,都会记得数学家高斯巧妙地快速算出“1+2+3+4+……+99+100”,这里面就是算法。
不管是“姑丈数鸡”还是“高斯算数”,这都是对算法的通俗理解。在计算机世界,一个好的算法必须符合这些原则:正确(算法执行结果应当满足预先规定的功能和性能要求),可读(一个算法应当思路清晰、层次分明、简单明了、易读易懂),健壮(当输入不合法数据时,应当做适当处理,不致引起严重后果),高效(有效使用存储空间和有较高的时间效率)(冯贵良,《数据结构与算法》,清华大学出版社,2016年9月第1版,第9页),算法的特性有:有穷性、确定性、可行性、输入、输出。
搜索引擎是一个很棒的发明。这里面一个非常经典的算法就是Google的PageRank算法。
近几年南方舆情数据研究院招聘了不少数据分析师、技术工程师,我在面试时都会问一个问题,“假设你有一位外婆在老家的乡下,稍微有一点点文化,但从没用过电脑,你怎样向她解释搜索引擎?”得到的答案各异,但没有一个让我及面试考官同事们完全满意。我们希望的答案是借用传统图书馆的小卡片(索引)来解释搜索引擎。搜索引擎的核心原则是,购买大量的服务器,将目标网站的网页按照一定的次序将拷贝过来,按照常用的关键词,建立各自的电子化的索引体系。用户输入一个关键词,在索引体系里查找,而不是在原始网页里查询,这才能保障在毫秒级的时间里,电脑屏幕显示你要的答案。
同一个(组)关键词,可能有几千上万条网页,那么哪一条网页排在前面?这是一个困扰许久的问题。谷歌公司的PageRank算法提供的答案是,建立网页权重。找到这个完美的数学模型的是Google创始人拉里·佩奇和谢尔盖·布林。最早这些网页的原始赋值都是一样的,经过多次迭代,最后会得到稳定的网页权重值。根据这些权重,再综合发布时间、近期网民浏览习惯等数据,你所需要的网页顺序就排定下来。佩奇也因为这个算法在30岁时当选为美国工程院院士,是继乔布斯和盖茨之后又一位当选院士的辍学生。
这些经典的算法还有很多,它们构成了美妙的数字世界。你闭上眼睛细细品味,这些数学大师、算法大师的身影就闪烁在浩瀚星空中,永不熄灭。康德说:世界有两样东西能震撼人们的心灵,一件是我们心中崇高的道德标准;另一件是我们头顶上灿烂的星空。
对于计算机而言,数据存储都是依靠“0”“1”,就涉及到数据结构,就是数据怎样输入、输出、保存、运算的问题,涉及到线性表、栈和队列、串、数组、特殊矩阵和广义表、二叉树、树、图等专业问题。这其实就像一个工厂的大仓库,同一类零件,库存了100个,昨天进货了100个,今天又进了100个,这300个零件怎么摆放,如果有人来领取20个,你先从哪里出货,这些问题就涉及到数据结构的问题。大量的数据、大量的服务器,就组成了数据仓库。而打开数据仓库的钥匙就是模型及算法。
模型、算法,与数据是互相依存的关系。好多模型、算法,需要建立在大量数据的积累上,没有数据积累,找不到模型、算法;同时,有了好的模型、算法,数据就更有了存在的价值。
现在我们面临一个算法无处不在的现实世界。出门坐公交车,道路设计,就是算法;半路上,看到车辆剐碰、保险公司出动,购买车辆保险就涉及到算法;到了办公大楼,按了上行键,5部电梯中哪部朝你开来,也涉及到算法;接个电话,通话时长3分零5秒,运营商收你电话费就涉及到算法。畅销书《算法帝国》注意到这样一个问题——人类正在步入与机器共存的科幻世界?“算法和机器学习技术悄然接管人类社会,带我们走进一个算法统治的世界。”
很长一段时间,我惊叹于英语文字的奇妙,26个字母组成单词,按频率大小匹配各自的编码长度,再按照一定的算法(即“语法”),组成句子、段落。当然中国汉字也很奇妙,不过我们采用的是二维编码。遗憾的是,我有这个认识有点晚了,要不然在中学、大学期间语言课程可以学得更好。
电脑键盘目前是常用设备。键盘上的字母顺序是“qwert……”,而不是“abcde……”,为什么会这样呢?这里面也有算法规律。你可以自己通过搜索引擎了解一下。(蓝云/著)
(编者注:全文具体表述,含数学公式、符号以及脚注等,以南方日报出版社正式书面出版物为准)