打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
机器是这样学习的

“学习”是什么意思?

卡内基梅隆大学教授Mitchell在1997年所著的《Machine Learning》中曾提出这样一个定义:“对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。”

我们可以把机器学习算法理解成一种可以让计算机从数据中学习的算法。学习本身并不能被称之为“任务”,学习使计算机具备了完成某种“任务”的能力,比如,人脸检测,文本翻译,异常检测等。这些“任务”一般很难通过确定性程序进行很好的解决,这也是机器学习算法的魅力所在。

为了衡量一个机器学习算法的好坏,我们必须定量的设计一个“性能度量”。根据不同“任务”的需求,我们要设计不同的“性能度量”方法。首先,我们得确定应该去度量什么。有些任务还是比较明显的,比如,对于分类任务可以度量准确率,密度估计任务度量样本概率对数的平均值。但是,有些任务则很难确定应该度量什么,比如,文本翻译任务,我们是应该度量整个序列的准确率还是更细粒度的指标,这就取决于整个应用了。

前文提到的“经验E”并不是指数据集。数据集是“经验”的载体,机器学习算法通过数据集学习到“经验”。但是,这个数据集有时候并不是固定的,比如,强化学习中算法会和环境进行交互。在无监督学习算法中,算法通常要学习数据集的整个概率分布。在监督学习算法中,算法会观察随机向量x及其相关联的向量y,学习到二者之间的联系,然后,从x预测y。

模型容量与过拟合和欠拟合之间的关系

模型容量代表了一个算法拟合各种函数的能力,也就是我们常说的“学习”能力。这个概念非常重要,但遗憾的是目前我们仍然缺少量化模型容量的理论依据。虽然在统计学领域有VC维的概念被提出用于量化模型的学习能力,但是也仅仅适用于特定的模型,比如,二元分类器的容量。VC维代表了该二元分类器能分类的训练样本的最大数目。

但是,我们仍然可以通过一些方法对模型的容量进行控制。一般来说,容量低的模型很难拟合训练集,导致欠拟合,容量高的模型则可能会导致过拟合。

一种方法可以用选择假设空间的方法来控制模型容量。也就是选择代表模型的函数集。那么,具体要怎么做呢?比如,线性回归算法选择线性函数集作为假设空间。

我们可以增加二次项来增加模型的非线性,同时也增加了模型容量。

进一步增加模型容量。

当我们分别用这三个模型去拟合真实二次函数时,会得到下面的效果。

我们还可以给代价函数添加正则化项来控制模型容量。这相当于对函数集中函数的数量进行控制。还是刚才的线性回归算法,我们给它的代价函数加上一个正则化项:

其中

是人为指定的,当

时正则化项失效,其值越大,权重参数越小。我们只使用9次多项式去分别拟合刚才的数据会得到下面的结果。

过大时,表现为欠拟合,当

时表现为过拟合,当

适中时,拟合接近真实水平

影响模型容量的因素还有很多,比如,优化算法的选取。优化算法并不会直影响模型容量,但是会影响算法对模型容量的使用。解释一下,模型规定了算法在优化过程中可以从哪一个函数集中选取最优函数,但是在很多时候,优化算法并不能找到最优函数,而是找到一个使训练误差在合理范围之内的函数。这样会导致模型的使用容量小于实际容量。所以,设计一个优秀的优化算法也是至关重要的。

训练误差和泛化误差之间的差异会随着模型容量的增长而增长,随着训练样本数量的增多而下降。这一结论为机器学习算法更加有效的解决问题提供了理论验证,但是实际中却很难应用。由于模型容量受多种因素的影响进而很难量化,所以这一表述仍然显得过于宽泛。

值得强调的一点是,天下没有免费的午餐,我们很难在深度学习领域找到一个放之四海而皆准的算法。很多时候,我们的算法只会在特定领域表现良好。一个无论多么先进的分类算法和一个将所有样本判定为一类的简单算法,在所有数据样本中的平均表现是一样的。

