机器学习算法的构成要素

作者: 林杰Jim | 来源:发表于2019-12-18 23:21 被阅读0次

    机器学习的定义

    机器学习是什么?从不同的角度出发能引出不同的定义。简单地说,用人工智能领域的先驱Arthur Samuel的话来说:机器学习赋予了计算机程序不需要详尽的编程就能学习到规则的能力。

    原文:“It gives computers the ability to learn without being explicitly programmed.” (Arthur Samuel, 1959).

    机器学习又经过了近60年的研究,这句简单的定义显然不能解释清楚这个庞大且复杂的学科。1997年,计算机科学家Tom Mitchell 在他的书中给予了更加现代的定义:计算机程序能从任务T 中学习到经验E,并根据任务性能表现P 来不断提升经验E。

    原文: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.” (Tom Mitchell, 1997)

    这个定义细化了机器学习算法所做的事情,但对设计机器学习算法的工程师来说仍然不足。机器学习也可以看作是一个构造算法的过程:通过探索训练数据集来构造统计模型,并试图找到一个最优的函数用于映射从输入到输出的过程。

    \mathcal{A} : S \in (X \times Y)^n \rightarrow h_s \in H

    这是使用数学语言对机器学习的定义,后面的部分会对这个定义进行进一步说明,并提取出机器学习算法的构成与本质。

    机器学习算法的五个要素

    上述的数学式子定义了机器学习算法与其实现过程,可以被归纳成五个要素,分别是:

    1. 输入训练数据集 S \in \{ X^n, (Y^n) \}
    2. 输入假设函数集 H \in \{h_1, ... h_n\}
    3. 待优化目标函数 O = \mathcal{cost}+ \mathcal{constrains}
    4. 优化方法 \mathcal{A} : S \rightarrow H
    5. 输出假设方程 h_s = arg\min\limits_{h} O
    5 elements of machine learning algorithm

    在这定义的五个元素中,最重要的是目标函数O 和优化方法M, 也是机器学习理论的主要研究要点。下面我们分别解释每个要素的定义和意义,以及其在机器学习过程中扮演的角色。

    • 训练集S 是所有训练样本的集合。有监督学习包含标签Y, 无监督学习不包含Y

    • 假设函数集H 定义了模型的灵活度。理论上H 越大,获得最优解的概率也就越大,但现实情况是H 的复杂度受限于训练集S 的大小。这也就是了深度学习的有效性,同时说明简单的任务用复杂的模型是不够高效的。

    • 目标函数 O 定义了机器学习的目标,具体根据实际任务的特点来设计。这个目标要用数学表达式表达,一般表示为代价函数cost 加上优化过程的约束条件constrains 。注意losscost 的区别,cost = \frac{1}{N} \sum \mathcal{loss}。代价函数cost 是所有训练数据的平均损失,损失函数loss 是评价假设方程h 表现好坏的可量化指标。损失函数loss 越小,代表模型对训练数据的拟合程度越好。有监督学习算法的损失函数可以表示为 loss = dist(Y, h(X)),其中dist() 为模型预测的结果h(X) 与其实际结果Y 差异程度。

    • 优化方法 M 是机器学习算法的核心。定义好目标函数O 后,剩下的就是数学上的优化问题,即最大化或者最小化目标函数。如梯度下降法(Gradient Descent Method)便是最流行的优化算法之一,它本质上是一个凸函数的优化问题。优化的目标就是找到目标函数的极小点或最低点。优化方法需要保证的是每k 轮对h_k 的更新过后,O_{k} \le O_{k-1}。这样在不断的迭代过程中,h 逐渐接近最优解h_s

    • 假设方程h_s 是在训练集上最小化目标函数的函数模型。在训练的增益小于设定的值时终止训练并输出h_s

    总结一下,以上的五个元素是机器学习算法的基本构成,是我们在设计机器学习算法时需要考虑清楚的。

    首先,收集所需的训练数据S,再根据数据的体量和特点定义假设函数集H 的复杂度。接着,思考衡量任务表现优劣的可量化指标,并根据希望达成的任务目标设计目标函数O。最后,使用优化方法M 来最小化目标函数O,在这过程中当算法达到预设的要求时输出训练模型h_s

    反思

    现实应用中,几乎不可能执行一遍上述步骤就能找到最好的结果。最多只能说明:该模型在我们定义的训练目标与假设空间里,达到了在训练集上的最好表现。还值得我考虑的有:

    • 训练数据是否具有代表性?
    • 模型复杂度是否合适?
    • 目标函数对任务优化目标的表达是否正确?
    • 优化方法中的超参数(hyperparameters)是否有更好的设定?
    • ......

    这些问题也是机器学习需要不断试错、反思、更新与迭代的原因。最根本的原因也许在于:

    人类对任务表现好坏的评价标准与机器所追求数学上的最优不尽相同。(Jim, 2019)

    引用

    文章是基于Dr. Liu Advanced Machine Learning 课程的一些总结与反思。

    An introduction to Machine Learning
    https://www.geeksforgeeks.org/introduction-machine-learning/
    Common Loss functions in machine learning
    https://towardsdatascience.com/common-loss-functions-in-machine-learning-46af0ffc4d23
    Differences between loss, cost, objective functions
    https://stats.stackexchange.com/questions/179026/objective-function-cost-function-loss-function-are-they-the-same-thing

    相关文章

      网友评论

        本文标题:机器学习算法的构成要素

        本文链接:https://www.haomeiwen.com/subject/beypnctx.html