willtongji的个人博客分享 http://blog.sciencenet.cn/u/willtongji

博文

他山之石,可以攻玉:计算思维如何支撑数据科学的思维模式?

已有 10520 次阅读 2017-4-10 08:36 |系统分类:教学心得

说明:本博客与微信公众号《嘉数汇》部分同步更新,内容大部分原创。请扫码关注《嘉数汇》公众号。

1、什么是计算思维?

正如数学家在证明数学定理时有独特的数学思维、工程师在设计制造产品时有独特的工程思维、艺术家在创作诗歌音乐绘画时有独特的艺术思维一样,计算机科学家在用计算机解决问题时也有自己独特的思维方式和解决方法,我们统称之为计算思维(Computational thinking)。从问题的计算机表示、算法设计直到编程实现,计算思维贯穿于计算的全过程。学习计算思维,就是学会像计算机科学家一样思考和解决问题。

计算思维概念的提出是计算机学科发展的自然产物。作为人类科学思维的基本方式之一,应属于思维科学的一个专门领域。目前国际上广泛使用的计算思维概念是由美国CMU大学周以真教授提出的,即:

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为的涵盖了计算机科学之广度的一系列思维活动。

研究生命的起源与繁衍、理解人类的认识能力、了解人类与环境的交互以及国家的福利与安全等,都属于社会计算的范畴,这些都与计算思维密切相关。

基于上述定义,可以挖掘出如下三个层次的内涵:

  • 求解问题中的计算思维。利用计算手段求解问题的过程是:首先要把实际的应用问题转换为数学问题,可能是一组偏微分方程(Partial Differential Equations,PDE),其次将PDE离散为一组代数方程组,然后建立模型、设计算法和编程实现,最后在实际的计算机中运行并求解。前两步是计算思维中的抽象,后两步是计算思维中的自动化。

  • 设计系统中的计算思维。R.Karp认为:任何自然系统和社会系统都可视为一个动态演化系统,演化伴随着物质、能量和信息的交换,这种交换可以映射为符号变换,使之能用计算机实现离散的符号处理。当动态演化系统抽象为离散符号系统后,就可以采用形式化的规范来描述,通过建立模型、设计算法和开发软件来揭示演化的规律,实时控制系统的演化并自动执行。

  • 理解人类行为中的计算思维。王飞跃研究员认为:计算思维是基于可计算的手段,以定量化的方式进行的思维过程。计算思维就是能满足信息时代新的社会动力学和人类动力学要求的思维。在人类的物理世界、精神世界和人工世界等三个世界中,计算思维是建设人工世界所需要的主要思维方式。

计算思维的其他解释还有:

  • Wikipedia(维基百科)计算思维是一种新的计算机科学技术广泛使用的问题求解方法,它利用算法可以高效率地求解大规模复杂问题。

  • R. Karp观点:在自然的、工程的和社会的系统中,很多过程都是自然计算的,它执行信息的变换,计算作为一种通用的思维方式。

2、计算思维的实例

计算思维代表着一种普遍的认识和一类普适的技能,它应该像“读、写、算”一样成为每个人的基本技能,而不仅仅限于计算机科学家,因此每一个人都应热心于计算思维的学习和应用。计算思维这一领域提出的新思想、新方法将会促进自然科学、工程技术和社会经济等领域产生革命性的研究成果,计算思维也是创新人才的基本要求和专业素质。

人们在日常生活中的很多做法其实都和计算思维不谋而合,也可以说计算思维从生活中吸收了很多有用的思想和方法。我们来看一些例子。

算法过程:菜谱可以说是算法(或程序)的典型代表,它将一道菜的烹饪方法一步一步地罗列出来,即使不是专业厨师,照着菜谱的步骤也能做出可口的菜肴。这里,菜谱的每一步骤必须足够简单、可行。例如:“将土豆切成块状”、“将 1 两油入锅加热”等都是可行的步骤,而“使菜肴具有神秘香味”则不是可行的。

