机器学习概述
一、人工智能与机器学习
1.1 引子:身边的人工智能
- 智能小i
- 门禁人脸识别
- 马拉松机器狗
- DeepSeek
1.2 什么是机器学习?
- 人们可以根据过去的经验来判断明天的天气,吃货们可以从购买经验中挑选一个好瓜,那能不能让计算机帮助人类来实现这个呢?
- 机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据,生成一个算法模型,在面对新的情况中,计算机便能作出有效的判断,这便是机器学习。

1.3 人工智能,机器学习和深度学习之间的关系
-
人工智能(AI) 是一个总的概念,指的是使一切机器具备模拟人类智能的能力,包括感知、推理、学习和决策等。
- 一切让机器来做人工做的事情都属于人工智能。
- AI的目标是让机器模拟人类智能。
-
机器学习(ML) 是人工智能的一个子集,指的是让机器通过数据和经验“学习”并自动改进,而不需要显式编程。
- 让机器像人一样根据已有的数据学习规律。
- 机器学习的目标是通过算法找到数据中的规律或模式。
-
深度学习(DL) 是机器学习的一个分支,它使用神经网络,特别是多层神经网络来处理和分析数据。
- 深度学习通过模拟人脑的结构和功能,能够处理更复杂的任务,特别是在大数据和高计算能力的背景下,展现出巨大的潜力。
二、机器学习的发展历程
机器学习是人工智能研究发展到一定阶段的必然产物。
- 二十世纪五十年代到七十年代初,人工智能研究处于“推理期”,那时人们以为只要能赋予机器逻辑推理能力,机器就能具有智能。
- 随着研究向前发展,人们逐渐认识到,仅具有逻辑推理能力是远远实现不了人工智能的。从二十世纪七十年代中期开始,人工智能研究进入了 “知识期”。E. A. Feigenbaum等人认为,要使机器具有智能,就必须设法使机器拥有知识。在他们的倡导下,在这一时期大量专家系统问世,在很多应用领域取得了大量成果。
- 但是,专家系统面临“知识工程瓶颈”,简单地说,就是由人来把知识总结出来再教给计算机是相当困难的。于是,一些学者想到,如果机器自己能够学习知识该多好!
2.1 早期理论奠基(1950s-1970s)
- 图灵在1950年关于图灵测试的文章中,就曾提到了机器学习的可能。
- 二十世纪五十年代初已有机器学习的相关研究,例如A.Samuel著名的跳棋程序。
- 五十年代中后期,基于神经网络的“连接主义”学习开始出现,代表性工作有F.Rosenblatt的感知机。
- 在六七十年代,基于逻辑表示的“符号主义”学习技术蓬勃发展,代表性工作有P.Winston的“结构学习系统”、R.S.Michalski等人的“基于逻辑的归纳学习系统”、E.B.Hunt等人的“概念学习系统等。
- 以决策理论为基础的学习技术以及强化学习技术等也得到发展,代表性工作有N.J.Nilson的“学习机器”等。
- 二十多年后红极一时的统计学习理论的些奠基性结果也是在这个时期取得的。
2.2 符号主义与连接主义(1980s-1990s)
二十世纪八十年代是机器学习成为一个独立的学科领域、各种机器学习技术百花初绽的时期。
- 1980年,在美国卡耐基梅隆大学举行了第一届机器学习研讨会(IWML)。
- 1983年,Tioga出版社出版了 R. S. Michalskis J. G. Carbonell 和 T. Mitchell 主编的《机器学习:一种人工智能途径》,对当时的机器学习研究工作进行了总结。
- R.S. Michalski等人把机器学习研究划分为“从样例中学习”、“在问题求解和规划中学习”、“通过观察和发现学习”、“从指令 中学习”等种类。二十世纪八十年代以来,被研究最多、应用最广的是“从样例中学习”(广义的归纳学习)。
- 1986年,第一本机器学习专业期刊Machine Learning创刊。
- 1989年,人工智能领域的权威期刊Artifcial Intelligence出版机器学习专辑,刊发了当时一些比较活跃的研究工作。
2.2.1 符号主义学习
在二十世纪八十年代,“从样例中学习”的一大主流是符号主义学习, 其代表包括决策树和基于逻辑的学习。
-
决策树
- 典型的决策树学习以信息为基础,以信息熵的最小化为目标,直接模拟了人类对概念进行判定的树形流程。
- 决策树学习技术由于简单易用,到今天仍是最常用的机器学习技术之一。
-
基于逻辑的学习
- 著名代表是归纳逻辑程序设计(Inductive Logic Programming,简称ILP),可看作机器学习与逻辑程序设计的交叉,它使用一阶逻辑(即谓词逻辑)来进行知识表示,通过修改和扩充逻辑表达式来完成对数据的归纳。
- 由于ILP表示能力太强,直接导致学习过程面临的假设空间太大、复杂度极高,因此,问题规模稍大就难以有效进行学习,九十年代中期后这方面的研究相对陷入低潮。
符号主义学习占据主流地位与整个人工智能领域的发展历程是分不开的。
- 前面说过,人工智能在二十世纪五十到八十年代经历 了“推理期”和“知识期”,在“推理期”人们基于符号知识表示、通过演绎推理技术取得了很大成就,而在“知识期”人们基于符号知识表示、通过获取和利用领域知识来建立专家系统取得了大量成果。因此,在“学习期”的开始, 符号知识表示很自然地受到青睐。
- 事实上,机器学习在二十世纪八十年代正是被视为“解决知识工程瓶颈问题的关键”而走上人工智能主舞台的。
2.2.2 连接主义学习
二十世纪九十年代中期之前,“从样例中学习”的另一主流技术是基于神经网络的连接主义学习。
- 连接主义学习在二十世纪五十年代取得了大发展(感知机),但因为早期的很多人工智能研究者对符号表示有特别偏爱,例如图灵奖得主H.Simon 曾断言人工智能是研究“对智能行为的符号化建模”,所以当时连接主义的研究未被纳入主流人工智能的研究范畴。
- 尤其是连接主义自身也遇到了很大的障碍,正如图灵奖得主 M.Minsky和S.Papert 在1969年指出,(当时的)神经网络只能处理线性分类,甚至对“异或”这么简单的问题都处理不了。
1983 年J.J. Hopfeld 利用神经网络求解“流动推销员问题”这个著名的 NP 难题取得重大进展,使得连接主义重新受到人们关注。1986年,D.E.Rumelhart 等人重新发明了著名的 BP 算法,产生了深远影响。
- 与符号主义学习能产生明确的概念表示不同,连接主义学习产生的是“黑箱”模型,因此从知识获取的角度来看,连接主义学习技术有明显弱点;然而,由于有 BP 这样有效的算法,使得它可以在很多现实问题上发挥作用。事实上,BP一直是被应用得最广泛的机器学习算法之一。
- 连接主义学习的最大局限是其“试错性”;简单地说,其学习过程涉及大量参数,而参数的设置缺乏理论指导,主要靠手工“调参”;夸张一点说,参数调节上失之毫厘,学习结果可能谬以千里。
2.3 统计学习时期(1990s-2000s)
二十世纪九十年代中期,“统计学习” (statistical learning)闪亮登场并迅速占据主流舞台,代表性技术是支持向量机(Support Vector Machine,简称 SVM)以及更一般的“核方法” (kernel methods)。
- 这方面的研究早在二十世纪六七十年代就已开始,统计学习理论在那个时期也已打下了基础,例如V.N.Vapnik在1963年提出了“支持向量”概念,他和 A.J.Chervonenkis在1968年提出VC维,在1974年提出了结构风险最小化原则等。
- 但直到九十年代中期统计学习才开始成为机器学习的主流,一方面是由于有效的支持向量机算法在九十年代初才被提出,其优越性能到九十年代中期在文本分类应用中才得以显现;另一方面,正是在连接主义学习技术的局限性凸显之后,人们才把目光转向了以统计学习理论为直接支撑的统计学习技术。
- 事实上,统计学习与连接主义学习有密切的联系。在支持向量机被普遍接受后,核技巧(kernel trick)被人们用到了机器学习的几乎每一个角落,核方法也逐渐成为机器学习的基本内容之一。
2.4 深度学习热潮(2000s-至今)
二十一世纪初,连接主义学习又卷土重来,掀起了以“深度学习”为名的热潮。
- 所谓深度学习,狭义地说就是“很多层”的神经网络。
- 深度学习虽缺乏严格的理论基础,但它显著降低了机器学习应用者的门槛,为机器学习技术走向工程实践带来了便利。
那么,它为什么此时才热起来呢?有两个基本原因:数据大了、计算能力强了。
由于人类进入了 “大数据时代”,数据储量与计算设备都有了大发展,才使得连接主义学习技术焕发又一春。
- 有趣的是,神经网络在二十世纪八十年代中期走红,与当时 Intelx86系列微处理器与内存条技术的广泛应用所造成的计算能力、数据访存效率比七十年代有显著提高不无关联。深度学习此时的状况,与彼时的神经网络何其相似。
三、机器学习的基础概念
3.1 基本术语
要进行机器学习,先要有数据。
假定我们收集了一批关于西瓜的数据,每对括号内是一个西瓜的记录。例如:
(色泽=青绿;根蒂=蜷缩;敲声=浊响),
(色泽=乌黑;根蒂= 稍蜷;敲声=沉闷),
(色泽=浅白;根蒂=硬挺;敲声=清脆),……
- 所有记录的集合称为一个“数据集”(dataset);
- 其中每条记录是关于一个事件/对象(这里是一个西瓜)的描述,称为一个“示例”(instance)或“样本”(sample);
- 反映事件/对象在某方面的表现或性质的事项,例如“色泽”、“根蒂”、“敲声”,称为“属性”(attribute)或“特征”(feature);
- 属性上的取值,例如“青绿”、“乌黑”,称为“属性值”(attribute value);
- 属性张成的空间称为“属性空间”(attribute space)、“样本空间”(sample space)或“输入空间”。
- 如果我们把“色泽”、“根蒂”、“敲声”作为三个坐标轴,则它们张成一个用于描述西瓜的三维空间,每个西瓜都可在这个空间中找到自己的坐标置。由于空间中的每个点对应一个坐标向量,因此我们也把一个示例称为一个“特征向量”(feature vector)。
- 一个样本的特征数为维数(dimensionality),该西瓜的例子维数为3。
3.2 模型学习
从数据中学得模型的过程称为“学习”(learning)或“训练”(training)。这个过程通过执行某个学习算法来完成。
3.2.1 假设与真实
- 学得模型对应了关于数据的某种潜在的规律,称为“假设”(hypothesis);
- 这种潜在规律自身,则称为“真相”或“真实”(ground-truth),学习过程就是为了找出或逼近真相。
3.2.2 模型与算法
- 模型(Model): 模型是通过学习数据中的模式而构建的数学结构。它接受输入特征,经过一系列计算和转化,输出一个预测结果。
- 算法(Algorithm): 算法是实现机器学习的步骤或规则,它定义了模型如何从数据中学习。算法帮助模型调整其参数以最小化预测误差。
3.2.3 数据集划分
训练集用于训练模型;测试集用于评估模型的最终性能;验证集用于模型调优。
- 训练集(Training Set): 训练集是用于训练机器学习模型的数据集,它包含输入特征和对应的标签(在监督学习中)。
- 模型通过学习训练集中的数据来调整参数,逐步提高预测的准确性。
- 测试集(Test Set): 测试集用于评估训练好的模型的性能。
- 测试集中的数据不参与模型的训练;
- 模型使用它来进行预测,并与真实标签进行比较,帮助我们了解模型在未见过的数据上的表现。
- 验证集(Validation Set): 验证集用于在训练过程中调整模型的超参数(如学习率、正则化参数等)。
- 它通常被用于模型调优,帮助选择最佳的模型参数,避免过拟合。验证集的作用是对模型进行监控和调试。
3.3 任务类型
西瓜的例子中,我们是想计算机通过学习西瓜的特征数据,训练出一个决策模型,来判断一个新的西瓜是否是好瓜。但仅有前面的示例数据是不够的。
- 要建立这样的“预测”(prediction)的模型,我们需获得训练样本的“结果”信息,例如“(色泽=青绿;根蒂=蜷缩:敲声=浊响),好瓜”。
- 这里关于示例结果的信息,例如“好瓜”,称为“标记”(label)。
- 训练数据有标记信息的学习任务为:监督学习(supervised learning);
- 要预测的是离散值,例如“好瓜”、“坏瓜”,此类学习任务称为“分类”(classifcation);
- 若要预测的是连续值,例如西瓜成熟度 0.95、0.37,此类学习任务称为“回归”(regression)。
- 训练数据没有标记信息的学习任务为:无监督学习(unsupervised learning)。
3.4 模型评估
3.4.1 误差与过拟合
模型对样本的实际预测结果与样本的真实值之间的差异称为:误差(error)。
-
在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。
-
在测试集上的误差称为测试误差(test error)。
-
模型在所有新样本上的误差称为泛化误差(generalization error)。
显然,我们希望得到的是在新样本上表现得很好的模型,即泛化误差小的模型。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新样本时才能做出正确的判别。
然而,当学习器把训练集学得“太好”的时候,即把一些训练样本的自身特点当做了普遍特征;同时也有学习能力不足的情况,即训练集的基本特征都没有学习出来。
- 过拟合(overfitting): 学习能力过强,以至于把训练样本所包含的不太一般的特性都学到了,导致模型在训练数据上表现非常好,但在测试数据上表现很差。
- 这通常发生在模型复杂度过高、参数过多,导致模型"记住"了训练数据中的噪声或偶然性,而不具备泛化能力。
- 过拟合的模型无法有效应对新数据。
- 可以通过简化模型、增加训练数据或使用正则化等方法来缓解。
- 欠拟合(underfitting): 学习能太差,训练样本的一般性质尚未学好,导致模型在训练数据上和测试数据上都表现不佳。
- 通常是因为模型过于简单,无法捕捉数据中的复杂模式。
- 欠拟合的模型无法从数据中学习到有用的规律。
- 可以通过增加模型复杂度或使用更复杂的算法来改进。
3.4.2 评估指标
根据任务的不同,机器学习模型的评估指标也不同。以下是常用的一些评估指标:
- 准确率(Accuracy): 分类任务中,正确分类的样本占总样本的比例。
- 精确率(Precision)和召回率(Recall): 主要用于处理不平衡数据集。
- 精确率衡量的是被模型预测为正类的样本中,有多少是真正的正类;
- 召回率衡量的是所有实际正类中,有多少被模型正确识别为正类。
- F1 分数: 精确率与召回率的调和平均数,用于综合考虑模型的表现。
- 均方误差(MSE): 回归任务中,预测值与真实值之间差异的平方的平均值。
四、机器学习的类型划分
4.1 监督学习(Supervised Learning)
-
在监督学习中,训练数据包含已知的标签。模型通过学习输入特征与标签之间的关系来进行预测或分类。
-
监督学习的目标是最小化预测错误,使模型能够在新数据上做出准确的预测。
-
例如: 线性回归、逻辑回归、支持向量机(SVM)、决策树。
4.2 无监督学习(Unsupervised Learning)
- 无监督学习中,训练数据没有标签,模型通过分析输入数据中的结构或模式来进行学习。
- 目标是发现数据的潜在规律,常见的任务包括聚类、降维等。
- 例如: K-means 聚类、主成分分析(PCA)。
4.3 强化学习(Reinforcement Learning)
4.4 总结
- 监督学习:有标签的训练数据,任务是预测或分类。
- 无监督学习:没有标签的训练数据,任务是发现数据中的模式或结构。
- 强化学习:通过与环境互动,智能体根据奖励和惩罚进行学习。
五、机器学习是如何工作的
机器学习(Machine Learning, ML)的核心思想是让计算机能够通过数据学习,并从中推断出规律或模式。简单来说,机器学习的工作流程是让机器通过历史数据自动改进其决策和预测能力。
机器学习的工作流程可以简化为以下几个步骤:
- 收集数据:准备包含特征和标签的数据。
- 数据预处理:对原始数据进行清洗、整理和转化,以确保其适合后续的数据分析。
- 选择模型:根据任务选择合适的机器学习算法。
- 训练模型:让模型通过数据学习模式,最小化误差。
- 评估与验证:通过测试集评估模型性能,并进行优化。
- 部署模型:将训练好的模型应用到实际场景中进行预测。
- 持续改进:随着新数据的产生,模型需要定期更新和优化。
这个过程能够让计算机从经验中自动学习,并在各种任务中做出越来越准确的预测。
5.1.数据收集:数据是学习的基础
机器学习的第一步是数据收集。没有数据,机器学习模型无法进行训练。数据通常包括"输入特征"和"标签":
- 输入特征(Features): 这些是模型用来做预测或分类的信息。例如,在房价预测问题中,输入特征可以是房子的面积、地理位置、卧室数量等。
- 标签(Labels): 标签是我们想要预测或分类的结果,通常是一个数字或类别。例如,在房价预测问题中,标签是房子的价格。
机器学习模型的目标是从数据中找出输入特征与标签之间的关系,基于这些关系做出预测。
5.2 数据预处理:提升数据质量
- 数据清洗:处理缺失值、异常值、错误和重复数据。
- 特征工程:选择有助于模型学习的最相关特征,可能包括创建新特征或转换现有特征。
- 数据标准化/归一化:调整数据的尺度,使其在同一范围内,有助于某些算法的性能。
5.3 模型选择:选择合适的学习算法
机器学习模型(也叫做算法)是帮助计算机学习数据并进行预测的工具。根据数据的性质和任务的不同,常见的机器学习模型包括:
- 监督学习模型: 给定带有标签的数据,模型通过学习输入和标签之间的关系来做预测。例如,线性回归、逻辑回归、支持向量机(SVM) 和 决策树。
- 无监督学习模型: 没有标签的数据,模型通过探索数据中的结构或模式来进行学习。例如,K-means 聚类、主成分分析(PCA)。
- 强化学习模型: 模型在与环境互动的过程中,通过奖励和惩罚来学习最佳行为。例如,Q-learning、深度强化学习(Deep Q-Networks, DQN)。
5.4 训练过程:让模型从数据中学习
在训练阶段,模型通过历史数据"学习"输入和标签之间的关系,通常通过最小化一个损失函数(Loss Function)来优化模型的参数。训练过程可以概括为以下步骤:
- 初始状态: 模型从随机值开始。比如,神经网络的权重是随机初始化的。
- 计算预测: 对于每个输入,模型会做出一个预测。这是通过将输入数据传递给模型,计算得到输出。
- 计算误差(损失): 误差是指模型预测的输出与实际标签之间的差异。例如,对于回归问题,误差可以通过均方误差(MSE)来衡量。
- 优化模型: 通过反向传播(在神经网络中)或梯度下降等优化算法,不断调整模型的参数(如神经网络的权重),使得误差最小化。这个过程就是训练,直到模型能够在训练数据上做出比较准确的预测。
5.5 验证与评估:测试模型的性能
训练过程完成后,我们需要评估模型的性能。为了避免模型过度拟合训练数据,我们将数据分为训练集和测试集,其中:
- 训练集: 用于训练模型的部分数据。
- 测试集: 用于评估模型性能的部分数据,通常不参与训练过程。
常见的评估指标包括:
- 准确率(Accuracy): 分类问题中正确分类的比例。
- 均方误差(MSE): 回归问题中,预测值与真实值差的平方的平均值。
- 精确率(Precision)与召回率(Recall): 用于二分类问题,尤其是类别不平衡时。
- 精确率:分类器预测为正类别的样本中,真正为正类别的比例。
- 召回率:正样本中被分类器正确识别的比例
- F1分数: 精确率与召回率的调和平均数,综合考虑分类器的表现。
5.6 优化与调整:提高模型的精度
如果模型在测试集上的表现不理想,可能需要进一步优化。这通常包括:
- 调整超参数(Hyperparameters): 比如学习率、正则化系数、树的深度等。这些超参数影响模型的学习能力。
- 模型选择与融合: 尝试不同的模型或模型融合(比如集成学习方法,如随机森林、XGBoost 等)来提高精度。
- 数据增强: 扩展训练数据集,比如对图像进行旋转、翻转等操作,帮助模型提高泛化能力。
5.7 模型部署与预测:实际应用
一旦模型在训练和测试数据上表现良好,就可以将模型部署到实际应用中:
- 模型部署: 将训练好的模型嵌入到应用程序、网站、服务器等系统中,供用户使用。
- 实时预测: 在实际环境中,新的数据输入到模型中,模型根据之前学习到的模式进行实时预测或分类。
5.8 持续学习与模型更新
- 机器学习系统通常不是一次性完成的。在实际应用中,随着时间的推移,新的数据会不断产生,因此,模型需要定期更新和再训练,以保持其预测能力。
- 可以通过在线学习、迁移学习等方法来实现。
六、经典机器学习算法
https://www.runoob.com/ml/ml-linear-regression.html
https://www.heywhale.com/mw/project/5e4fa28a0e2b66002c1f8a37
https://www.runoob.com/pytorch/pytorch-linear-regression.html