超参数

以上我们讨论了模型通过优化算法学习到的参数,但是有一种参数则难以优化,或者总是趋近于模型最大容量。我们把这些参数剥离出来,人为指定初值以及值变化的策略,称之为超参数。比如,学习率,权重衰减系数等。

那么超参数如何优化呢?这时候需要引入验证集。我们已经把数据集分为训练集和测试集。测试集用来测试泛化误差,并且需要和训练集做到泾渭分明。所以,不能再打测试集的主意了。我们可以把训练集的80%仍然用于训练,剩下20%当作验证集,用于评估训练中和训练后的泛化误差,进而更新超参数。但是,需要注意的是,验证集会低估泛化误差。在超参数完成优化后,整个模型的泛化误差还是需要测试集来评估。

数理统计

统计领域为机器学习算法目标的实现提供了很多工具。比如,估计、偏差、方差、标准差等。

使用这些工具对于刻画泛化、欠拟合、过拟合等都非常有帮助。

估计分为点估计和函数估计。函数估计可以看成是函数空间里的点估计。所以,线性回归既可以解释为估计参数w的点估计,又可以解释为估计从x到y的函数映射f的函数估计。

我们假设真实参数是固定且未知的,估计值是数据的函数。数据是随机采集的,所以估计值也是随机的。但是,一个良好的估计会输出一个接近真实值的估计值。

有估计就会有偏差,偏差被定义为:

为真实值,

为估计的期望。如果偏差等于0,那么成为无偏,也就是估计的期望值等于真实值。如果

,那么估计量被称为渐进无偏,也就是估计的期望的无穷极限值等于真实值。无偏估计并不意味着就是最好的,很多时候我们会使用具有重要性质的有偏估计。

方差用来衡量估计量期望的变化程度。方差的平方根称为标准差。在机器学习算法中,我们常用测试集样本误差均值标准差来衡量一个算法的优劣。中心极限定理告诉我们,均值接近高斯分布。这样我们就可以得到一个置信区间。

如果算法A的区间上限小于算法B的区间下限,那么我们就说A算法要优于B算法。

如果同时考虑偏差和方差,我们应该选方差更大的还是偏差更大的算法呢?这时候就引入一个概念:均方误差

可以看到均方误差同时包含了方差和偏差。

最大似然估计

上文多次提到估计,无论是点估计还是函数估计,是机器学习中非常重要的一个步骤。但是,我们希望每次估计并不是随便猜测,而是可以在某个准则的指导下做出一个比较好的估计。最大似然估计是最常用的准则。

假设真实的数据生成分布

生成了由m个样本组成的数据集。

将X中的样本数据映射成一个实数,以此来估计真实概率分布

就是我们要估计的参数。显然,

此时的变成了关于

的函数。由最大似然估计可得:

转化成和的形式,便于计算:

除以m,得到和训练数据经验分布相关的期望:

到这里我们可以看出来,最大似然估计是在最小化训练集上的经验分布和模型分布之间的差异,而这个差异是可以通过KL散度来度量的:

当我们最小化KL散度时,我们只需要最小化:

所以最大似然估计和最小KL散度本质上是一致的。

随机梯度下降

这是几乎所有的深度学习算法都会用到的一个非常重要的优化算法。梯度下降算法的计算开销和数据集规模的增长呈正相关。但是随机梯度下降算法则不同,它的核心是:梯度是期望。所以,可以用小规模的样本近似估计。梯度的估计可以表示为:

使用的是来自小批量的样本,然后更新参数:

梯度下降的一个最主要的特点是,可能在所有的数据集采样完成之前就收敛到了最优解。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
机器学习(2)之过拟合与欠拟合
【机器学习概述】第二篇、模型评估和验证
了解点机器学习
Stanford机器学习
面试官最爱用的统计学、数据科学、机器学习面试题答案
机器学习入门概览
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服