查看全课大纲(第 15 / 82 节)
  1. 1.函数与数据泛化
  2. 2.向量:从几何直觉到高维空间
  3. 3.矩阵与张量
  4. 4.特征值与特征向量:矩阵变换的不动方向
  5. 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
  6. 6.概率与统计:机器学习的数学基础
  7. 7.独立性与随机变量:贝叶斯公式与二项分布
  8. 8.期望、方差与协方差:随机变量的数字画像
  9. 9.联合概率:当一条轴不够用的时候
  10. 10.概率分布(一):从伯努利到伽马函数
  11. 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
  12. 12.机器学习的模型:找输入与输出的关系
  13. 13.机器学习的应用
  14. 14.过拟合
  15. 15.机器学习的分类
  16. 16.有监督学习:从房价预测说起
  17. 17.损失函数
  18. 18.梯度下降(上):更新规则与学习速率
  19. 19.梯度下降(2)
  20. 20.牛顿方法
  21. 21.KNN简介
  22. 22.距离测算
  23. 23.朴素贝叶斯
  24. 24.朴素贝叶斯的实际应用
  25. 25.信息熵:决策树构建的度量基础
  26. 26.信息增益与决策树的构建
  27. 27.ID3算法
  28. 28.决策树节点的划分
  29. 29.CART树
  30. 30.Bagging
  31. 31.Boosting:自适应提升算法
  32. 32.Gradient Boosting
  33. 33.线性模型:回归与分类的同一副骨架
  34. 34.最小二乘:把最优参数直接解出来
  35. 35.最小二乘法的几何与概率视角
  36. 36.极大似然:给最小二乘一个概率出身
  37. 37.逻辑回归(1):把线性模型接到分类上
  38. 38.逻辑回归(2):损失函数与多分类
  39. 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
  40. 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
  41. 41.优化方法(1):坐标下降与前向选择
  42. 42.优化方法(2):前向策略与最小角回归
  43. 43.拉格朗日乘子法(1):从无约束到等式约束
  44. 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
  45. 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
  46. 46.最大间隔:把分类问题变成优化问题
  47. 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
  48. 48.支持向量:边界上的少数派
  49. 49.SVM 计算过程:一笔到底算完,再走进核方法
  50. 50.贝叶斯公式:概率即信念
  51. 51.隐含变量和概率模型:给看不见的原因建模
  52. 52.EM 算法:期望与最大化的迭代
  53. 53.琴生不等式:EM 的数学钥匙
  54. 54.三个硬币问题:EM 的复盘与衔接
  55. 55.高斯混合模型:用隐变量解释双峰数据
  56. 56.隐马尔可夫模型
  57. 57.隐马尔可夫模型(2):前向算法与动态混合模型
  58. 58.隐马尔可夫模型在 NLP 中的运用
  59. 59.EM 算法:把「为什么收敛」推到底
  60. 60.HMM 在 NLP 中的运用:从分词到机器翻译
  61. 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
  62. 62.高维下的高斯模型
  63. 63.主题模型:从词袋到隐含主题
  64. 64.Dirichlet 分布(1)
  65. 65.Dirichlet 分布(2)
  66. 66.统计学习内容回顾
  67. 67.K-means 算法
  68. 68.PCA 降维
  69. 69.SVD 降维
  70. 70.从聚类到流形
  71. 71.局部线性嵌入
  72. 72.随机邻域嵌入:SNE 与 t-SNE
  73. 73.无参模型:让数据自己说话
  74. 74.高斯过程:函数空间里的正态分布
  75. 75.高斯过程(2):噪声、正则化与核的线性组合
  76. 76.神经网络简介:从感知器到自编码器
  77. 77.反向传播:把误差一层层传回去
  78. 78.卷积神经网络(CNN):让特征自己学出来
  79. 79.循环神经网络(RNN):给网络装上记忆
  80. 80.深度学习回顾:静态一类,动态一类
  81. 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
  82. 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传

机器学习的分类

约 12 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · 机器学习算法精讲

