在这里,我将机器学习的问题简化为两种统计学习。 因为我认为无监督学习没有明确的定义,所以我不使用最常见的有监督/无监督分类。
1. 生成模型
训练集是一些数据{x_1,x_2,…,x_n},目标是表示这些数据的概率分布p(x)。 例如,给定许多猫的照片,我们的目标是找到这些猫的照片整体的规律,以便获得可以生成看起来像猫的照片的生成功能。 如何画猫。 同样,我们希望使用人工制作的示例来教机器如何讲话,如何写作以及如何撰写文章。
2. 判别模型
训练集是一对数据和标签{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)},其中x_i是数据,y_i是标签,并且 目的是在给定数据的情况下表达标签的条件概率,即p(y | x)。 例如,我们有很多照片x_i,每张照片都有一个标签,告诉我们该照片是猫还是狗。 然后,y_i有两个可能的值,y_i = cat或y_i = dog。 我们希望机器学习如何区分猫和狗,以便当我们有了新图片x 时,机器还可以通过计算p(y = cat | x )和p(y = dog | x * )是猫还是狗。 这些问题也被广泛使用,例如图像识别,语音识别,医学诊断等。
尽管在某些情况下无法同时包含这两种模型,但通常可以在进行较小的更改的情况下将它们包括在内。 在这里,我们将不讨论这些次要问题。
通常,我们的目标是从某个数据集中找到一个好的函数,以表示所需的概率分布p(x)或p(y | x)。 但是,许多问题仍未解决。 有无数种概率分布。 我们应该选择哪些功能? 函数空间是无限维的,应该以哪种方式有限地表示这些函数? 对于两个候选人的概率分布,我们如何判断它们? 如何找到这些功能中最好的。 这些问题将在下面一一回答。 我们将解决机器学习问题的过程概括为以下几部分。
3. 数据集
您要学习的对象。为了避免过度拟合的现象,对于歧视问题,通常将数据集分为训练集(测试集)和测试集(测试集)。模型仅在训练过程中接触训练集,而训练后的测试集将用于测试模型的效果。例如,我们假设高考和模拟考试的问题相似,但并不完全相同,因此在模拟考试训练之后,高考用于测试最终的学习水平。如果存在遗漏问题的问题,只要在不理解的情况下强行记住高考的真实问题,一个人就能在高考中取得良好的成绩。过度拟合将这种现象描述为"死记硬背,而不是类推"。实际上,训练集也应该分成一个验证集,但是为了简化问题,我们这里不再讨论。
4. 模型空间
所有可能的概率分布函数都是一个巨大的集合。在这里找到最佳功能就像在大海捞针。因此,我们经常选择一些候选函数并在其中搜索。这个选择非常重要,因为如果我们选择的这些替代功能不合适,那么即使我们在其中找到了最佳解决方案,也仍然无法很好地解决问题。模型空间的选择几乎决定了机器学习算法的本质。无论是线性回归,各种基于树的方法还是由隐马尔可夫模型表示的图形模型,最大的区别之一在于模型空间的选择。一般来说,机器学习算法是指模型空间和以下将要描述的模型表示。 VC维数理论向我们揭示了每个问题的最佳模型(空间)可以最好地解决问题。太大的模型空间很容易导致过度拟合,反之亦然。 )。当我们谈论深度学习时,我们将回到这个问题。
5. 模型的表示(参数化/体系结构)
这是一个相对模糊的概念,但是我个人认为,它对于解释深度学习与传统机器学习之间的差异具有重要意义。首先,即使我们将模型空间限制在相对较小的程度,我们仍然需要找到一种方法来表示空间中的每个函数,或者需要为该替代函数命名。举个例子,如果我们选择模型空间作为所有二次函数,即S = {p(x)= a_1 x²+ b_1 x + c_1,对于任何a_1,b_1,c_1},我们可以指向通过长度为三的向量(a_1,b_1,c_1)在每个S中使用该函数。但是,S可以写为不同。例如,对于任何a_2,b_2,c_2,d_2},S也可以表示为S = {p(x)=(a_2 * x + b_2)(c_2 x + d_2),这样,我们可以也用向量(a_2,b_2,c_2,d_2)表示每个候选函数。作为一个集合,两个函数空间完全相同,但是作为帮助我们找到最佳函数的指南,不同的表示形式可能会有很大的不同。还有一类非参数模型(非参数)无法简化为这种情况,例如kNN(k最近邻),但它们不是本文的重点。
6. 目标函数(object / loss function)
为了判断哪种函数是好的,我们需要引入一个可量化的标准,通常称为目标函数(object function),也通常称为损失函数(loss function)。 ,因此表示为L。对于每个候选函数p(x),L将给出评估L(p),L(p)越小意味着p(x)越好。通常,L与训练集有关,因为L应该反映p(x)是否包含训练集中包含的信息。对于判别问题,最简单的选择之一可以是训练集上p(y | x)的准确性。精度越高,训练集中包含的信息p(y | x)就越多。但是这里也存在过度拟合的危险,因为训练集的高精度不一定意味着测试集的高精度,所以p(y | x)可能只是记录了样本中的大多数示例。训练集(记忆),仅此而已。除了限制模型空间外,我们还可以向目标函数添加正则化以限制这种情况的发生。简单来说,常规术语代表我们对不同模型的偏好。对于具有相似性能的两个不同模型,我们将根据正则项的大小进行选择。例如,根据奥卡姆(Occam)的剃刀原则,我们可以设计一个常规术语,以便在某种意义上可以选择一个尽可能简单的模型。最后,除了准确性外,常见的目标函数还包括均方估计(L2),均值绝对估计(L1),铰链损失,负对数似然和交叉熵。其中,交叉熵通常可以从KL散度导出。
7. 优化算法
在准备的前四个步骤之后,我们可以严格地将机器学习问题定义为优化问题,即找到最大值/最小值的问题。给定数据集,选择与数据集相关的目标函数L,定义模型空间S,并通过一些参数化将其表示为S = {p_w:对于T中的任何w},其中T通常是多维欧几里得的子集空间,即w是满足某些条件的向量。那么,我们需要解决的优化问题是min_ {w in T} L(p_w),即找到T中的w以使L(p_w)的值最小。
对于不同的机器学习问题,此优化问题可能具有非常不同的属性,最合适的优化算法自然也有所不同。许多机器学习模型都有特定的优化算法,例如支持向量机(support vector machine)SMO算法和混合模型(mixture model)EM算法。另外,影响优化结果的因素是初始化。许多优化算法可以看作是在定义域中沿着特定路径进行的一系列搜索。对于复杂的优化问题,搜索的起点通常非常重要。初始选择方法可以看作是优化算法的一部分。优化算法本身也是一个很好的研究方向。稍后,我们将继续讨论有关优化算法和深度学习之间的相互作用的主题。
以上五个步骤基本上总结了解决机器学习问题或应用机器学习算法的整个过程。 其中,通过优化算法求解的过程就是所谓的训练过程(training)。 训练的时间取决于数据集和模型的大小。 在笔记本上,此过程可能需要几秒钟,而在计算群集上,则可能需要几天。