Simple is better than complex.

​ Python 之禅告诉了我们优雅的代码应该如何编写:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!

​ 最近读到了一篇名为 FeatUp 的论文,受这篇论文震惊之余,更理解了 Python 之禅的精神,FeatUp 论文提出了一个有效的采样算子,在投第一版的时候因为其本身的性能不够好,因而被拒稿了,在第二版的时候在第一版上的基础上加入了各种技巧,把性能硬生生拉到了 SOTA 的效果。但是在我眼里,它反而因为引入了过多的奇技淫巧牺牲了整片论文的 elegance。相比于之前的 dysample 和 SAPA 等论文,它们可能没有过多的技巧,但是通过最简单的方式改善性能。再加上最近因为审稿而读的 Beyond CARAFE 论文(这篇论文纯属灌水),我把论文分为三类:

  • 可有可无的论文:所有灌水的论文都属于这一类(Beyond CARAFE),论文所作的贡献可有可无。如果拒稿理所当然,如果接受该论文就会迅速被人遗忘
  • 很好地 work 的论文:FeatUp 就是属于这一类的论文,它通过一些暴力的方法(技巧)把性能硬生生拉成 SOTA,它可以给许多人提供 idea,但它绝不是属于最好的论文
  • 不失性能而且优雅的论文:UNet,Transformer 等经典论文都是属于这一类,用最简单朴素的 idea 达到最好的性能。我相信大道至简,大巧若拙

再读Python之禅

  1. 优美胜于丑陋(Beautiful is better than ugly)——科研工作不只是寻找答案,更是追求一种内在逻辑之美,简洁而富有力量的理论往往比繁复混乱的解释更能体现科学的价值。优美的实验设计、清晰的数据呈现和优雅的结论推理,都是科研人员应当追求的目标
  2. 明了胜于晦涩(Explicit is better than implicit)——在科研交流与报告中,直截了当、明确清晰的表述优于隐晦难懂的语言。这意味着研究成果应当清楚地阐述假设、方法、数据和结论,避免读者产生误解,确保可重复性和可验证性
  3. 简单胜于复杂(Simple is better than complex)——解决问题时,寻求简单的解决方案常常更为有效。科研过程中应尽量简化模型、优化实验步骤,减少不必要的变量干扰,以便更准确地把握事物的本质。
  4. 复杂胜过过度复杂(Complex is better than complicated)——虽然科学研究不可避免地涉及复杂性,但应避免不必要的复杂化。在复杂系统中找到秩序和规律,构建起结构化的理论框架,才是科研智慧的体现