Jean's Blog

一个专注软件测试开发技术的个人博客

0%

初识机器学习

什么是机器学习

机器学习之父 Arthur Samuel 对机器学习的定义是:在没有明确设置的情况下,使计算机具有学习能力的研究领域。国际机器学习大会的创始人之一 Tom Mitchell 对机器学习的定义是:计算机程序从经验 E 中学习,解决某一任务 T,进行某一性能度量 P,通过 P 测定在 T 上的表现因经验 E 而提高。

上面的话,看似难以理解,看下面一个实际场景来理解什么是机器学习

周日,你约了小李和老王到你家里来打牌,小李先来了,老王没有来。这时,你要打电话给老王叫老王过来,小李说:”别打电话了,昨晚老王喜欢的球队皇马输球了,他的项目在上个礼拜没成功上线,儿子考试不及格,他肯定没有心情来。“

这种情况,老王会来吗?一般情况下,我们都会觉得老王大概率是不会来了。

老王不回来,我们是怎么得出结论来了的呢?

实际上我们运用了“推理”。我们人类的大脑做这样的推理似乎是自然而然的事儿。但是,对于计算机来说,如果它也像小李那样有老王的“历史数据”,知道他看皇马,知道他的项目情况,知道他儿子的成绩,那计算机能推出这个结论吗?对于长期以来只能按照人类预设规则解决问题的机器来说,这可并不是件容易的事。

机器学习的厉害之处就在于,它能利用计算机的运算能力,从大量的数据中发现一个“函数”或“模型”,并通过它来模拟现实世界事物间的关系,从而实现预测、判断等目的。这个过程的关键是建立一个合适的模型,并能主动地根据这个模型进行“推理”,而这个建模的过程就是机器的“学习”过程。

传统程序和机器学习的区别

  • 传统程序是程序员把已知的规则定义好后输入给机器
  • 机器学习则从已知数据中,通过不断试错、自我优化、自身总结,归纳出规则来

image-20231115150743782

这张图中展示了机器学习的本质特征,就是从数据中发现规则

虽然说我们希望机器最终能主动地去预测,但在此之前,机器具体选什么模型、如何训练、怎么调参,我们人类还是要在这个过程中给机器很多指导的。

机器是怎样建立新的模型呢?以上面老王不会来的场景为例,我们站在函数的角度想一想发生了什么?

要预测老王不会来,我们就要建立一个”预测老王不会来“的函数,而”皇马输球“、”项目情况“,”儿子成绩“都是输入到这个函数的自变量,我们设为x1、x2、x3。这些自变量每一个发生变化,都会影响到函数的结果,也就是因变量y。

image-20231115151225562

在机器学习中,这些自变量,就叫做特征(feature),因变量 y 叫做标签(label)。而一批历史特征和一批历史标签的集合,就是机器学习的数据集。

理解了这些,我们就可以更加“精准”地定义机器是怎么“学习”的了,就是在已知数据集的基础上,通过反复的计算,选择最贴切的函数去描述数据集中自变量 x1, x2, x3, …, xn 和因变量 y 之间的因果关系。这个过程,就叫做机器学习的训练,也叫拟合

基于这一点,我们可以说:传统程序是程序员来定义函数,而在机器学习中是机器训练出函数

最初用来训练的数据集,就是训练数据集(training dataset)。当机器通过训练找到了一个函数,我们还需要验证和评估,也就是说,这时候我们要给机器另一批同类数据特征,看机器能不能用这个函数推出这批数据的标签。这一过程就是在验证模型是否能够被推广、泛化,而此时我们用到的数据集,就叫验证数据集(validation dataset)。

简单来说,在验证、评估的过程里,我们就是要验证这个函数到底好不好。如果这个函数通过了评估,那就可以在测试数据集(test dataset)上做最终的测试;如果通过不了,就需要继续找新的模型。

上面已对机器学习有一定的了解,可以看到,标签似乎对于机器学习模型有很重要的指导性意义,因为机器必须根据已有的数据来找到特征和标签之间的关系。