机器学习并非一个单一的算法,而是一个包含多种学习范式的广阔领域。理解这些不同的学习范式,是构建系统化知识体系的第一步。本节将系统介绍机器学习的三大核心范畴:监督学习、无监督学习和强化学习,并简要提及半监督学习,帮助学员建立起对机器学习领域的宏观认知。

💡 核心导读

  • 监督学习:在有明确“答案”的数据中学习输入与输出之间的映射关系,核心任务是分类与回归。
  • 无监督学习:在没有“答案”的数据中发现其内在结构与模式,核心任务是聚类与降维。
  • 强化学习:通过与环境交互获得的“奖赏”或“惩罚”信号,学习在特定状态下采取何种行动以获得最大累积回报。
  • 半监督学习:结合少量有标签数据和大量无标签数据进行学习,是监督与无监督的混合范式。
  • 范式地图:理解不同学习范式之间的关系及其适用的典型问题。(“范式/Paradigm”这个词在业界很讲究——香港科大的杨强教授创办的公司就叫”第四范式 4Paradigm”。)

监督学习:从已知中学习

监督学习(Supervised Learning)是机器学习中最经典、应用最广泛的范式。其核心思想是:我们拥有一个数据集,其中每个样本都包含输入(特征)和对应的输出(标签)。我们的目标是学习一个从输入到输出的映射函数,使得对于新的、未见过的输入,模型能给出准确的预测。

分类与回归

监督学习主要解决两大类问题:

  1. 分类(Classification):预测离散的类别标签。例如,给定一封邮件,判断它是“垃圾邮件”还是“正常邮件”。这里的输出 yy 属于一个有限的离散集合,如 y∈{0,1}y \in \lbrace 0, 1\rbrace(二分类),或 y∈{猫,狗,鸟}y \in \lbrace 猫, 狗, 鸟\rbrace(多分类)。
  2. 回归(Regression):预测连续的数值。例如,根据房屋的面积、位置等特征,预测其价格。这里的输出 yy 是一个连续值,如 y∈Ry \in \mathbb{R}。

从数学上看,分类可以看作是回归的一种特例,即预测值被限定在几个离散的类别上。在实际应用中,垃圾邮件过滤、情感分析、图像识别等都属于分类问题;而房价预测、股票走势预测、温度预测等则属于回归问题。

监督学习的直观过程是:我们有一个期望的、但未知的真实函数(如图中红色曲线),通过带有噪声的观测数据点(如图中蓝色点),学习出一个近似的函数(如图中绿色曲线),使其尽可能逼近真实函数。

无监督学习:发现数据的内在结构

无监督学习(Unsupervised Learning)处理的是没有标签的数据。我们只有输入特征 xx,没有对应的输出 yy。模型的目标是探索数据本身的内在结构、分布或模式。

聚类分析

聚类(Clustering)是无监督学习的核心任务之一,其思想是“物以类聚,人以群分”。算法根据数据点之间的相似性(通常用距离度量),将相似的数据点自动归入同一组(簇),而不相似的点则分到不同的组。

例如,给定平面上的一系列点,聚类算法可以根据点的坐标(特征)将它们自动分成几组。聚类的结果具有一定的主观性,取决于我们如何定义“相似性”(距离度量)。例如,对于一组《辛普森一家》的角色数据,我们可以根据性别(男/女)聚类,也可以根据是否属于辛普森家族来聚类,这取决于我们想解决的具体问题。

降维

降维(Dimensionality Reduction)是另一个重要的无监督学习任务。当数据特征维度非常高时(即“维数灾难”),降维旨在将数据从高维空间映射到低维空间,同时尽可能保留原始数据的主要信息或结构。这有助于数据可视化、去除噪声、减少计算开销等。主成分分析(PCA)和奇异值分解(SVD)是经典的降维方法。

半监督学习:利用未标记数据

半监督学习(Semi-supervised Learning)介于监督学习和无监督学习之间。在实际应用中,获取大量有标签数据往往成本高昂,而无标签数据则相对容易获得。半监督学习正是利用少量有标签数据和大量无标签数据共同进行学习。

