机器学习的数学原理


机器学习的数学原理

作者:李智慧

所谓的人工智能,在技术层面很多时候就是指机器学习,通过选择特定的算法对样本数据进行计算,获得一个计算模型,利用这个模型,对以前未见过的数据进行预测,如果这个预测在一定程度上和事实相符,我们就认为机器象人一样具有某种智能,即人工智能。

这个过程和人类的学习成长非常类似,也是经历一些事情(获得样本数据),进行分析总结(寻找算法),产生经验(产生模型),然后利用经验(模型)指导自己的日常行为。如下图。

image

因此,构建一个机器学习系统,需要有三个关键要素:样本、模型、算法。

样本

样本即通常人们说的训练数据,包括输入和结果两部分。比如我们要做一个自动化进行新闻分类的机器学习系统,对于采集的每一篇新闻,能够自动发送到对应新闻分类频道里面,比如体育、军事、财经等等。这时候我们就需要一批新闻和其对应的分类类别作为训练数据。新闻通常随机选取一批现成的新闻素材就可以了,分类却需要人手工进行标注,也就是需要有人阅读每篇新闻,根据其内容打上对应的分类标签。

数学上,样本通常表示为:

image

其中 x{n} 表示一个输入,比如一篇新闻, y{n} 表示一个结果,比如这篇新闻对应的类别。

样本的数量和质量对机器学习的效果至关重要,样本量太少,或者样本分布不均衡,对训练出来的模型有很大影响。就像一个人一样,见得市面少,读书少,就更容易产生偏见和刻板印象。

模型

模型就是映射样本输入与样本结果的函数,可能是一个条件概率分布,也可能是一个决策函数。一个具体的机器学习系统所有可能的函数构成了模型的假设空间,数学表示如下: F = {f | Y = f(X)}

其中X是样本输入,Y是样本输出,f就是建立X和Y映射关系的函数。所有f的可能结果构成了模型的假设空间F。

很多时候F的函数类型是明确的,需要计算的是函数的参数,比如确定f函数为一个线性函数,那么f的函数表示就可以写为:

image

这时候需要计算的就是 a{1} 和 a{0} 两个参数的值。这种情况下模型的假设空间的数学表示如下:

image

其中 \theta 为f函数的参数取值空间,一个n维欧氏空间,被称作参数空间。

算法

算法就是要从模型的假设空间中寻找一个最优的函数,使得样本空间的输入X经过该函数的映射得到的f(X),和真实的Y值之间的距离最小。这个最优的函数通常没办法直接计算得到,即没有解析解,需要用数值计算的方法不断迭代求解。如何寻找到f函数的全局最优解,以及使寻找过程尽量高效,就构成了机器学习的算法。

如何保证f函数或者f函数的参数空间最接近最优解,就是算法的策略。机器学习中用损失函数来评估模型是否最接近最优解。损失函数用来计算模型预测值与真实值的差距,常用的有0-1损失函数,平方损失函数,绝对损失函数,对数损失函数等,以平方损失函数为例,损失函数如下:

image

对于一个给定的样本数据集

image

模型f(X)相对于真实值的平均损失为每个样本的损失函数的求和平均值:

image

这个值被称作经验风险,如果样本量足够大,那么使经验风险最小的f函数就是模型的最优解,即求

image

即可。但是相对于样本空间的可能取值范围,实际中使用的样本量总是有限的,可能会出现使样本经验风险最小的模型f函数并不能使实际预测值的损失函数最小,这种情况被称作过拟合,即一味追求经验风险最小,而使模型f函数变得过于复杂,偏离了最优解。这种情况下,需要引入结构风险以防止过拟合。结构风险表示为:

image

在经验风险的基础上加上 \lambda J(f) ,其中J(f)表示模型f的复杂度,模型越复杂,J(f)越大。要使结构风险最小,就要使经验风险和模型复杂度同时小。求解模型最优解就变成求解结构风险最小值:

image

这就是机器学习的数学原理,各种有监督的机器学习算法基本上都是在各种模型的假设空间上求解结构风险最小值的过程。