按照统计机器学习的观点,任何一个机器学习方法都是由模型(Model)、策略(Strategy)和算法(Algorithm)三个要素构成的。具体可理解为机器学习模型在一定的优化策略下,使用相应求解算法来达到最优目标的过程。
机器学习的第一个要素是模型。机器学习中的模型就是要学习的决策函数或者条件概率分布,一般用假设空间(Hypothesis Space) F 来描述所有可能的决策函数或条件概率分布。
当模型是一个决策函数时,如线性模型的线性决策函数, F 可以表示为若干决策函数的集合, F ={ f | Y = f ( X )},其中 X 和 Y 为定义在输入空间和输出空间中的变量。
当模型是一个条件概率分布时,如决策树是定义在特征空间和类空间中的条件概率分布,F可以表示为条件概率分布的集合, F ={ P | P = Y | X },其中 X 和 Y 为定义在输入空间和输出空间中的随机变量。
机器学习的第二个要素是策略。简单来说,就是在假设空间的众多模型中,机器学习需要按照什么标准选择最优模型。对于给定模型,模型输出 f ( X )和真实输出 Y 之间的误差可以用一个损失函数(Loss Function),也就是 L ( Y , F ( X ))来度量。
不同的机器学习任务都有对应的损失函数,回归任务一般使用均方误差,分类任务一般使用对数损失函数或者交叉熵损失函数等。
机器学习的最后一个要素是算法。这里的算法有别于所谓的“机器学习算法”,在没有特别说明的情况下,“机器学习算法”实际上指的是模型。作为机器学习三要素之一的算法,指的是学习模型的具体优化方法。当机器学习的模型和损失函数确定时,机器学习就可以具体地形式化为一个最优化问题,可以通过常用的优化算法,例如随机梯度下降法(Stochastic Gradient Descent,SGD)、牛顿法、拟牛顿法等,进行模型参数的优化求解。
当一个机器学习问题的模型、策略和算法都确定了,相应的机器学习方法也就确定了,因而这三者也叫作“机器学习三要素”。
机器学习的目的在于训练模型,使其不仅能够对已知数据有很好的预测效果。而且能对未知数据有较好的预测能力。当模型对已知数据预测效果很好,但对未知数据预测效果很差的时候,就引出了机器学习的核心问题之一——过拟合(Over-Fitting)。
先来看一下监督机器学习的核心哲学。总的来说,所有监督机器学习都可以用如下公式来概括:
上面的公式就是监督机器学习中的损失函数计算公式,其中,第一项为针对训练集的经验误差项,即我们常说的训练误差;第二项为正则化项,也称为惩罚项,用于对模型复杂度进行约束和惩罚。
因此,所有监督机器学习的核心任务就是在正则化参数的同时最小化经验误差。多么简约的哲学啊!各类机器学习模型的差别无非就是变着方式改变经验误差项,即我们常说的损失函数。不信你看:当第一项是平方损失(Square Loss)时,机器学习模型便是线性回归;当第一项变成指数损失(Exponential Loss)时,模型则是著名的AdaBoost(一种集成学习树模型算法);而当损失函数为合页损失(Hinge Loss)时,便是大名鼎鼎的SVM了!
综上所述,第一项“经验误差项”很重要,它能变着法儿改变模型形式,我们在训练模型时要最大限度地把它变小。但在很多时候,决定机器学习模型质量的关键不是第一项,而是第二项“正则化项”。正则化项通过对模型参数施加约束和惩罚,让模型时时刻刻保持对过拟合的警惕。
我们再回到前面提到的监督机器学习的核心任务:正则化参数的同时最小化经验误差。通俗来讲,就是训练集误差小,测试集误差也小,模型有着较好的泛化能力;或者模型偏差小,方差也小。
但是很多时候模型的训练并不尽如人意。当你在机器学习领域摸爬滚打已久时,想必更能体会到模型训练的艰辛,要想训练集和测试集的性能表现高度一致实在太难了。很多时候,我们已把经验损失(即训练误差)降到极低,但模型一到测试集上,瞬间“天崩地裂”,表现得一塌糊涂。这种情况便是下面要谈的主题——过拟合。
所谓过拟合,指在机器学习模型训练的过程中,模型对训练数据学习过度,将数据中包含的噪声和误差也学习了,使得模型在训练集上表现很好,而在测试集上表现很差的一种现象。机器学习简单而言就是归纳学习数据中的普遍规律,这里一定得是普遍规律,像这种将数据中的噪声也一起学习了的,归纳出来的便不是普遍规律,而是过拟合。
欠拟合、正常拟合与过拟合的表现形式如图1-1所示。
鉴于过拟合十分普遍并且关乎模型的质量,因此在机器学习实践中,与过拟合长期坚持不懈地斗争是机器学习的核心。而机器学习的一些其他问题,诸如特征工程、扩大训练集数量、算法设计和超参数调优等,都是为防止过拟合这个核心问题而服务的。
图1-1 欠拟合、正常拟合、过拟合的表现形式