可能会有疑问,机器在训练过程中一定要有标签么?其实,机器学习不一定要有标签,具体我们可以分三种情况来看:

  • 训练数据集全部有标签,叫监督学习(supervised learning);
  • 训练数据集没有标签,叫做无监督学习(unsupervised learning);
  • 在训练数据集中,有的数据有标签,有的数据没有标签,我们叫做半监督学习(semi-supervised learning)。

下面介绍主流的机器学习算法,具体介绍标签的意义

主流的机器学习算法

机器学习中各类算法分类

image-20231115151918076

监督学习

在监督学习中,需要重点关注的是监督学习问题的分类,明确要解决的问题是机器学习项目的第一步,也是非常重要的一步。如果我们不了解问题的类型,就无法选择合适的算法。

根据标签的特点,监督学习可以被分为两类:回归问题分类问题

回归问题

回归问题的标签是连续数值

比如,如果我们天天给老王的情绪从 1 到 100 打分,那要预测老王今天的情绪,这就是个回归问题。再比如说预测房价,股市,天气情况,这都是回归类型的问题。

分类问题

分类问题的标签是离散性数值

比如,预测老王今天会不会来打牌,这就是个分类问题。而我们平时看到的鉴别高欺诈风险的客户、辅助诊断来访者是否患病、人脸识别等等,这些都属于分类问题的应用。

下面一张图来描绘一下回归和分类的区别

image-20231115152616560

简单了解下无监督学习和半监督学习

  • 无监督学习:就是为没有标签的数据而建的模型,目前它大多只应用在聚类、降维等有限的场景中,往往是作为数据预处理的一个子步骤显显身手。
  • 半监督学习:就是使用大量无标签数据和一部分有标签数据建模。这往往是因为获取数据标签的难度很高。半监督学习的原理、功能和流程与监督学习是很相似的,区别主要在于多了“伪标签的生成”环节,也就是给无标签的数据人工“贴标签”。

强化学习

化学习研究的目标是,智能体(agent)如何基于环境而做出行动反应,以取得最大化的累积奖励。这里的“智能体”,其实我们可以把它理解成一种机器学习模型。

强化学习和监督学习的差异在于:监督学习是从数据中学习,而强化学习是从环境给它的奖惩中学习。

强化学习智能体在调整策略的时候需要思路比较长远,它不一定每次都明确地选择最优动作,而是要在探索(未知领域)和利用(当前知识)之间找到平衡。它反复试错、不断收集反馈,收集可供自己学习的信号,每经过一个训练周期,都变得比原来强一点,经过亿万次的训练能变得非常强大。

强化学习对数学基础的要求是比较高的,对于初学者还是有较大难度,目前了解即可。

从监督学习,到无监督学习,到半监督学习再到强化学习,这就形成了一个完整的闭环。

深度学习

深度学习是一种使用深层神经网络算法的机器学习模型,也就是一种算法。这个算法可以应用在监督学习、半监督学习和无监督学习里,也可以应用在强化学习中。

虽说深度学习中用的算法叫神经网络算法,但是这个“神经网络”(Artificial Neural Network, ANN)和人脑中的神经网络没啥大的关联,它是数据结构和算法形成的机器学习模型。

我们知道,长期以来,图形图像、自然语言和文本的处理是计算机行业的难题,因为这类信息的数据集,并不是结构化的,需要人工根据信息的类型来选择特征进行提取,这样对于特征的提取是有限的,就拿图像来说,只能提取出一些简单的滤波器。

而深层神经网络的厉害之处在于,它能对非结构的数据集进行自动的复杂特征提取,完全不需要人工干预。也就是说,深度学习让这个曾经的“难题”一下子变得非常容易。

总结

上面介绍了什么是机器学习,那么我们用一句话总结:机器学习是一种从数据生成规则、发现模型,来帮助我们预测、判断、分组和解决问题的技术。

机器和传统程序最大的不同是:机器学习不是程序员直接编写函数的技术,是让机器通过”训练“得出函数,而学习机器学习的项目,就是要选定一个算法,然后用数据训练机器,找到一族函数中最适合的那一个,形成模型