其直观思想是:数据本身的分布(由无标签数据揭示)可以提供额外的信息,帮助我们找到更好的决策边界。例如,仅凭少量有标签的红圈和绿叉,我们可能学出一条分类线。但当引入大量无标签的黑点后,我们发现数据在空间中的整体分布发生了变化,此时学出的分类线可能会发生调整,以更好地契合数据的全局结构,从而可能获得更好的泛化性能。

(说明:本课程不会大量展开半监督学习,主讲监督学习与无监督学习,最后一课讲强化学习——但半监督在实际问题中很常用,值得知道它的存在与直觉。)

强化学习:从交互中学习

强化学习(Reinforcement Learning, RL)是一种截然不同的学习范式。它模拟了智能体(Agent)通过与环境的持续交互来学习的过程,其灵感来源于人类或动物通过“试错”和“奖赏”来学习的行为模式。

核心机制

想象训练小狗“握手”:

  • 状态(State, sts_t):当前环境的情况(如小狗看到你伸出手)。
  • 动作(Action, ata_t):智能体可以采取的行为(如小狗选择是否抬起爪子)。
  • 策略(Policy, π\pi):一个函数,定义了在给定状态下应采取何种动作。
  • 奖赏(Reward, rtr_t):环境对智能体动作的反馈(如握手成功给骨头-正奖赏,不握手不给-零或负奖赏)。

智能体的目标不是拟合一个静态的数据集,而是学习一个最优策略 π∗\pi^*,使得在与环境交互的整个过程中,获得的累积奖赏最大化。

应用与特点

强化学习在游戏AI(如吃豆人Pac-Man、围棋AlphaGo)、机器人路径规划、无人机控制等领域取得了巨大成功。它的一个有趣特点是,对于极其复杂的环境变换,机器可能通过大量试错找到解决方案,而人类玩家可能会感到困惑。

然而,强化学习通常需要非常长的训练时间,并且算法设计复杂,被业界称为“深坑”,需要谨慎对待。

机器学习范式地图

为了更清晰地把握机器学习的全貌,我们可以参考以下范式地图:

  • 无监督学习:包含聚类、降维等。
  • 监督学习:包含分类、回归等。
  • 强化学习:主要应用于游戏AI、机器人导航等序列决策问题。

我们的课程将主要沿着这条主线展开:从监督学习中的线性模型开始,逐步深入到K近邻、朴素贝叶斯、决策树等经典算法;然后探讨无监督学习中的K均值聚类和PCA降维;最后在课程尾声,会介绍强化学习的基础,如Q学习,并简要探讨深度Q网络(Deep Q-Network)以及AlphaGo背后的基本原理。

📝 动手练一练

  1. 概念辨析:假设你正在开发一个电影推荐系统。系统初期,你有少量用户对电影的明确评分(1-5星),同时拥有大量用户的观影记录(看过/未看过,无评分)。为了充分利用数据,你会考虑使用哪种或哪几种机器学习范式?为什么?
👉 点击查看参考答案

这是一个典型的半监督学习场景。

  • 少量明确评分:构成了有标签数据,可以用于训练一个预测评分的监督学习(回归)模型。
  • 大量观影记录:构成了无标签数据(“看过”可视为一种隐式反馈,但不是明确的评分标签)。这些数据可以用于无监督学习,例如对用户进行聚类(发现兴趣相似的用户群体),或者对电影进行聚类(发现题材风格相似的电影)。
  • 结合使用:半监督学习框架可以同时利用这两类数据。例如,利用用户聚类信息来平滑或补全评分预测,使得对属于同一聚类但未评分某电影的用户,可以参考同聚类其他用户的评分。因此,最合适的思路是构建一个半监督学习系统,其内部可能融合了监督学习(回归)和无监督学习(聚类)的技术。
  1. 代码思考:以下是一个最简单的“最近邻”分类思想的代码演示,它没有显式的训练过程。请运行代码并思考:这段代码模拟了哪种学习范式?如果将距离计算方式从欧氏距离改为曼哈顿距离,可能会对“分类”结果产生什么影响?
import math
import random

