内容提要
这篇评论批评学术写作中滥用数学符号和复杂表达的现象。作者认为,简单算法流程被包装成难懂的公式,如将“vision_feedback”写成“Δv”,增加了理解障碍。文章指出,代码、自然语言和公式各有适用场景,数学应作为桥梁而非“防盗门”,真正高级的表达是把复杂问题讲简单,而非反之。
延伸解读
数学符号的适用边界
文章指出,数学符号适合表达概率分布、损失函数等稳定数量关系,但控制流、架构关系等更适合用代码或图表达。将简单流程强行符号化,不仅增加理解成本,还可能因符号使用不当(如用集合符号表示有序列表)而失去严谨性。读者应警惕那些仅为追求形式而滥用符号的写法。
学习中的“符号考古”陷阱
初学者面对满屏公式时,容易陷入逐个解析符号含义的困境,而忽略算法整体流程。文章建议学习顺序应为:先用自然语言建立直觉,再用代码或图展示流程,最后用公式精确定义。若教材直接堆砌公式,读者可尝试先自行用代码实现,再回头理解公式,以打破“看不懂公式”的循环。
代码的严谨性常被低估
文章强调,现代编程语言本身是严格的形式系统,能明确表达类型、参数、循环终止条件等,甚至比论文伪代码更严谨。例如,代码必须处理验证失败后的行为,而伪代码可能含糊带过。因此,代码并非“不学术”,反而能暴露算法中的模糊之处,是检验理解的好工具。
Q&A
为什么说把简单问题写复杂是一种学术病?
因为一些论文和教材滥用数学符号和复杂表达,把简单的算法流程包装成难懂的公式,增加了读者的理解障碍,而不是帮助理解。作者认为这是学术表达的一种病态现象。
作者认为数学符号在什么情况下是必要的?
作者认为在表达概率分布、损失函数、梯度、矩阵变换、优化目标、复杂度分析等复杂数量关系时,数学符号是必要且优美的,因为它能压缩信息并方便推导。
作者为什么批评将简单算法写成伪代码的做法?
因为这种做法把简单的控制流(如循环和条件判断)用半数学、半代码的符号重新编码,增加了理解难度,而且有时并不严谨,比如用集合符号表示有序列表。
作者认为代码、自然语言和公式各自适合表达什么?
作者认为控制流最适合用代码表达,架构关系最适合用图表达,概念解释最适合用自然语言表达,而公式适合表达精确的数量关系。
作者对周志华《机器学习》一书的评价是什么?
作者认为该书在机器学习教育史上有地位,但批评它满眼公式、没有代码,对初学者不友好,容易让读者陷入符号考古,而不是理解算法本质。
作者认为理想的技术教材应该按什么顺序展开?
作者认为理想的技术教材应该先用自然语言建立直觉,再用图或代码展示流程,最后用数学公式精确定义关键关系。自然语言回答“是什么”,代码回答“怎么做”,公式回答“为什么”。
作者为什么说数学应该成为桥而不是墙?
因为数学公式应该帮助读者更快地理解问题,而不是成为理解的门槛。当公式只是把简单变量替换成希腊字母、把简单流程重新编码时,它就变成了障碍,而不是工具。
作者认为代码比论文伪代码更严谨的原因是什么?
因为代码必须执行,无法靠排版掩盖含糊之处,比如必须明确处理最大迭代次数达到后的情况,而伪代码可以模糊处理。