Handbook for Data Science and Artificial Intelligence
內容目录
Handbook for Data Science and Artificial Intelligence
內容目录

数据科学与人工智能简介

托夫勒在他的作品《第三次浪潮》中提出改变世界的四种力量:“暴力、金钱、大数据、知识”。当下,大数据、人工智能、机器学习字样铺天盖地,各种智能应用渗透于人们生活的方方面面。不论是金融、医疗,还是教育,都可以或多或少看到智能服务的影子,这不禁让我们去思考:

  • 什么是大数据?
  • 人工智能是什么?
  • 机器要学习的是什么?

\(f(x)\)到用数据编程

时间倒回几百万年前,人类发现通过加工、制作石器,可以方便自己的生活,提高自己的工作效率,之后历经青铜器、铁器,人类的工具不断的进步、发展。经过第一次、第二次工业革命,人类的生产力有了长足的进步。 而计算机的诞生无疑是人类工具发展史上浓墨重彩的一笔。传统的工具,如纺织机,将人类从繁重、重复的体力劳动中解放出来;而计算机则将人类从重复、乏味的脑力劳动中解放出来。它的诞生使得人们可以将更多精力放在更具有价值性的工作上,从而带来了生产力的极大发展,也同时为人工智能奠定了基础。

实际上,或者说幸运的是,大部分程序并不需要我们所说的人工智能技术。例如,如果我们要为一个路口设计一个交通信号灯(也就是我们常说的红绿灯)的控制程序,我们可以很快设计出一套规则:给每个信号设置一段亮起时间,通过计时器来计算当前已经亮起的时间,在达到亮起时间上限时,就切换到下一个信号,如此反复。再比如我们平时接触最多的软件 —— 操作系统,它比之前的交通信号灯要复杂不少。它需要和一个用户界面来接受用户的输入,因此它需要去监听可能的输入设备,比如键盘和鼠标,同时它还要去处理用户的输入,做出对应的响应,例如在用户双击图标的时候,打开程序;在用户执行非法操作的时候弹出警告等。不难看出,其实我们的程序可以很容易地抽象为一个数学形式:

\[f(x),\]

其中,\(x\)对应用户的输入,\(f\)是程序的响应规则,不同的输入对应不同的响应操作。

值得注意的是,在以上两个例子中,我们都不需要收集真实世界中的数据,也不需要系统地提取这些数据的特征。只要有充足的时间,我们的常识与编程技巧已经足够让我们完成任务。但同时,我们很容易就能找到一些连世界上最好的程序员也无法仅用编程技巧解决的简单问题。例如,假设我们想要编写一个判定一张图像中有没有猫的程序。这件事听起来好像很简单,对不对?程序只需要对每张输入图像输出“真”(表示有猫)或者“假”(表示无猫)即可。但令人惊讶的是,即使是世界上最优秀的计算机科学家和程序员也不懂如何编写这样的程序\(^{[2]}\)

我们该从哪里入手呢?我们先进一步简化这个问题:若假设所有图像的高和宽都是同样的400像素大小,一个像素由红绿蓝三个值构成,那么一张图像就由近50万个数值表示。那么哪些数值隐藏着我们需要的信息呢?是所有数值的平均数,还是四个角的数值,抑或是图像中的某一个特别的点?事实上,要想解读图像中的内容,需要寻找仅仅在结合成千上万的数值时才会出现的特征,如边缘、质地、形状、眼睛、鼻子等,最终才能判断图像中是否有猫。一种解决以上问题的思路是逆向思考。与其设计一个解决问题的程序,不如从最终的需求入手来寻找一个解决方案。事实上,这也是目前的机器学习和深度学习应用共同的核心思想:我们可以称其为“用数据编程”。与其枯坐在房间里思考怎么设计一个识别猫的程序,不如利用人类肉眼在图像中识别猫的能力。我们可以收集一些已知包含猫与不包含猫的真实图像,然后我们的目标就转化成如何从这些图像入手得到一个可以推断出图像中是否有猫的函数。我们可以将这个过程同样抽象为一个数学形式:

\[D \mapsto f.\]

