||
随着计算机技术的发展,目前几乎所有的科学领域都离不开计算机,确切地讲是离不开计算机软件,许多决策最终必须通过建模来实现,似乎一个工作只有用计算机软件来进行分析,才能体现其先进性和技术含量。显然,在科学研究中如果能充分利用计算机软件,有些问题是迎刃而解。首先,计算机的高性能计算能力解决我们曾经只能想想却无法计算的许多复杂问题(也可算是解决新的科学问题),其次,我们还可以非常方便地去验证一些前人已完成的工作是否有瑕疵或者错误,也就是科学研究中的可再现性研究问题(关于此问题,以前曾写作一篇博文:“一不做二不休”新解:Nature撰文谈科学研究的可再现性)。但是,我们应该看到,所有的软件,特别是专业软件,内置的模块都是建立在前人经过充分探索并获得共识的基础之上的,也就是说,软件只是体现了科学研究曾经做了什么以及他们是如何做的,并不能告诉我们如何创造,如何挖掘新的东西。问题是,随着人们对软件的依赖性越来越高,许多初涉科学研究的年轻人似乎更喜欢讨论如何获取软件,如何操作和使用软件,如何提高软件的运行性能,这显然在某种程度上背离了科学研究对创造性的追求,也可能无意中忽视了软件本身的问题所带来的错误结果。在2013年5月17日出版的Science周刊中,发表了一篇题为“科学软件使用中令人担忧的趋势”(Troubling Trends in Scientific Software Use)的文章强调:虽然对于所有的科学研究来说,开放和系统方法对于软件开发来说都是必不可少的,但对许多科学家来说还是不够的。
在创新研究中,计算机软件的使用,对Everett M. Rogers在1962年的创新扩散(Diffusion of Innovations)理论提出了挑战。该理论认为,创新是一种被个人或其他采用单位视为新颖的观念、实践或事物;创新扩散是指一种基本社会过程,在这个过程中,主观感受到的关于某个新的信息被传播。通过一个社会构建过程,某创新的意义逐渐显现。这一过程分为知晓、劝服、决定、确定四个阶段。这个理论强调了沟通渠道、时间和社会系统,以及创新本身的重要性。一个人所采用的创新刚开始是依赖于人的意识、舆论领袖、早期使用者的意见和一些主观看法,之后才会从科学层面上进行考虑。而计算机软件的使用,或者过度依赖计算机,忽视人在知识创新之中的主观能动性,似乎与这个过程相逆,有时候通过计算机建模所“创造”新知识,之后发现是一个乌龙。
一般计算机中安装了许多应用程序,当我们想用她来完成一件简单处理的事务时,会选择一个或数个相应的软件。但在科学研究活动中,比如计算机建模,其标准和要求显然要比这个要高得多。我们所采用的建模软件是否符合科学方法的基本原则?上述Science论文中的调查表明,许多科学家在选用某个对其研究有重要作用的软件时,却是基于一些非科学的理由。为了说明这个问题,调查选择了那些研究物种与环境之间复杂相互关系的建模者,主要是使用物种分布模型(SDM)的科学家。SDM建模者代表了一个更广泛的生态、生物或环境科学研究群体,因此这个领域的软件非常丰富,大部分科学家受到了生物学和生态学方面的良好教育,科学问题的挑战大体是相同的。与以前的一些研究通常是按照科学家的计算技能进行分组相比,这个调查按照被调查人员的科学技能进行分组,并认为这样会更客观一些。调查让科学家首先从科学领域进行确定,然后让他们从更广泛的角度,特别是尽量排除自己对软件使用的偏好来选择模型和软件。最后的结果非常明显,但在科学追求与所采用的计算方法方面的交叉显然令人不安。近30%的人表示,他们使用某种特定的软件,是因为它已经“在同行评审的出版物中得到验证”。高达57%的人愿意选择那些具有简单用户操作界面的“点击即运行”的软件,只有11%的人会使用那些“语法驱动”(syntax-driven)平台。另外,其他的一些理由包括:软件开发人员是备受尊敬的(7%),个人推荐的(9%),亲密同事推荐的(18%)。只有8%的人声称他们已经对比其他方法对软件进行了验证,而79%的人表示希望学习更多的软件和编程技巧。
文章引用调查中一些受访者的意见如下:
“研究问题和数据应该是最重要的,根据一定的认识所选择的研究方法应该是适合研究问题与数据的,而不是选用研究问题和数据来匹配研究者所指导的研究方法。”
“我经常看到一些同行评审的文章,不论从统计学角度来看,还是从统计推断来看,他们都错误地利用了SDM。当然,这主要是用户的问题,而不是软件本身有问题。有人认为SDM软件是一个黑盒子,而不是用于进行推理的工具,因此没有投入足够的智力工作,以便让工作做得更好。”
“我们并不需要漂亮的软件,而是需要理解生态学及各种类型数据重要性的人,...,关键是需要思考生态学问题。”
文章之后对这个调查结果进行了更深入的分析,认为许多科学家选择软件的理由是因为其出现在同行评审的文章中,文章中的建议、个人的观点以及采用该软件的理由都促使了这种选择。显然这个理由与科学探索本身是错位的,因为软件的代码并没有经过正式的同行评审。当一个方程与所发表在论文中的算法脱节时,这个问题显得尤为明显。相信个人的推荐,对科学和科学家来说,都是一个具有风险的策略。面向最终用户的开发人员(非计算机专业认识)所设计的科学软件可能没有意识到或者忽视了传统的软件工程标准,使得编码中隐藏的错误不是很容易被发现。一些备受尊敬的最终用户开发人员几乎肯定是因为在科学上的突破而赢得了尊重,但他们往往并非软件工程技术方面的高手。大多数人在使用其“信任”的某种软件时,并不知道这个软件具体工作的全貌。一些非常复杂的建模软件更是一种特例,特别是当这个问题不通过软件就无法进行检查时更是如此,因此也不可能去验证其输出结果的正确性。所以提倡应该慎重地使用专业软件,而不是盲信。
从另一个方面来讲,科学家通常都是比较爱学习的,绝大多数科学家都希望能训练出更好驾驭计算机的能力。诚然,如果科学家对软件功能理解不足,在处理一些问题上可能会干着急,因为他们不知道软件是否能完成他们所期盼的功能。例如,SDM在2006年也发布了一个“点击即运行”的软件,使用者云云,引用高达1800多次。尽管一些算法已经发表在同行评审的文章中,但软件运行中因算法问题导致的混乱仍然非常普遍。究其原因,这些文章发表时是采用尽量让生态学家容易理解的方式写的。但是,在SDM领域还是有许多无法解释的原始算法问题,更不用说去理解在分布式代码中的执行问题。
如何解决这些问题呢?文章给出了一些建议。从人才教育上来讲,培养更多能理解计算机代码的科学家,这样使得这些代码本身也可进行同行评审,大学教育的改革可为这种模式提供人才资源。因此,在本科和研究生阶段,进行系统的统计学、计算方法、数学和软件工程的正规培训应该成为科学课程教育的一个核心部分。让毕业生能熟练使用生物、数学、计算机科学、统计方法等,并有能力跨这些学科进行对话与合作。
从科学出版物本身进行改革来看,科学软件的代码不仅需要发布和获取,更需要进行同行评审。但目前大多出版物所采用的同行评审模式中并不包括软件代码的同行评审。即使许多论文的科学性主要是针对某个计算机软件的,其实也没有进行充分、适当的同行评审。一个2010年的调查显示,20个高引用的杂志中只有3个要求在出版物中提供源代码这最基本的一个步骤。科学软件代码对大多数人来说,在理解上是困难的。如何让代码通俗易懂,这也是让代码进行同行评审可行的重要因素。因此对于代码的可理解性应该确定一个基本标准,这类似于同行评审中对英语表达的标准。文章认为,代码透明度和可理解性的标准是能提供对实验、模型仿真、或数据分析等精确的、正式的重复,以及对科学软件的同行评审,需要成为使用该软件所发表的任何文章可接受的一个条件。
当然,期刊本身也可以进行这方面的教育。例如,British Medical Journal(《英国医学杂志》)看到许多投稿缺乏统计学分析这个问题,于是就发表了一系列相关的教程文章。这些文章清晰而准确了包含了大范围的统计学概念,给出了详细的工作范例,并解释了采用何种方式来描述研究结果,这些方式应该易于让读者能去验证他们自己的统计计算。因此,那些依赖计算科学的期刊杂志,也应该出版相应的教程文件,覆盖该领域重要软件(得到作者许可)的数学和计算基础。
参考资料
[1] Everett M.Rogers.Diffusion of Innovations.New York:The Free Press,1983
[2] 百度百科:创新扩散理论(http://baike.baidu.cn/view/1366343.htm)。
[3] Troubling Trends in Scientific Software Use. Science, 340. 2013-05-17.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-26 06:28
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社