====== 机器学习 ====== **机器学习(Machine Learning,ML)** 是 [[Artificial Intelligence]] 的一个重要分支,研究如何让计算机通过**数据和经验自动学习规律,并利用学习到的规律对新的数据进行预测、决策或生成**,而不是完全依赖人工编写的明确规则。 机器学习的核心思想可以概括为: **数据 → 学习规律 → 模型 → 泛化** 与传统的程序设计不同,传统程序通常是: **规则 + 数据 → 结果** 而机器学习通常是: **数据 + 结果(或其他训练信号)→ 学习规则 → 模型** 然后: **模型 + 新数据 → 预测结果** ===== 历史 ===== 机器学习并不存在一个唯一的发明者,其思想来自 [[Artificial Intelligence]]、统计学、模式识别、计算机科学和控制论等多个领域。 早期机器学习研究可以追溯到 20 世纪 50 年代。 **1950 年** [[Alan Turing]] 在论文 *Computing Machinery and Intelligence* 中讨论机器智能问题,为后来人工智能研究提供了重要思想基础。 **1952 年** [[Arthur Samuel]] 开发了著名的跳棋程序,并在之后的研究中使用“Machine Learning”描述让程序通过经验改进表现的方法。 **1957 年** [[Frank Rosenblatt]] 提出 [[Perceptron]],成为早期重要的学习算法之一。 **1980—1990 年代** 统计学习逐渐发展,[[Decision Tree]]、[[SVM]]、[[Bayesian Network]] 等方法得到广泛研究。 **1990—2000 年代** 机器学习逐渐从人工智能中的一个研究方向发展成为独立的重要技术领域。 **2010 年代以后** 随着 [[GPU]]、大规模数据和神经网络技术的发展,[[Deep Learning]] 快速发展,并在计算机视觉、语音识别、自然语言处理等领域取得突破。 **2020 年代** 以 [[Transformer]] 为基础的 [[Foundation Model]] 和 [[LLM]] 成为机器学习研究的重要方向,机器学习开始进一步从“预测模型”扩展到能够进行生成、推理和工具使用的 [[AI Agent]]。 ===== 机器学习的基本问题 ===== 机器学习的核心问题可以描述为: 给定有限的数据: `D = {(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)}` 寻找一个模型: `f(x) ≈ y` 使它不仅能够解释训练数据,而且能够对没有见过的新数据做出正确预测。 因此,机器学习最重要的目标不是单纯的“记住训练数据”,而是: **[[Generalization]](泛化)** ===== 机器学习的基本流程 ===== 一个典型的机器学习过程可以表示为: 数据 → 数据预处理 → 特征 / 表示 → 模型 → 预测 → [[Loss Function]] → [[Optimization]] → 更新参数 → 验证 → 泛化 其中: **数据** 决定模型能够观察到什么。 **模型** 定义能够表示哪些规律。 **损失函数** 衡量模型预测与目标之间的差异。 **优化算法** 寻找能够降低损失的模型参数。 **泛化** 检验模型能否将学习到的规律应用于未知数据。 ===== 参数与训练 ===== 现代机器学习模型通常可以表示为: `f(x; θ)` 其中: * `x` 是输入数据。 * `θ` 是模型参数。 * `f` 是模型。 训练的目标通常是寻找一组参数 `θ`,使模型在训练数据上的损失尽可能小: `θ* = arg minθ L(f(x; θ), y)` 其中 `L` 是损失函数。 例如神经网络通常使用 [[Gradient Descent]] 及其变体优化参数。 训练过程可以简单理解为: 初始化参数 → 输入数据 → 前向计算 → 计算损失 → [[Backpropagation]] → 更新参数 → 重复 ===== 机器学习的主要范式 ===== 机器学习通常按照训练信号和学习方式划分为几个主要范式。 ==== 监督学习 ==== **监督学习(Supervised Learning)** 使用带有目标标签的数据进行学习。 训练数据: `(x, y)` 模型学习: `x → y` 主要任务包括: * [[Classification]] * [[Regression]] 例如: 图片 → 猫 / 狗 邮件 → 垃圾邮件 / 正常邮件 房屋特征 → 房价 ===== 无监督学习 ===== **无监督学习(Unsupervised Learning)** 使用没有明确标签的数据寻找数据内部的结构。 训练数据: `x₁, x₂, ..., xₙ` 模型试图发现: * 数据分布 * 聚类结构 * 潜在表示 * 数据之间的关系 典型方法包括: * [[Clustering]] * [[PCA]] * [[Representation Learning]] ===== 半监督学习 ===== **半监督学习(Semi-Supervised Learning)** 同时利用少量带标签数据和大量无标签数据。 例如: 少量: `(x, y)` 大量: `x` 这种方法适用于标注成本很高,但原始数据容易获取的场景。 ===== 自监督学习 ===== **自监督学习(Self-Supervised Learning)** 从数据本身构造训练信号,而不依赖人工逐个标注标签。 例如 [[LLM]] 的预训练: 输入: `今天天气非常` 目标: `好` 模型通过预测被隐藏或延后的信息学习数据中的结构。 因此: **数据本身 → 自动构造监督信号 → 学习表示** 现代 [[Foundation Model]] 的大规模预训练大量使用自监督学习。 ===== 强化学习 ===== **[[Reinforcement Learning]](强化学习)** 与监督学习不同。 Agent 与环境进行交互: 状态 → 动作 → 奖励 → 新状态 模型通过奖励信号学习如何选择动作,以最大化长期累积收益。 强化学习的重要概念包括: * [[Agent]] * [[Environment]] * [[State]] * [[Action]] * [[Reward]] * [[Policy]] * [[Value Function]] * [[Q-Learning]] * [[Experience Replay]] ===== 归纳学习 ===== 机器学习还可以从**归纳学习([[Inductive Learning]])**的角度理解。 模型从有限的具体样本中学习一般规律,并将规律应用到新的未知样本。 例如: 训练数据 → 学习规律 → 未知数据 但有限训练数据通常不能唯一确定真实规律,因此模型必须具有某种: **[[Inductive Bias]](归纳偏置)** 例如: CNN 偏向于利用图像的局部空间结构。 Transformer 更灵活地学习不同位置之间的关系。 因此: **机器学习 = 从有限经验中学习可以泛化的规律。** ===== 模型 ===== 机器学习中的“模型”是对数据规律的一种数学或计算表示。 早期机器学习模型包括: * [[Linear Regression]] * [[Logistic Regression]] * [[Decision Tree]] * [[Random Forest]] * [[SVM]] * [[KNN]] * [[Naive Bayes]] 现代机器学习还包括: * [[Neural Network]] * [[CNN]] * [[RNN]] * [[Transformer]] * [[Diffusion Model]] 不同模型具有不同的: **表达能力、归纳偏置、计算成本和泛化特性。** ===== 特征与表示 ===== 传统机器学习通常高度依赖**特征工程(Feature Engineering)**。 例如预测房价: 原始数据 → 人工选择面积、房间数量、地段等特征 → 机器学习模型 而 [[Deep Learning]] 更强调**表示学习(Representation Learning)**: 原始数据 → 神经网络 → 自动学习表示 → 预测 因此,深度学习的重要变化之一就是: **从人工设计特征转向自动学习特征表示。** ===== 训练集、验证集与测试集 ===== 机器学习通常将数据划分为: **训练集(Training Set)** 用于训练模型。 **验证集(Validation Set)** 用于选择模型、超参数和训练策略。 **测试集(Test Set)** 用于最终评估模型的泛化能力。 基本流程: 训练集 → 学习参数 验证集 → 选择模型 / 超参数 测试集 → 最终评估 测试集原则上不应该参与模型选择,否则可能造成对测试集的过拟合。 ===== 过拟合与欠拟合 ===== **过拟合(Overfitting)** 模型过度适应训练数据,训练集表现很好,但新数据表现较差。 **欠拟合(Underfitting)** 模型表达能力不足,甚至无法很好地拟合训练数据。 因此机器学习需要在: **模型复杂度、数据规模、归纳偏置和泛化能力** 之间取得平衡。 ===== 参数与超参数 ===== **参数(Parameter)** 通过训练数据学习得到。 例如神经网络中的权重和偏置。 **超参数(Hyperparameter)** 通常由训练者在训练前或训练过程中设置,而不是直接通过标准训练过程学习。 例如: * Learning Rate * Batch Size * Epoch * Weight Decay * Model Depth 参数: **数据 → 优化 → 参数** 超参数: **人工 / 自动搜索 → 决定训练过程** ===== 机器学习与统计学 ===== 机器学习与 [[Statistics]] 有非常深的联系。 二者都研究: **如何从数据中获得可靠的信息。** 统计学传统上更加关注: * 数据分布 * 参数估计 * 假设检验 * 因果关系 * 不确定性 机器学习则通常更加关注: * 预测 * 泛化 * 算法 * 模型性能 * 大规模计算 二者并不是完全割裂的领域。 现代机器学习理论大量使用统计学、概率论和优化理论。 ===== 机器学习与深度学习 ===== [[Deep Learning]] 是机器学习的一个子领域。 可以表示为: [[Artificial Intelligence]] └── [[Machine Learning]]   └── [[Deep Learning]] 深度学习主要使用具有多层结构的 [[Neural Network]]。 因此: **机器学习 ⊃ 深度学习** 并不是所有机器学习都是深度学习。 例如: Decision Tree、SVM、Random Forest 都属于机器学习,但通常不被称为深度学习。 ===== 机器学习与人工智能 ===== [[Artificial Intelligence]] 是更大的概念。 人工智能研究如何使机器表现出通常需要人类智能的能力。 其中可以包括: * 搜索 * 规划 * 推理 * [[Knowledge Representation]] * 机器学习 * [[Computer Vision]] * [[Natural Language Processing]] * [[Robotics]] 因此: **机器学习是实现人工智能的重要技术路线,但人工智能并不等于机器学习。** ===== 机器学习与大模型 ===== 现代 [[LLM]] 可以看作机器学习发展的结果。 其基本链条可以理解为: 机器学习 ↓ 神经网络 ↓ 深度学习 ↓ Transformer ↓ Foundation Model ↓ LLM ↓ AI Agent 大模型并没有脱离机器学习的基本框架。 其核心仍然是: **数据 + 模型 + 损失函数 + 优化 + 泛化** 变化主要在于: **数据规模、模型规模、计算规模以及训练目标和使用方式不断扩大。** ===== 机器学习的主要研究问题 ===== 机器学习领域长期关注以下问题: **如何学习?** → [[Optimization]] **学习什么?** → [[Representation Learning]] **为什么能够泛化?** → [[Generalization]] **需要多少数据?** → [[Learning Theory]] **模型应该具有怎样的结构?** → [[Inductive Bias]] **如何提高模型能力?** → [[Scaling]] **如何让模型处理复杂任务?** → [[Reinforcement Learning]]、[[Reasoning]]、[[AI Agent]] ===== 机器学习的本质 ===== 从最抽象的角度来看,机器学习可以理解为: **通过经验改变模型,使模型能够在未来面对类似情况时做出更好的预测或决策。** 传统程序: **人类编写规律 → 计算机执行规律** 机器学习: **人类提供数据和学习机制 → 计算机从数据中寻找规律** 因此机器学习最核心的三个关键词是: **学习(Learning)** 从数据或环境中获得规律。 **表示(Representation)** 用模型和参数表示这些规律。 **泛化(Generalization)** 将学习到的规律应用于未见过的数据。 ===== 相关条目 ===== * [[Artificial Intelligence]] * [[Inductive Learning]] * [[Inductive Bias]] * [[Deep Learning]] * [[Supervised Learning]] * [[Self-Supervised Learning]] * [[Unsupervised Learning]] * [[Reinforcement Learning]] * [[Generalization]] * [[Optimization]] * [[Neural Network]] * [[Transformer]] ===== 参考资料 ===== * Arthur Samuel, 1959, *Some Studies in Machine Learning Using the Game of Checkers* * Tom M. Mitchell, 1997, *Machine Learning* * Vladimir N. Vapnik, 1998, *Statistical Learning Theory* * Christopher M. Bishop, 2006, *Pattern Recognition and Machine Learning* * Shai Shalev-Shwartz and Shai Ben-David, 2014, *Understanding Machine Learning: From Theory to Algorithms* * Ian Goodfellow, Yoshua Bengio and Aaron Courville, 2016, *Deep Learning*