一、介绍
现在的高考也很重视理工了,很多网络上惊呼得数学者可上更好的大学。不由得想起上中学时有一句名言:"学好数理化,走遍天下都不怕"。当时有一份刊物好像叫"中学生数理化",很多学生都非常喜欢。
为什么现在重视数学,有很多种原因,今天咱们就从学好计算机过程中,为什么需要扎实的数学基础来尝试着分析一下。
二、数学与计算机技术
大家其实都清楚,电子计算机技术(其下称为计算机)其实是为解决数学计算产生的。当时是因为计算弹道。也就是说,计算机技术从一开始就和数学有着不解之缘。
数学是计算机科学的底层基础,是驱动计算机发展的一个重要支撑。数学的严谨的逻辑、高度的抽象和优化在计算机科学中都着显示的映射。大家在解数学题时是不是会发现复杂的数学题往往有多种解题思路和方法,很多解题的方法尤如天马行空,简明、高效。而在计算机中,为了提高资源的利用率和提高运算速度,在硬件限定的情况下,也会出现更高明的算法来实现类似的效果。
往往很多算法和架构的设计模型都可以映射到数学模型之上,这是非常常见的一种思路。通过数学模型的逻辑推演和证明,来实现对计算机技术的设计闭环。
学习计算机的一般要学习高等数学(微积分等)、线性代数(矩阵等)、离散数学或组合数学(集合、图论等)等。
三、应用的场景和分析
下面将从计算机技术几个重要的应用场景对数学的应用进行初步的分析说明:
- 算法和数据结构
大多数的开发者,能直面的数学知识基本都在这个分类里了。比如数组对应着数学中序列、线性结构;树和图对应着数学中的树和图等等 - 计算机视觉和图形学
这个领域应用到的数学知识特别多,但搞这个的开发者相对来说要少很多。其涉及到的主要是线性代数和几何论中的知识。特别是矩阵、向量等。当然微积分、三角函数等应用也相当广泛。比如图形的旋转其实就是矩阵变换为基础。而常见的人脸识别等则需要对图像进行分割计算,涉及到几何、概率等数学知识 - 数据库系统
数据库系统是一种广泛使用的技术,它的底层使用了各种算法和数据结构,如存储数据的红黑树等。而在查询时,又需要使用集合、关系代数等来进行速度和空间的平衡 - 计算机网络和安全
随着某公司免费了病毒软件,看上去木马和病毒离普通大众远了。但实际上,在现代的网络通信中,安全问题始终是重中之重。它涉及到的网络拓扑、密码学、压缩技术等等。都离不开数学,如用HTTPS和银行交易的加密算法中,就有数学中的椭圆曲线或大质数分解、概率论、信息论等;节点的路由离不开图论中的相关数学知识点等等 - 编译技术
大多数开发者对编译技术本身就了解的相当少,但几乎是天天要用到。所以这里需要说明一下。编译技术中用到的最明显的就是离散数学中的有限自动机和图论。 - 操作系统(并发技术)
操作系统其实和数学的结合更加紧密。它既是动态的又是静态的。首先,操作系统中对文件等的管理使用的是图和树,而对并行并发控制使用的是逻辑与状态机。为了能够更好的解决进程的调度,又需要使用数学中的排队理论等等 - AI和大模型
数学在AI和大模型中应用也非常广泛,这个专门放在下面分析 - 科学计算及仿真技术
这个其实普通大众应用的很多,但对其后面数学知识并不了解。典型的如利用计算机技术进行天气预报。它涉及到微分方程、数值分析和概率论、数理统计等。当然大规模的数据也需要使用线性代数中矩阵进行处理
其实在计算机中还有很多应用,比如上面只提到了软件方面的应用。硬件的设计和制造,其实也有很多相关的数学知识,这里就不再展开。
四、AI的应用
现在AI和大模型的应用非常广泛,其实它们的底层更是离不开数学知识。下面就对其应用到的常见的数学知识进行说明:
- 线性代数
这个有一点基础AI技术的都知识,象向量、矩阵等等都是线性代数的知识。更不用谈其中的各种矩阵的运算和处理了 - 概率论和数理统计
在神经网络中的分类和预测以及损失函数的设计都用到了概率相关的数学知识,其它如马尔可夫决策过程、各种评估以及用于防止过拟合的正则化等都涉及数理统计和概率论。特别在Transformer机制中注意力机制中,更是使用到了概率相关的数学知识 - 微积分
这个最典型的就是梯度,而梯度及相关的运算是神经网络的基础。包括梯度下降、缺失函数、反向传播、激活函数到优化器等等,都离不开它 - 信息论
如果提到信息论可能很多不搞这个专业的不太明白。但提一个名词就明白了,熵。在大模型的文本生成中,就是对熵进行控制的过程。还有包括交叉熵,注意力机制中的动态信息路由、KL等等都是信息论的内容 - 最优化
AI和大模型本质就是一个查找最优的过程,明白了这一点,就明白了最优化的应用。无论是在大模型的设计还是推理、训练等过程中,最优化是无处不在的。比如权重的量化、优化器的处理以及LoRA中都会涉及
可以认为在AI和大模型中对数学计算的应用达到了集大成者。它应用到了线性代数、概率论、数理统计、微积分及信息论和最优化等等数学知识。可以说,数学与AI和大模型是密不可分的。
五、总结
很多开发者可能感觉不到数学的重要性,但从上面的分析可以看出,数学在计算机领域的应用多么丰富,结合多么紧密。而更应该引起重视的是,经常提到的编程思想,其实就是一种抽象。而这种抽象的思维就离不开数学打下的基础。
可以这样理解,数学为计算机科学提供了理论基础,计算机科学为数学提供计算力,它们二者互相促进,共同发展。