译者序
程序员应不应该有一定的数学功底,这是一个老生常谈的问题。
比起循序渐进地学习数学知识,很多程序员是在遇到跟数学相关的问题时才去主动了解的。这可能是因为某些知识早就成了尘封的记忆,也可能是因为那些知识从来没有出现在他们的视野之中。
虽然这种“遇到问题解决问题”的学习方法会让人陷入短暂的自我否定之中,但是等到真正掌握了某个数学知识点,那种“久旱逢甘霖”的感觉会让人非常快乐。为了延续这种快乐,有的人从箱子里翻出了当年的高等数学、线性代数以及概率论与数理统计教材,但翻了几页之后又重归自我否定;还有的人会继续这种临时抱佛脚的学习模式,从而进入“盲人摸象”模式:了解了许多知识点,却始终不能形成完整的知识网络。
于是本书的出现就非常必要了——它让作为程序员的读者,从程序员的角度、以程序员易于理解的方式来学习数学。
我相信大部分读者看到书名,就会联想到结城浩的《程序员的数学》系列图书。从书名上来讲,本书少了一个“的”字并不是为了避嫌(毕竟《程序员的数学》中文译本也出自图灵公司),而是恰到好处地给予了一种隐喻——这本书对数学知识的讲解更为直接。
比起完全的启发式写作,本书作者更关注读者是否真正掌握了相关的数学知识,主要体现在以下三点。
- 本书作者规划了详细的学习路径——从基础的向量计算到最终的神经网络训练,基本涵盖了业务工程师和初级算法工程师所需了解的所有数学知识。
- 作者的写作基于大量的代码片段,且以Jupyter Notebook为载体,读者可以直接把学到的数学知识转化为代码。当然,作为读者的你也不必有太大的心理负担,本书中的代码完全遵循“够用就好”的原则,不会增加额外的学习开销。
- 作者为各章添加了大量的练习(事实上,很少见到一本书里有这么多练习)。这些练习既有开放式的提问,又有针对正文内容的扩展和提升。
综上所述,本书的阅读体验很棒,学习曲线十分平缓,并且章节之间环环相扣。最关键的是,就像作者在第1章中提到的,它能帮你通过代码来学习数学,并且用包含数学知识的代码来解决实际问题。
说到本书的翻译,首先要感谢把本书引入国内的图灵公司编辑谢婷婷,让译者和读者有机会跟着作者的思路重新梳理跟编程相关的数学知识。
当然,还要感谢参与本书翻译的工程师们。
他们来自百度KFive,这是一个人数众多、负责手机百度等移动端产品开发的大前端技术团队。在平时的业务开发中,无论是日常产品功能的实现,还是涉及专业的端智能、前端智能化、视频图像处理和可视化等领域,都让团队中的同学或多或少感受到了数学知识不足的困扰。因此,这次翻译对于译者们来说也算是一次知识升级——诚如作者所言,通过代码重新发现了数学之美。
这里列出参与本书翻译的同学(按照章节顺序):熊贤仁、范雨蓉、毕营帅、吴艳、樊中恺、梅旭光、岳双燕、杨珺(同时承担整体审校工作)、张静媛。
话不多说,让我们跟随代码的指引,开启美妙的数学之旅吧。
樊中恺@百度KFive
2021年8月