模块化:很多菜谱都有“勾芡”这个步骤,与其说这是一个基本步骤,不如说是一个模块,因为勾芡本身代表着一个操作序列——取一些淀粉,加点水,搅拌均匀,在适当时候倒入菜中。由于这个操作序列经常使用,为了避免重复,也为了使菜谱结构清晰、易读,所以用“勾芡”这个术语简明地表示。这个例子同时也反映了在不同层次上进行抽象的思想。

查找:如果要在英汉词典中查一个英文单词,相信读者不会从第一页开始一页页地翻看,而是会根据字典是有序排列的事实,快速地定位单词词条。又如,如果现在老师说请将本书翻到第8章,读者会怎么做呢?是的,书前的目录可以帮助我们直接找到第8章所在的页码。这正是计算机中广泛使用的索引技术。

回溯:人们在路上遗失了东西之后,会沿原路边往回走边寻找。或者在一个岔路口,人们会选择一条路走下去,如果最后发现此路不通就会原路返回,到岔路口选择另一条路。这种回溯法对于系统地搜索问题空间是非常重要的。

缓冲:假如将学生用的教科书视为数据,上课视为对数据的处理,那么学生的书包就可以视为缓冲存储。学生随身携带所有的教科书是不可能的,因此每天只能把当天要用的教科书放入书包,第二天再换入新的教科书。

并发:厨师在烧菜时,如果一个菜需要在锅中煮一段时间,厨师一定会利用这段时间去做点别的事情(比如将另一个菜洗净切好),而绝不会无所事事。在此期间如果锅里的菜需要加盐加佐料,厨师可以放下手头的活儿去处理锅里的菜。就这样,虽然只有一个厨师,但他可以同时做几个菜。

类似的例子还有很多,在此就不一一列举了。要强调的一点是,在学习用计算机解决问题的时候,如果经常想想生活中遇到类似问题时的做法,一定会对找出问题解法有所帮助。

3、计算思维的本质

计算思维的本质是抽象(Abstract)和自动化(Automation)。它反映了计算的根本问题,即什么能被有效地自动进行。

计算是抽象的自动执行,自动化需要某种计算机去解释抽象。从操作层面上讲,计算就是如何寻找一台计算机去求解问题,隐含地说就是要确定合适的抽象,选择合适的计算机去解释执行该抽象,后者就是自动化。

与数学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的特点是拋开现实事物的物理、化学和生物等特性,仅保留其量的关系和空间的形式,而计算思维中的抽象却不仅仅如此。例如,堆栈是计算学科中常见的一种抽象数据类型,这种数据类型就不可能像数学中的整数那样进行简单的“加”运算。算法也是一种抽象,也不能将两个算法简单地放在一起构建一种并行算法。

抽象层次是计算思维中的一个重要概念,它使人们可以根据不同的抽象层次,进而有选择地忽视某些细节,最终控制系统的复杂性。在分析问题时,计算思维要求将注意力集中在感兴趣的抽象层次或其上下层,还应当了解各抽象层次之间的关系。

计算思维中的抽象最终是要能够机械地一步一步自动执行的。为了确保机械地自动化,就需要在抽象过程中进行精确、严格的符号标记和建模,同时也要求计算机系统或软件系统生产厂家能够向公众提供各种不同抽象层次之间的翻译工具。

因此,从思维的角度看,计算科学主要研究计算思维的概念、方法和内容,并发展成为解决问题的一种思维方式,极大地推动了计算思维的发展。计算思维虽然具有计算机的许多特征,但是计算思维本身并不是计算机的专属。实际上,即使没有计算机,计算思维也会逐步发展,甚至有些内容与计算机没有关联。但是,正是由于计算机的出现,给计算思维的研究和发展带来了根本性的变化。

海量数据的处理、复杂系统的模拟和大型工程的组织,都可以借助计算机实现从想法到产品整个过程的自动化、精确化和可控化,大大拓展了人类认知世界和解决问题的能力和范围。机器替代人类的部分智力活动激发了人们对于智力活动机械化的研究热潮,凸显了计算思维的重要性,推进了对计算思维的形式、内容和表述的深入探索。在这样的背景下,作岁人类思维活动中以形式化、程序化和机械化为特征的计算思维受到人们重视,并且本身作为研究对象也被广泛和深入地研究着。

4、计算思维对数据科学思维模式的支撑