# 模拟一些有标签的二维数据点:特征[x, y],标签'红'或'绿'
labeled_data = [
    ([1.0, 2.0], '红'),
    ([2.0, 3.0], '红'),
    ([3.0, 1.0], '绿'),
    ([5.0, 4.0], '绿'),
]

# 定义一个待分类的新点
new_point = [2.5, 2.0]

# 1-最近邻算法:找到距离最近的点,取其标签
def euclidean_distance(point_a, point_b):
    """计算欧氏距离"""
    return math.sqrt((point_a[0] - point_b[0]) ** 2 + (point_a[1] - point_b[1]) ** 2)

def manhattan_distance(point_a, point_b):
    """计算曼哈顿距离"""
    return abs(point_a[0] - point_b[0]) + abs(point_a[1] - point_b[1])

# 使用欧氏距离
nearest_neighbor = min(labeled_data, key=lambda item: euclidean_distance(item[0], new_point))
predicted_label_euclidean = nearest_neighbor[1]

# 使用曼哈顿距离
nearest_neighbor_manhattan = min(labeled_data, key=lambda item: manhattan_distance(item[0], new_point))
predicted_label_manhattan = nearest_neighbor_manhattan[1]

print(f"待分类点: {new_point}")
print(f"基于欧氏距离的1-最近邻预测标签: {predicted_label_euclidean}")
print(f"基于曼哈顿距离的1-最近邻预测标签: {predicted_label_manhattan}")

# 查看所有点的距离以供分析
print("\n距离分析:")
for point, label in labeled_data:
    print(f"点{point}({label}) -> 欧氏距离: {euclidean_distance(point, new_point):.2f}, 曼哈顿距离: {manhattan_distance(point, new_point):.2f}")
待分类点: [2.5, 2.0]
基于欧氏距离的1-最近邻预测标签: 红
基于曼哈顿距离的1-最近邻预测标签: 红

距离分析:
点[1.0, 2.0](红) -> 欧氏距离: 1.50, 曼哈顿距离: 1.50
点[2.0, 3.0](红) -> 欧氏距离: 1.12, 曼哈顿距离: 1.50
点[3.0, 1.0](绿) -> 欧氏距离: 1.12, 曼哈顿距离: 1.50
点[5.0, 4.0](绿) -> 欧氏距离: 3.20, 曼哈顿距离: 4.50
👉 点击查看参考答案
  1. 学习范式:这段代码模拟了监督学习中的分类任务。因为它利用了已知标签的数据集(labeled_data)来对新样本(new_point)进行类别预测。
  2. 距离度量的影响:在此特定数据集中,对于点[2.5, 2.0],使用欧氏距离和曼哈顿距离都预测为‘红’。但从距离分析可以看出,有两个点([2.0, 3.0]和[3.0, 1.0])与new_point的距离非常接近(欧氏距离均为1.12)。改变距离度量可能会改变“最近”点的排序。例如,如果某个点在一个度量下是最近的,在另一个度量下可能不是。这会导致预测结果发生变化。曼哈顿距离对坐标差异的惩罚是线性的,而欧氏距离是平方和的平方根,后者对大的差异更敏感。因此,在数据分布不同或特征尺度不一致时,选择不同的距离度量会显著影响K近邻等基于距离的算法的性能。

本章小结

本节为我们勾勒出了机器学习领域的宏观版图。理解监督、无监督、半监督和强化学习这四大范式的区别与联系,是后续深入学习具体算法的基础。每种范式都有其独特的假设、目标和方法论,适用于解决不同类型的问题。

📋 行动清单

  • 回顾定义:尝试用自己的话向他人解释监督学习、无监督学习和强化学习的核心区别。
  • 观察生活:思考日常生活中遇到的哪些应用(如手机相册的人脸分类、新闻推送、自动驾驶)可能分别对应了哪种机器学习范式。
  • 预习准备:下一讲我们将正式进入算法部分,从线性模型和梯度下降开始。建议提前回顾线性代数和微积分中关于向量、矩阵、偏导数的基本概念。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第3章课件:机器学习的哲学
    下载