当前位置: 华文问答 > 数码

本科学数学对从事计算机帮助到底有多大?

2016-01-18数码

本科清华数学,硕士厦大计算机,博士ETHZ,来讲讲自己的感受。

数学是一种工具,就像自行车、汽车、火车、飞机一样,能够让你从一个地方(已知的条件)到达你的目的地(想要达成的结果)。能够创造这种工具的人是数学家。而学习各种数学知识和技巧能够让我们熟练使用这些工具。能够用的人不多,能够熟练用的更是凤毛麟角。举个简单的例子,最小二乘,够简单吧,随便翻开计算机图形学的论文,很可能论文的本质就是求解一个最小二乘拟合。但是怎么把给定数据转化为一个最小二乘问题就见功力了。没有多年科研经验的菜鸟很可能都没意识到给定的问题跟最小二乘有啥联系。

1)我的感觉是 只有合适的数学而没有好的或者差的数学 。就像乡间小道,就比较适合骑自行车;高速公路就比较适合开汽车;如果是铁轨,最好还是跑火车。这就是说, 问题本身决定了用什么样的数学 ,而不是强硬地加入高深复杂的数学内容。我刚开始做科研的时候,总想加入一些复杂一点的数学(好歹也是数学系毕业的啊)。但是后来我发现,复杂的数学不一定合适这个问题,就好象开着跑车在乡间小道上晃悠一样,还不如一辆自行车来得自然。

2) 学习越多的数学可以让你了解更多可能的解决方案 。如果你只有自行车,那不管是乡间小道还是高速公路,你都得骑自行车。如果你不了解概率论,没听说过群,没听说过随机过程,没听说过小波,不知道函数空间,给你一个计算机专业的问题,你就只能选择「自行车」,根本就不知道有高大上的「飞机」存在。数学本身就很大,线性代数,拓扑,微分几何,概率论,数值方法……每一个子领域也都有数不清的理论和定理。只有逐步积累这些知识,一点一滴地积累,最终才会在遇到问题的时候找到合适数学工具。

3) 计算机科学是一个综合性学科 ,也包含理论、应用、工程等多个方面。不同的分支所用到的数学也不一样。以我所从事的图像处理为例, 曲率滤波

知乎专栏

)非常简单, 只有简单的加减乘除 ,似乎小学生都可以做,为什么我要把它写在博士论文里面?我觉得,虽然它很简单,但是针对优化曲率这个问题,这样的数学是合适的。 针对特定问题,选取合适的数学工具来解决它 ,这才是最重要的。

4) 数学思维方式和计算机学科思维方式不同 。数学更强调逻辑性,如果从给定的条件一步步推导得到有用的结论。结论只有对或者错,非常明确,跟理论计算机比较类似。但是计算机应用就有很多模糊的地方,并不是只有对错。数学中的近似理论对于向计算机靠拢的同学来说在思维方式的转变上有很多帮助。计算机中的很多问题都是:给定数据-】数学抽象(模型)-】公式推导-】求解-】结果解释(返回原问题)。这其中涉及如何建模、求解(优化)、代码实现等等多个方面。

5) 数学系的学生一定要学编程,就像计算机系的学生一定要学数学一样 。有一次把数学系的人发布的代码改了两行,效率提高了一百多倍!学数学的人写代码只要求正确就可以,完全不考虑可读性、效率、可扩展性、易用性等等。

6) 很多学计算机的同学的数学并不比数学系的学生差 ,因为cs的同学知道学数学可以用来干嘛,而数学系的学生通常比较茫然,不知道所学的东西有什么用。直接的结果就是cs的同学很努力地学数学,而数学系的学生虽然掌握了很多数学却不知道自己所学可以解决哪些问题。很多cs的论文数学都非常高深。不过我个人对这些复杂的数学不太感冒。如果计算机论文中的公式特别复杂,我一般都会跳跃式阅读。如果计算机论文中的公式特别简单,我一般会花时间仔细看(作者很可能找到了合适的数学工具)。对于数学论文,我的阅读方式恰恰相反,对于复杂的公式会特别留意。

7) 很多人觉得本科学数学对后来学习计算机帮助不大,也有很多人觉得帮助非常大 。这就好像问上大学对你的人生有没有帮助一样。不同的人会有不同的经历和感悟。自强不息吧,不管你在哪里或者哪一个领域。 因为不管在哪里,你都还是你。正如歌词所说,「我就是我,是颜色不一样的烟火」。