数据科学的思维方式应当是数学、统计学和计算机科学的一个综合思维模式。计算机科学作为数据科学的学科支柱之一,理所当然对的数据科学的思维方式产生着重要影响。计算思维完全应该作为数据科学思维方式的有力支撑之一。

因此,计算思维至少可以在以下几个层面上对数据科学中的分析思维(Analytical thinking)起到支撑:

(1)数据科学的问题求解过程。利用计算手段求解数据科学问题的过程:首先要把实际的数据问题转换为数学问题和模型,例如马尔科夫模型、神经网络等,然后设计算法进行编程求解。这里也同样体现了计算思维中的抽象与自动化特征。

(2)数据驱动的复杂系统分析与设计。越来越多的自然和社会系统可以用数据来进行模拟和建模。数据可以揭示这些系统的演化规律。利用计算机来对这些系统产生的数据进行建模,设计算法和开发软件来揭示这些系统的演化规律,进而自动的调控这些系统以达到特定的目的。例如复杂网络的建模与分析、交通规划与调控等,都是数据驱动的复杂系统设计。

(3)对人-机-物三元世界的分析与理解。数据科学可以利用可计算的手段,以定量化的方式,对“人类的精神世界,机器的人工世界和物理的自然世界”进行思维过程,充分利用计算思维,就能够满足大数据时代新的社会动力学、人类动力学和人工智能要求的思维。例如,目前处于风口的人工智能领域,结合大数据的计算思维,是当下建设人工智能世界所需要的主流思维方式。

(4)数据的处理需要强有力的计算机技能来保障。一名数据科学家或工程师必须时刻准备好在从各种环境获得的数据上开展相关工作。例如:登录数据库组织数据、从网页中提取数据、将文本转换成能够被分析的数据、以及确保数据存储的机密性等,所有的工作都需要宽泛的计算机能力。这些解决计算机问题的能力会在数据科学的工作流程中反复出现。正如周以真教授所讲,“像计算机科学家一样的思维意味着计算机的编程能力,能够进行多重的抽象思维。”数据科学家和工程师需要掌握众多的基础软件技能,特别是如何解决与计算机科学相关的算法类问题。

Breiman在2001年的时候就提出了算法(计算)和数据(统计)两种文化的模型。在数据科学中,一定要将计算和统计的思维结合起来使用。大数据和数据科学专业毕业的学生应该将这些领域的知识融会贯通,应该会各种不同的技能、不同的解决问题的方法,以应对任何特定的问题,并根据设定环境做出正确的决定;他们应有能力使用、学习甚至开发各种数据工具。

软硬件环境的变化日新月异,这也造成了数据结构、存储、计算效率的不断改变。数据科学需要能够适应这些变化。数据学家应该充分理解日常工作中计算和建模问题所带来的挑战,这两者互相关联,缺一不可。例如,在某一数据集上套用某个模型可能会带来计算量的挑战,此时就应该有能力通过修改模型或者改变计算环境来解决这类问题。看看目前的生物信息学领域就可以知道这种趋势了,生物信息学的专家所掌握的计算机知识现在一点也不比计算机科学家少了,并且还常有一些突破和创新,反过来促进了计算机科学的发展。

相信数据科学也会一样,借鉴计算思维模式,同时回过头来又会促进计算思维,乃至计算机科学的发展。

下一篇,我们再来谈谈统计思维。

参考文献:

  • Jeannette M. Wing, Computational Thinking, Communications of theACM, 2006, 49(3): 33-35.

  • Karp R. M, Understanding science through the computational lens, Journalof Computer Science and Technology, 2011, 26(4): 569-577.

  • 李廉, 计算思维——概念与挑战, 中国大学教学, 2012.

  • 陈国良, 计算思维导论, 高等教育出版社,2012.

  • 陆朝俊, 程序设计的思想与方法, 高等教育出版社, 2013.




https://blog.sciencenet.cn/blog-242272-1047852.html

上一篇:当“数据科学”遇上“自由博雅”(图文版)
下一篇:我所理解的统计思维
收藏 IP: 180.162.196.*| 热度|

4 刘钢 tongjizw haipengzhangdr xiyouxiyou

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 15:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部