推断图像中是否有猫函数的函数形式通常通过我们的知识来针对特定问题选定。例如,我们使用一个二次函数来判断图像中是否有猫,但是像二次函数系数值这样的函数参数的具体值则是通过数据来确定\(^{[2]}\)

从数据中来到数据中去

对数据的利用古已有之。我国著名军事家孙武就在其著作《孙子兵法·计篇》中写到:“夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎”\(^{[3]}\)?无独有偶,在雅各比·科贝尔(1460–1533)的几何书中记载了使用16名男子的平均脚长来估计男子的平均脚长。在这个研究中,16位成年男子被要求在离开教堂时站成一排并把脚贴在一起,而后他们脚的总长度除以16得到了一个估计:后来这个数字被确定为一英尺的长度。这个算法之后又被改进,以应对特异形状的脚:最长和最短的脚不计入,只对剩余的脚长取平均值,即裁剪平均值的雏形\(^{[2]}\)。除了这些之外,伽利略的自由落地实验,欧姆定律的提出,爱因斯坦的相对论等等都可以看到人们从数据中挖掘规律的影子。随着时代的不断进步,人们从最初以归纳法为主,带有盲目性的观测和实验逐渐发展到通过数据模型构建、基于定量分析方法,利用计算机来分析和解决问题。而在数据量得到一定积累的今天,人们开始在大量的已知数据基础上,通过计算得出之前未知的理论。数据如此的重要,我们不禁要问,到底什么是数据?在如今如此强调数据的时代,数据又具有什么样的特点呢? 从计算机科学的角度,所有能够输入到计算机并被计算机程序处理的符号的总称。我们生活在数据中,所有人都在制造和分享数据。这使得数据的数量在不断地增长,人类所积累的数据量已经达到了 ZB (\(2^{60}\) KB) 级别,而地球上沙粒的总量也不过 1 ZB。有人说PB (1ZB = \(2^{20}\) PB)以上级别的数据,最有效的传输方式是空运,而不是网络。虽然拥有极大数据的总量,但其中有价值的数据量却不多,众多噪声数据、冗余数据混杂其中。挖掘大数据中的价值类似沙里淘金,需要从海量数据中挖掘稀疏但珍贵的信息。同时,我们还要面对大量的异构数据,这些数据不仅来源多样,而且形式多样,不仅有结构化数据,还有半结构化数据,更多的是像文本、图片、视频这样的非结构化数据,这为我们利用数据分析得到规律平添了不小的难度。除此之外,对于计算机科学而言,实时性也是一个极为重要的因素,面对海量数据,我们需要在一定时间内得出结果,否则其结果的有效性就会大打折扣。正如著名的1秒定律所论述的那样:“对于大数据应用而言,必须要在1秒钟内形成答案,否则这些结果可能就是过时的、没有意义的”。数据时代,信息处理需要具备高实时性。

不难看出,在数据的分析和利用的过程中,还存在诸多的困难与挑战:

  • \(D\)
  1. 数据类型多样,包括各种格式和形态的数据
  2. 数据量大,但存在噪声,有效数据少
  3. 数据处理要求高实时性
  • \(\mapsto\)
  1. 针对一类问题的特征,如何设计合适的学习算法
  2. 如何使用数据来有效地获取函数参数具体值
  • \(f\)
  1. 如何验证所得规律
  2. 如何保证所得规律的正确性

数据智能

我们不妨对几个常见的名词下一个不太准确的简单定义:

  • 人工智能:构建一套具有学习、归纳能力的自动化系统,它可以完成对数据的特征抽取及数据分布模式的辨别与学习。
  • 数据科学:用科学的方法研究、处理和应用数据,挖掘令人感兴趣的、有用的、隐含的、先前未知的和可能有用的模式或知识,并据此更好的服务人们的生活。
  • 机器学习:讨论各式各样的适用于不同问题的函数形式,以及如何使用数据来有效地获取函数参数具体值\(^{[2]}\)
  • 深度学习:机器学习中的一类函数,它们的形式通常为多层神经网络。近年来,已逐渐成为处理图像、文本语料和声音信号等复杂高维度数据的主要方法\(^{[2]}\)

参考资料

  1. 数据科学导论,刘淇,中国科学技术大学
  2. 动手学深度学习,Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola
  3. 大数据技术及应用,陈恩红,中国科学技术大学