近似是什么?用简单可算的东西代替复杂难算的东西
近似(Approximation)是指用一个更简单、更容易处理的东西,去代替一个复杂的、难以精确求得的东西,同时让两者之间的差距,也就是误差,足够小、可以接受。近似是数学、科学和工程中无处不在的思想,也是机器学习的核心思想之一。
为什么需要近似
在很多情况下,精确的答案要么根本无法求出,要么计算代价高到无法承受。比如圆周率是一个无限不循环的小数,永远不可能写出它的精确值,日常计算中用 3.14 就足够了;很多积分和方程无法用公式求出精确的解,只能用数值方法近似地计算;预测天气需要模拟大气中无数个分子的运动,只能把大气划分成网格进行近似计算。近似的关键在于:在精确程度和计算代价之间找到合适的平衡,满足实际的需要。
数学中常见的近似方法
泰勒展开:在某一点附近,用一个多项式来近似一个复杂的函数。比如当角度很小时,正弦函数的值约等于角度本身,物理学中分析单摆的小角度摆动就用了这个近似。线性近似是最简单的情况:在一个点附近,把曲线看作一条直线。数值积分:把要求积分的区域切成许多小块,用矩形或梯形的面积之和来近似曲线下的面积。迭代逼近:比如牛顿法求方程的根,从一个初始的猜测出发,一步步地逼近真正的答案。
机器学习中的近似
机器学习在很大程度上就是关于近似的学问。函数逼近:机器学习的基本任务,就是根据有限的样本,找到一个函数去近似输入和输出之间真实但未知的关系。神经网络就是一种强大的函数逼近器,万能逼近定理指出,只要有足够多的神经元,神经网络就能以任意精度逼近任何连续的函数。用经验风险近似期望风险:我们真正想最小化的是模型在所有可能数据上的误差,但只能用训练数据上的误差来近似它。随机梯度下降:用一小批样本计算的梯度,来近似整个数据集上的梯度。近似推断:在概率模型中,精确地计算后验分布往往是不可能的,于是使用变分推断、马尔可夫链蒙特卡罗采样等近似方法。替代损失:用交叉熵等便于优化的函数,来近似难以直接优化的分类错误率。强化学习:用神经网络来近似价值函数和策略。
在工程实践中也有大量的近似:模型量化,用低精度的数字来近似地表示模型的参数,以减少内存占用、加快运行速度;模型蒸馏,用一个小模型去近似一个大模型的行为;近似最近邻搜索,在海量的向量中快速地找到大致最相似的结果,而不是逐一比较,这是向量数据库和检索增强生成的基础;以及各种近似的注意力计算方法,用来降低大模型处理长文本的成本。
近似的代价
近似总是伴随着误差。好的近似方法需要能够估计和控制误差的大小,并清楚自己的适用范围:比如小角度近似在角度较大时就不再准确。在机器学习中,近似误差、估计误差和优化误差共同决定了模型的最终表现,理解这些误差的来源,有助于判断应该在哪个环节上进行改进。