SCI的写作前提——认识论文的本质
论文可以被视为证据和支持性解释的集合;也就是说,试图说服他人分享你的结论
1.假设
在大纲中,一个示例研究程序可以如下进行。
● 研究算法的研究人员可能会推测是否有可能更好地利用CPU上的缓存来降低计算成本。
● 初步研究可能会导致这样一种假设,即尽管存在额外的计算成本,但具有较差内存局部性的基于树的结构在实践中会比具有较高局部性的、基于阵列的结构慢。
● 该假设提出了一个研究问题,即是否可以通过用数组结构代替树结构来改进特定的排序算法。
● 如果假设正确,则应该观察到的现象是一种趋势:例如,随着要排序的项目数量的增加,与基于数组的方法相比,基于树的方法应该越来越显示出较高的缓存未命中率。
● 证据是要排序的几个项目集的缓存未命中数。或者,可以使用外部证据,例如随着数据量的变化,执行时间的变化
正如这个例子所说明的,研究计划的结构来自于有一个明确的研究问题和假设。
重要的是要说明没有提出的内容——结论的限制是什么。
考虑一个例子。假设P-列表是一种用于一系列应用程序的众所周知的数据结构,特别是作为一种快速紧凑的内存中搜索结构。一位科学家开发了一种新的数据结构,称为Q-list。形式分析表明,这两种结构在空间和时间上都具有相同的渐近复杂性,但科学家直观地认为Q-list在实践中更优越,并决定通过实验来证明这一点.
这种信念或本能的动机是科学过程中的一个关键因素:由于思想在最初构思时不可能是正确的,因此直觉或合理性表明它们值得考虑。也就是说,调查很可能是出于主观原因而进行的;但这项研究的最终报告——也就是发表的论文——必须是客观的。
继续上面的例子,假设可以概括为:
×:Q列表优于P列表
但这一说法还不足以作为实验的基础:成功必须适用于所有应用程序、所有条件、所有时间。正式的分析也许能够证明这样的结果是合理的,但没有任何实验会影响如此深远。在任何情况下,数据结构被完全取代的情况都很少见——考虑到数组和链表的持久性——所以这个假设很可能是不正确的。一个可检验的假设可能是:
√: 作为一种用于大数据集的内存搜索结构,Q列表比P列表更快、更紧凑。
进一步的条件限制可能是必要的:
√: 我们假设存在一种特殊访问模式,也就是说,大多数访问将只访问一小部分数据。
限定语句对q列表的声明施加了一个范围。对于假设,有足够的信息来合理地得出结论:q表不适合某种应用;
这种限制不会使结果无效,而是通过使其更精确来加强它。另一位科学家可以自由地探索q列表在另一组条件下的行为,在这些条件下,它们可能不如p列表,但最初的假设仍然有效。
正如这个例子所说明的,一个假设必须是可检验的。可测试性的一个方面是将范围限制在可以进行探索的领域。
另一个至关重要的方面是,假设应该能够证伪。含糊的说法不太可能达到这一标准。 Q列表性能与P列表性能相当。
一种糟糕假设似乎特别常见的研究形式是==“黑匣子”==工作,即黑匣子是一种对其特性了解甚少的算法。例如,一些研究包括将黑匣子学习算法应用于新数据,其结果是对基线方法的改进。(通常,这种说法的大意是“我们的黑匣子比随机的要好得多”。)这些黑匣子在没有科学家创造性投入的情况下解决问题的明显能力吸引了低价值的研究。这类研究的一个弱点是,它没有深入了解数据或黑匣子,对其他调查也没有影响。特别是,这样的结果很少告诉我们,如果将相同的方法应用于不同的情况,甚至应用于新的但相似的数据集,是否会发生相同的行为。也就是说,结果不是可预测的。在某些情况下,在某些数据上观察算法的行为可能很有趣,但通常情况下,实验的目的是确认模型或理论,然后可以用来预测未来的行为。也就是说,我们使用实验来了解更一般的特性,这是黑盒研究中缺少的特性。
然而,该假设不应遵循实验。一个假设通常是基于观察,但只有能够做出成功的预测,才能被视为得到证实。诸如“算法对我们的数据有效”之类的观察结果和诸如“算法被预测对这类数据有效,并且这一预测已经在我们的数据上得到了证实”之类的经过检验的假设之间存在巨大差异。关于这个问题的另一个观点是,测试应该尽可能是盲目的。如果一个实验和假设对数据进行了微调,就不能说这个实验提供了证实。充其量,这个实验提供了假设所依据的观察结果。换句话说:先假设,然后测试。
如果两个假设与观察结果同样吻合,并且其中一个明显比另一个简单,则应选择更简单的假设。这个原理被称为奥卡姆剃刀,纯粹是为了方便;但它是公认的,当有另一种解释可用时,没有理由选择复杂的解释。
2.辩护假设
一篇强有力的论文,一个组成部分是一个精确的、有趣的假设;另一个组成部分是假设的检验和支持性证据的呈现。
作为研究过程的一部分,你需要检验你的假设,如果它是正确的——或者,至少,没有被证伪——收集支持证据。
在提出假设时,你需要构建一个论据,将你的假设与证据联系起来。
例如,“新的范围搜索方法比以前的方法更快”的假设,可能得到“n个元素之间的范围搜索需要【2log(log n)+c】次的比较”的证据的支持。这可能是好证据,也可能不是好证据,但并不令人信服,因为没有任何论点将证据与假设联系起来。缺少的是诸如“以前方法的结果表明渐近成本为【log n】”之类的信息,连接论点的作用是证明证据确实支持假设,并证明结论是正确得出的。
在构建一个论点时,想象自己向同事捍卫自己的假设会很有帮助,这样你就可以扮演检察官的角色。也就是说,提出反对意见并为自己辩护是一种收集所需材料的方式,以说服读者你的论点是正确的。从“新的字符串哈希算法很快,因为它不使用乘法或除法”的假设开始,你可能会争论如下:。。。
在争论中,你需要反驳可能的反对意见,同时承认无法反驳的观点,同时承认你不确定的观点。如果,在发展你的假设的过程中,你提出了一个反对意见,但推理它是有价值的,包括在论文中的推理。这样做可以让读者跟随你的思路,并极大地帮助那些独立提出同样反对意见的读者。也就是说,你需要预料到读者对你的假设可能会有什么顾虑。同样地,你应该积极地寻找反例。
如果你想到一个你无法反驳的反对意见,不要把它放在一边。
至少你应该自己在论文中提出这个问题,但这很可能意味着你必须重新考虑你的结果。
总是要考虑你的假设是错误的可能性。通常情况下,一个正确的假设有时看起来是可疑的——也许是在早期阶段,在它被完全发展之前,或者当它似乎与最初的实验证据相矛盾时——但这个假设仍然存在,甚至可能在面对怀疑时通过测试和完善来加强。但同样常见的情况是,一个假设是错误的,在这种情况下,坚持下去是浪费时间。坚持足够长的时间来确定这是否可能是真的,但坚持更长的时间是愚蠢的。
一个推论是,你对一个假设的直觉好感越强烈,你就应该越严格地测试它——也就是说,试图证实或反驳它——而不是扭曲结果,以及你自己为它辩护。要有说服力。以对算法特性的研究为例,需要解决以下问题。
● 读者会相信这个算法是新的吗?只有研究者仔细地进行文献综述,并充分探索和解释以前的相关工作。这样做包括赞扬重大进展,而不是高估贡献较小的工作。
● 读者会相信算法是合理的吗?最好仔细解释一下。潜在的问题应该被识别出来,要么被承认——例如,解释为什么该算法不普遍适用——要么通过一些令人信服的论点被驳回。
● 这些实验令人信服吗?如果代码不足以公开,是因为它有问题吗?是否使用了正确的数据?是否使用了足够的数据?
每个研究项目都会提出自己的怀疑问题。这种提问在以后的研究项目中也很合适,这样可以让作者有机会对作品进行批判性评估。
3.证据的形式
论文可以被视为证据和支持性解释的集合;也就是说,试图说服他人分享你的结论。好的科学利用客观证据来达到目的,例如说服读者做出更明智的决定,加深他们对问题和解决方案的理解。在一篇文章中,你提出了一个问题或假设,然后提出证据来支持你的观点。证据需要令人信服,因为科学的过程依赖于读者的批判性和怀疑性;读者没有理由对没有结论的作品感兴趣。
从广义上讲,有四种证据可以用来支持一个假设:证明、建模、模拟和实验。
模型是对假设(或假设的某些组成部分,例如正在考虑其属性的算法)的数学描述,通常会有证据表明假设和模型确实对应。
模拟通常是假设的简化形式的实现或部分实现,其中通过省略或近似避免了完全实现的困难。
模拟的一个很大的优点是它提供了可以平滑调整的参数,允许研究人员在广泛的输入或特征范围内观察行为。例如,如果您正在比较用于消除遗传数据中的错误的算法,那么使用模拟数据可能允许您控制错误率,并观察不同的算法何时开始失败。真实数据可能有未知数量的错误,或者只有几个不同的错误率,因此在某种意义上可能信息较少。然而,模拟总是存在不现实或过于简单化的风险,其特性意味着观察到的结果在实践中不会发生。因此,模拟是强大的工具,但最终需要与现实进行验证。
实验是对假设的全面检验,它基于提议的实施和真实的或高度现实的数据。
在实验中,人们会有一种真的在做的感觉,而在模拟中,人们只会有一种假装的感觉。例如,人工数据提供了一种探索行为的机制,但如果结果具有说服力,则需要在真实数据上观察相应的行为。
然而,在某些情况下,模拟和实验之间的区别可能是模糊的,原则上,实验只能证明假设适用于所使用的特定数据;建模和仿真可以将结论(尽管不完美)推广到其他情况。
4.证据的使用
在选择是否使用证明、模型、模拟或实验作为证据时,要考虑每个证据对读者的说服力有多大。
选择一种形式的证据,不是为了尽量减少你自己的努力,而是为了尽可能地有说服力。
5.测量方法
当你发展你的研究问题,那么,你应该问什么是要衡量的?
将采取哪些措施?
例如,当检查一个算法时,是否会通过执行时间来度量它?
如果是这样,用什么机制来测量呢?
对于在一台机器上运行的单线程进程来说,这个问题可能很难回答。
对于在网络中使用不同资源的分布式过程,可能没有完美的答案,只有一系列具有各种缺陷和缺点的选择,每一个都需要您和您的读者理解。
作为另一个例子,我们可以说,声称网络质量得到改善的证据是传输数据包的平均时间减少了——这是一个可以测量的量。
但是,如果将网络改进的目标简化为减少等待时间的目标,那么定性目标的其他方面(例如视频传输的平滑性或远程位置服务的有效性)可能会被忽视。
精心设计的实验工作的优点也是显而易见的。
在计算机科学中,通过实验证实或反驳正式研究正确性的工作历来被低估:也许是因为实验标准不高;也许是因为计算机系统、语言和数据的巨大多样性使得真正通用的实验难以设计;也可能是因为高等数学的理论工作比一些人认为仅仅是编码的工作更能给人带来智力上的冲击。然而,许多问题不能轻易地通过分析来回答,一个没有实际证实的理论对计算和对其他科学一样没有兴趣。
“假设、问题和证据”清单
关于假设和问题:
- 正在研究的现象或性质是什么?
- 为什么对它们感兴趣?
- 这项研究的目的明确了吗?
- 具体的假设和研究问题是什么?
- 这些元素是否令人信服地相互关联?
- 这项工作在多大程度上具有创新性?
- 这反映在索赔中了吗?
- 什么能推翻这个假设?
- 它有什么不可思议的后果吗?
- 潜在的假设是什么?
- 他们明智吗?
- 这项工作受到过批判性的质疑吗?
- 你确信这是可靠的科学吗?
- 关于证据和测量,要使用什么形式的证据?
- 如果是模型或模拟,如何证明结果具有实际有效性?
- 如何衡量证据? 所选择的测量方法是否客观、适当和合理?
- 定性目标是什么?
- 是什么使你选择的定量方法适合这些目标?
- 在你选择的度量标准中,有哪些内在的妥协或简化?
- 结果具有预测性吗?
- 将证据与假设联系起来的论点是什么?
- 积极的结果在多大程度上能令人信服地证实假设?
- 否定的结果会反驳它吗?
- 你的方法可能存在哪些弱点或局限性?