【计算机视觉(10)】图像分类基础篇:从最近邻到线性分类器

文章目录

    • [📚 学习路线图](#📚 学习路线图)
    • 本文内容一览(快速理解)
    • [一、什么是图像分类(Image Classification):计算机视觉的核心任务](#一、什么是图像分类(Image Classification):计算机视觉的核心任务)
      • [1.1 图像分类的定义(What is Image Classification):给图像分配类别标签](#1.1 图像分类的定义(What is Image Classification):给图像分配类别标签)
      • [1.2 语义鸿沟(Semantic Gap):像素值与语义理解之间的差距](#1.2 语义鸿沟(Semantic Gap):像素值与语义理解之间的差距)
      • [1.3 图像分类的挑战(Challenges in Image Classification):六个主要挑战](#1.3 图像分类的挑战(Challenges in Image Classification):六个主要挑战)
    • [二、最近邻分类器(Nearest Neighbor Classifier):基于相似度的简单分类方法](#二、最近邻分类器(Nearest Neighbor Classifier):基于相似度的简单分类方法)
      • [2.1 最近邻分类器的原理(Nearest Neighbor Basics):记住训练数据,找到最相似的图像](#2.1 最近邻分类器的原理(Nearest Neighbor Basics):记住训练数据,找到最相似的图像)
      • [2.2 距离度量(Distance Metric):如何比较两张图像的相似性](#2.2 距离度量(Distance Metric):如何比较两张图像的相似性)
      • [2.3 K-最近邻分类器(K-Nearest Neighbors):使用K个最近邻的投票机制](#2.3 K-最近邻分类器(K-Nearest Neighbors):使用K个最近邻的投票机制)
      • [2.4 超参数设置(Hyperparameter Setting):如何选择K和距离度量](#2.4 超参数设置(Hyperparameter Setting):如何选择K和距离度量)
      • [2.5 最近邻分类器的局限性(Limitations of Nearest Neighbor):为什么不适合图像分类](#2.5 最近邻分类器的局限性(Limitations of Nearest Neighbor):为什么不适合图像分类)
    • [三、线性分类器(Linear Classifier):使用线性函数进行图像分类](#三、线性分类器(Linear Classifier):使用线性函数进行图像分类)
      • [3.1 参数化方法(Parametric Approach):使用参数进行图像分类](#3.1 参数化方法(Parametric Approach):使用参数进行图像分类)
      • [3.2 线性分类器的计算(Linear Classifier Computation):从图像到类别分数](#3.2 线性分类器的计算(Linear Classifier Computation):从图像到类别分数)
      • [3.3 线性分类器的三种理解方式(Three Viewpoints of Linear Classifier):代数、视觉、几何](#3.3 线性分类器的三种理解方式(Three Viewpoints of Linear Classifier):代数、视觉、几何)
      • [3.4 线性分类器的局限性(Limitations of Linear Classifier):不能处理复杂模式](#3.4 线性分类器的局限性(Limitations of Linear Classifier):不能处理复杂模式)
    • [📝 本章总结](#📝 本章总结)
    • [📚 延伸阅读](#📚 延伸阅读)

📌 适合对象 :计算机视觉初学者、机器学习入门者

⏱️ 预计阅读时间 :40-50分钟

🎯 学习目标:理解图像分类的基本概念和挑战,掌握最近邻分类器和线性分类器的原理


📚 学习路线图

图像分类问题 理解挑战
语义鸿沟 最近邻分类器
KNN 线性分类器
Linear Classifier 损失函数
Loss Function 优化
Optimization 卷积神经网络
ConvNets


本文内容一览(快速理解)

  1. 图像分类(Image Classification):给图像分配一个类别标签的核心任务
  2. 语义鸿沟(Semantic Gap):计算机看到的像素值与人类理解的语义之间的差距
  3. 图像分类的挑战:视角变化、背景杂乱、光照、形变、遮挡、类内变化
  4. 最近邻分类器(Nearest Neighbor):基于相似度的简单分类方法
  5. K-最近邻分类器(K-Nearest Neighbors):使用K个最近邻的投票机制
  6. 线性分类器(Linear Classifier):使用线性函数进行图像分类

一、什么是图像分类(Image Classification):计算机视觉的核心任务

这一章要建立的基础:理解图像分类的基本概念和挑战

核心问题:如何让计算机识别图像中的物体类别?


!NOTE

📝 关键点总结:图像分类是给图像分配一个类别标签的任务。计算机看到的只是像素值,而我们需要的是语义理解,这之间存在语义鸿沟。图像分类面临视角变化、背景杂乱、光照、形变、遮挡、类内变化等挑战。

1.1 图像分类的定义(What is Image Classification):给图像分配类别标签

概念的本质

图像分类是计算机视觉的核心任务之一。给定一张图像和一个预定义的类别集合(如{狗, 猫, 卡车, 飞机, ...}),我们需要给图像分配一个类别标签。

图解说明
输入图像 图像分类器
Classifier 类别标签
cat/dog/... 类别集合
{dog, cat, ...}

💡 说明

  • 输入 :一张图像(如 800 × 600 × 3 800 \times 600 \times 3 800×600×3的RGB图像)
  • 输出:一个类别标签(如"cat")
  • 类别集合:预定义的离散标签集合

类比理解

想象你在看一张照片,照片中有一只猫。图像分类就像你看到照片后说"这是一只猫"。但计算机看到的只是一堆数字(像素值),它需要学会从这些数字中识别出"猫"这个类别。

实际例子

复制代码
图像分类的应用:
1. 图像搜索引擎:根据类别搜索图像
2. 自动驾驶:识别道路上的车辆、行人、标志
3. 医学影像:识别病变、器官
4. 社交媒体:自动标记照片中的物体

图像分类的特点:
- 输入:图像(像素值矩阵)
- 输出:类别标签(离散值)
- 挑战:需要从像素值中提取语义信息

1.2 语义鸿沟(Semantic Gap):像素值与语义理解之间的差距

概念的本质

计算机看到的图像只是一堆数字(像素值,如0-255之间的整数),而我们需要的是语义理解(如"这是一只猫")。这之间的差距就是语义鸿沟。

图解说明
图像
800×600×3
像素值矩阵 计算机看到
数字矩阵 人类理解
语义信息 语义鸿沟
Semantic Gap 需要桥接
特征提取

💡 说明

  • 计算机视角 :图像是 800 × 600 × 3 800 \times 600 \times 3 800×600×3的数字矩阵(每个像素是 0 0 0- 255 255 255的整数)
  • 人类视角:图像包含语义信息(如"猫"、"狗")
  • 语义鸿沟:两者之间的差距,需要通过特征提取和学习来桥接

类比理解

想象你在看一本用你不懂的语言写的书。你看到的只是一堆符号(就像计算机看到的像素值),但你需要理解书的内容(就像我们需要理解图像的语义)。语义鸿沟就像这两种理解之间的差距,需要通过"翻译"(特征提取和学习)来桥接。

实际例子

复制代码
语义鸿沟的例子:
- 计算机看到:[[56, 231, 24], [2, 45, 123], ...](像素值)
- 人类理解:这是一只猫(语义信息)
- 差距:需要从像素值中提取特征,学习语义

为什么不能直接硬编码?
- 无法用简单的规则描述"猫"的特征
- 猫有各种形状、颜色、姿态
- 需要从数据中学习模式

解决方案:
- 使用机器学习方法
- 从大量标注数据中学习
- 提取特征,学习分类规则

1.3 图像分类的挑战(Challenges in Image Classification):六个主要挑战

概念的本质

图像分类面临许多挑战,包括视角变化、背景杂乱、光照变化、形变、遮挡、类内变化等。这些挑战使得图像分类成为一个困难的问题。

图解说明
图像分类挑战 视角变化
Viewpoint 背景杂乱
Background 光照变化
Illumination 形变
Deformation 遮挡
Occlusion 类内变化
Intraclass

💡 说明

  • 视角变化:相机移动时,所有像素都改变
  • 背景杂乱:物体可能出现在各种背景中
  • 光照变化:同一物体在不同光照下看起来不同
  • 形变:物体可能有各种形状和姿态
  • 遮挡:物体可能被部分遮挡
  • 类内变化:同一类别的物体可能有很大差异

类比理解

想象你在教一个孩子识别"猫"。但猫可能:

  • 从不同角度拍摄(视角变化)
  • 出现在不同背景中(背景杂乱)
  • 在阳光下或阴影中(光照变化)
  • 坐着、躺着、站着(形变)
  • 被其他物体部分遮挡(遮挡)
  • 有各种颜色、大小、品种(类内变化)

这些挑战使得识别"猫"变得困难,需要学习对这些变化鲁棒的特征。

实际例子

复制代码
视角变化的挑战:
- 同一物体从不同角度拍摄,像素值完全不同
- 需要学习对视角变化不变的特征
- 例如:旋转、缩放、平移

背景杂乱的挑战:
- 物体可能出现在各种背景中
- 背景可能包含干扰信息
- 需要专注于物体本身,忽略背景

光照变化的挑战:
- 同一物体在不同光照下看起来不同
- 需要学习对光照变化鲁棒的特征
- 例如:亮度、对比度、阴影

形变的挑战:
- 物体可能有各种形状和姿态
- 需要学习对形变鲁棒的特征
- 例如:非刚性形变

遮挡的挑战:
- 物体可能被部分遮挡
- 只能看到部分特征
- 需要从部分信息推断整体

类内变化的挑战:
- 同一类别的物体可能有很大差异
- 需要学习类别的共同特征
- 例如:不同品种的猫

二、最近邻分类器(Nearest Neighbor Classifier):基于相似度的简单分类方法

这一章要建立的基础:理解基于相似度的分类方法

核心问题:如何根据训练数据对新图像进行分类?


!NOTE

📝 关键点总结:最近邻分类器是一种简单的分类方法:记住所有训练数据和标签,对于新图像,找到最相似的训练图像,预测其标签。虽然简单,但预测速度慢( O ( N ) O(N) O(N)),且像素距离不能很好地表示图像相似性。

2.1 最近邻分类器的原理(Nearest Neighbor Basics):记住训练数据,找到最相似的图像

概念的本质

最近邻分类器是一种非常简单的分类方法:

  1. 训练阶段:记住所有训练图像和对应的标签
  2. 预测阶段:对于新图像,找到训练集中最相似的图像,预测其标签

图解说明
训练阶段
Training 记住所有
训练图像和标签 预测阶段
Prediction 新图像 计算与所有
训练图像的距离 找到最近邻
Nearest Neighbor 预测标签
Label

💡 说明

  • 训练 : O ( 1 ) O(1) O(1)时间复杂度,只需要存储数据
  • 预测 : O ( N ) O(N) O(N)时间复杂度,需要计算与所有训练图像的距离
  • 问题:预测速度慢,我们希望预测快、训练慢可以接受

类比理解

想象你在一个图书馆中找书。最近邻分类器就像:

  • 训练阶段:记住图书馆中所有书的位置和类别
  • 预测阶段:拿到一本新书,在图书馆中找到最相似的书,然后说"这本书和那本书一样,所以是同一类"

这种方法简单,但每次预测都需要遍历整个图书馆,速度很慢。

实际例子

复制代码
最近邻分类器的例子(CIFAR-10数据集):
- 10个类别:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车
- 50,000张训练图像
- 10,000张测试图像

训练过程:
- 存储所有50,000张训练图像和标签
- 时间复杂度:$O(1)$(只是存储)

预测过程:
- 对于每张测试图像,计算与所有50,000张训练图像的距离
- 找到距离最小的训练图像
- 预测其标签
- 时间复杂度:$O(N)$,$N=50,000$

问题:
- 预测速度慢:每张测试图像需要比较50,000次
- 我们希望预测快,训练慢可以接受

2.2 距离度量(Distance Metric):如何比较两张图像的相似性

概念的本质

距离度量用于比较两张图像的相似性。常用的距离度量包括L1距离(曼哈顿距离)和L2距离(欧氏距离)。

图解说明
图像1
像素值 距离度量
Distance 图像2
像素值 L1距离
曼哈顿距离 L2距离
欧氏距离 距离值
越小越相似

💡 说明

  • L1距离:对应像素差的绝对值之和
  • L2距离:对应像素差的平方和的平方根
  • 距离越小:图像越相似

类比理解

想象你在比较两幅画。距离度量就像测量两幅画的差异:

  • L1距离:逐像素比较,累加所有差异(就像数有多少个像素不同)
  • L2距离:考虑差异的大小,大差异的权重更大(就像考虑差异的严重程度)

实际例子

复制代码
距离度量的计算:
假设两张图像各有4个像素:
图像1: [56, 231, 24, 2]
图像2: [60, 235, 20, 5]

L1距离(曼哈顿距离):
$|56-60| + |231-235| + |24-20| + |2-5|$
$= 4 + 4 + 4 + 3 = 15$

L2距离(欧氏距离):
$\sqrt{(56-60)^2 + (231-235)^2 + (24-20)^2 + (2-5)^2}$
$= \sqrt{16 + 16 + 16 + 9} = \sqrt{57} \approx 7.55$

距离度量的选择:
- L1距离:对异常值更鲁棒
- L2距离:更常用,对大差异更敏感
- 都是超参数,需要根据问题选择

2.3 K-最近邻分类器(K-Nearest Neighbors):使用K个最近邻的投票机制

概念的本质

K-最近邻(KNN)分类器是最近邻分类器的扩展。不是只使用最近的一个邻居,而是使用K个最近的邻居,通过投票决定类别标签。

图解说明
新图像 找到K个
最近邻 K=1
最近邻 K=3
3个最近邻 K=5
5个最近邻 投票
Majority Vote 预测标签
Label

💡 说明

  • K=1:最近邻分类器,直接使用最近邻的标签
  • K>1:使用K个最近邻,通过多数投票决定标签
  • 优势:对噪声更鲁棒,减少过拟合

类比理解

想象你在问路。KNN就像:

  • K=1:只问一个人,完全相信他的答案(可能不准确)
  • K=3:问三个人,选择多数人的答案(更可靠)
  • K=5:问五个人,选择多数人的答案(更可靠,但可能忽略少数人的正确意见)

K值的选择是一个权衡:K太小容易受噪声影响,K太大可能忽略局部特征。

实际例子

复制代码
KNN分类器的例子:
假设K=3,新图像有3个最近邻:
- 最近邻1:类别"猫"
- 最近邻2:类别"猫"
- 最近邻3:类别"狗"

投票结果:
- "猫":2票
- "狗":1票

预测:类别"猫"(多数投票)

K值的选择:
- K=1:最近邻分类器,可能对噪声敏感
- K=3或5:通常效果较好,平衡了鲁棒性和局部性
- K太大:可能忽略局部特征,边界不清晰

K是超参数:
- 需要根据验证集选择
- 不同问题可能需要不同的K值

2.4 超参数设置(Hyperparameter Setting):如何选择K和距离度量

概念的本质

K值和距离度量(L1或L2)都是超参数,需要根据验证集来选择。不能使用测试集来选择超参数,否则会过拟合测试集。

图解说明
数据集 训练集
Train 验证集
Validation 测试集
Test 训练模型 在验证集上
选择超参数 K值、距离度量 在测试集上
最终评估

💡 说明

  • 训练集:用于训练模型
  • 验证集:用于选择超参数(K值、距离度量)
  • 测试集:只在最后评估一次,不能用于选择超参数
  • 交叉验证:对于小数据集,可以使用交叉验证

类比理解

想象你在准备考试:

  • 训练集:你的学习材料(用来学习)
  • 验证集:模拟考试(用来调整学习方法,如学习时间、复习方式)
  • 测试集:真正的考试(只在最后考一次,不能用来调整方法)

如果你用测试集来调整方法,就像提前知道考试题目,这样得到的成绩不能反映真实水平。

实际例子

复制代码
超参数设置的错误方法:
❌ 方法1:在训练集上选择超参数
   - 问题:K=1在训练集上总是完美(记住所有数据)
   - 结果:过拟合,泛化能力差

❌ 方法2:在测试集上选择超参数
   - 问题:测试集被"污染",不能反映真实性能
   - 结果:过拟合测试集,实际应用效果差

✅ 正确方法:使用验证集
   - 训练集:训练模型
   - 验证集:选择超参数(K值、距离度量)
   - 测试集:只在最后评估一次

交叉验证(小数据集):
- 将数据分成K折(如5折)
- 每次用K-1折训练,1折验证
- 重复K次,平均结果
- 选择平均性能最好的超参数

2.5 最近邻分类器的局限性(Limitations of Nearest Neighbor):为什么不适合图像分类

概念的本质

最近邻分类器在图像分类中很少使用,因为:

  1. 预测速度慢 : O ( N ) O(N) O(N)时间复杂度,需要比较所有训练图像
  2. 像素距离不信息:像素级别的距离不能很好地表示图像的语义相似性

图解说明
最近邻分类器 问题1
预测慢 O(N) 问题2
像素距离不信息 不适合
实际应用

💡 说明

  • 预测慢:每张测试图像需要与所有训练图像比较
  • 像素距离问题:两张图像可能有相同的L2距离,但语义完全不同(如原始图像、加框图像、平移图像)

类比理解

想象你在用最近邻分类器识别猫:

  • 问题1:每次识别都需要与所有训练图像比较,速度很慢
  • 问题2:两张图像可能在像素级别相似(如都是猫),但像素值完全不同(视角、光照不同)。相反,两张图像可能在像素级别相似(如平移后的图像),但语义相同。

像素距离不能很好地捕捉语义相似性。

实际例子

复制代码
像素距离的问题:
原始图像、加框图像、平移图像可能有相同的L2距离,但:
- 原始图像和加框图像:语义相同(都是猫),但像素值不同
- 原始图像和平移图像:语义相同(都是猫),但像素值不同

这说明:
- 像素级别的距离不能很好地表示语义相似性
- 需要更好的特征表示(如SIFT、CNN特征)

最近邻分类器的总结:
- 优点:简单、训练快
- 缺点:预测慢、像素距离不信息
- 结论:不适合实际应用,需要更好的方法(如线性分类器、CNN)

三、线性分类器(Linear Classifier):使用线性函数进行图像分类

这一章要建立的基础:理解参数化方法和线性分类器的原理

核心问题:如何用参数化的方法进行图像分类?


!NOTE

📝 关键点总结:线性分类器使用参数化的方法,通过线性函数 f ( x , W ) = W x + b f(x,W) = Wx + b f(x,W)=Wx+b将图像映射到类别分数。参数 W W W和 b b b需要从数据中学习。线性分类器有三种理解方式:代数视角、视觉视角、几何视角。

3.1 参数化方法(Parametric Approach):使用参数进行图像分类

概念的本质

与最近邻分类器(非参数化,需要存储所有训练数据)不同,参数化方法使用参数(权重 W W W和偏置 b b b)进行图像分类。参数需要从训练数据中学习,但预测时只需要参数,不需要训练数据。

图解说明
图像
32×32×3 展平
3072×1 线性函数
f(x,W) = Wx + b 类别分数
10×1 参数W
10×3072 参数b
10×1

💡 说明

  • 输入 :图像( 32 × 32 × 3 = 3072 32 \times 32 \times 3 = 3072 32×32×3=3072个像素)
  • 参数 : W W W( 10 × 3072 10 \times 3072 10×3072权重矩阵)和 b b b( 10 × 1 10 \times 1 10×1偏置向量)
  • 输出 : 10 10 10个类别的分数
  • 优势:预测快(只需要矩阵乘法),不需要存储训练数据

类比理解

想象你在学习识别猫。参数化方法就像:

  • 最近邻方法:记住所有见过的猫的照片,每次识别时比较(需要存储所有照片)
  • 参数化方法:学习一套"规则"(参数),用这套规则识别(只需要规则,不需要照片)

参数化方法更高效,但需要学习参数。

实际例子

复制代码
线性分类器的例子(CIFAR-10):
输入图像:$32 \times 32 \times 3 = 3072$个像素
类别数:$10$个类别

参数:
- $W$:$10 \times 3072$权重矩阵
- $b$:$10 \times 1$偏置向量

计算:
$f(x,W) = Wx + b$
- $x$:$3072 \times 1$(展平的图像)
- $Wx$:$10 \times 3072 \times 3072 \times 1 = 10 \times 1$(类别分数)
- $+b$:$10 \times 1 + 10 \times 1 = 10 \times 1$(最终分数)

输出:$10$个类别的分数,选择分数最高的类别

优势:
- 预测快:只需要矩阵乘法
- 不需要存储训练数据
- 参数数量固定($10 \times 3072 + 10 = 30,730$个参数)

3.2 线性分类器的计算(Linear Classifier Computation):从图像到类别分数

概念的本质

线性分类器通过矩阵乘法将图像映射到类别分数。对于每个类别,计算一个分数,分数最高的类别就是预测结果。

图解说明
图像
4个像素 展平

56, 231, 24, 2\] 权重矩阵W 3×4 矩阵乘法 Wx 偏置b \[1.1, 3.2, -1.2\] 类别分数 \[cat, dog, ship

💡 说明

  • 展平图像:将图像展平成向量
  • 矩阵乘法 : W x Wx Wx计算每个类别的加权和
  • 加偏置 : + b +b +b调整每个类别的分数
  • 选择最大值:分数最高的类别就是预测结果

类比理解

想象你在给一幅画打分。线性分类器就像:

  • 权重W:每个像素对每个类别的重要性(如像素1对"猫"的重要性是0.2)
  • 矩阵乘法:计算每个类别的总分(加权和)
  • 偏置b:每个类别的基础分数(如"猫"的基础分数是1.1)
  • 最终分数:选择分数最高的类别

实际例子

复制代码
线性分类器的计算示例:
假设图像有4个像素,3个类别(猫、狗、船)

输入图像:[56, 231, 24, 2](展平)

权重矩阵$W$($3 \times 4$):
       像素1  像素2  像素3  像素4
猫    $[0.2,  -0.5,   0.1,   2.0]$
狗    $[1.5,   1.3,   2.1,   0.0]$
船    $[0.0,   0.25,  0.2,  -0.3]$

偏置$b$:$[1.1, 3.2, -1.2]$

计算:
$$Wx = \begin{bmatrix}
0.2 \times 56 + (-0.5) \times 231 + 0.1 \times 24 + 2.0 \times 2 \\
1.5 \times 56 + 1.3 \times 231 + 2.1 \times 24 + 0.0 \times 2 \\
0.0 \times 56 + 0.25 \times 231 + 0.2 \times 24 + (-0.3) \times 2
\end{bmatrix} = \begin{bmatrix} -96.8 \\ 437.9 \\ 61.95 \end{bmatrix}$$

加偏置:
$$\text{分数} = \begin{bmatrix} -96.8 \\ 437.9 \\ 61.95 \end{bmatrix} + \begin{bmatrix} 1.1 \\ 3.2 \\ -1.2 \end{bmatrix} = \begin{bmatrix} -95.7 \\ 441.1 \\ 60.75 \end{bmatrix}$$

预测:类别"狗"(分数最高:441.1)

3.3 线性分类器的三种理解方式(Three Viewpoints of Linear Classifier):代数、视觉、几何

概念的本质

线性分类器可以从三个角度理解:

  1. 代数视角 : f ( x , W ) = W x + b f(x,W) = Wx + b f(x,W)=Wx+b,矩阵乘法
  2. 视觉视角 :每个类别有一个模板( W W W的每一行),通过模板匹配
  3. 几何视角:每个类别有一个超平面,将空间分割成不同区域

图解说明
线性分类器 代数视角
f(x,W) = Wx + b 视觉视角
模板匹配 几何视角
超平面分割 矩阵乘法
计算分数 每个类别
一个模板 高维空间
超平面

💡 说明

  • 代数视角:数学公式,矩阵运算
  • 视觉视角 :将 W W W的每一行重塑成图像,可以看到每个类别的"模板"
  • 几何视角:在高维空间中,每个类别用一个超平面分割空间

类比理解

想象你在识别手写数字。线性分类器的三种理解方式就像:

  • 代数视角:用数学公式计算分数(精确但抽象)
  • 视觉视角:每个数字有一个"模板",通过模板匹配(直观)
  • 几何视角:在特征空间中,每个数字占据一个区域(空间理解)

实际例子

复制代码
代数视角:
$f(x,W) = Wx + b$
- 直接计算,数学公式
- 适合实现和理解计算过程

视觉视角:
将$W$的每一行重塑成$32 \times 32 \times 3$的图像
- 可以看到每个类别的"模板"
- 模板显示了该类别关注的像素模式
- 例如:"猫"的模板可能显示眼睛、耳朵等特征

几何视角:
在高维空间($3072$维)中
- 每个类别用一个超平面分割空间
- 超平面的法向量是$W$的对应行
- 图像落在哪个区域,就属于哪个类别
- 例如:在2D空间中,一条直线将平面分成两部分

三种视角的互补:
- 代数视角:理解计算
- 视觉视角:理解模板
- 几何视角:理解空间分割

3.4 线性分类器的局限性(Limitations of Linear Classifier):不能处理复杂模式

概念的本质

线性分类器只能学习线性决策边界,不能处理复杂的非线性模式。对于某些问题(如XOR问题、多模态分布),线性分类器无法正确分类。

图解说明
线性分类器 只能学习
线性边界 问题1
XOR问题 问题2
多模态分布 问题3
环形分布 需要
非线性模型

💡 说明

  • 线性边界:线性分类器只能学习超平面(直线、平面等)
  • 复杂模式:对于非线性模式,线性分类器无法正确分类
  • 解决方案:需要使用非线性模型(如神经网络、卷积神经网络)

类比理解

想象你在用一条直线分割空间。线性分类器就像:

  • 简单问题:可以用一条直线分开(如"大于5"和"小于5")
  • 复杂问题:需要曲线才能分开(如"在第一象限和第三象限"或"在第二象限和第四象限")

线性分类器只能画直线,不能画曲线。

实际例子

复制代码
线性分类器无法处理的问题:

1. XOR问题:
   类别1:第一象限和第三象限
   类别2:第二象限和第四象限
   - 无法用一条直线分开
   - 需要非线性边界

2. 多模态分布:
   类别1:两个分离的区域
   类别2:其他区域
   - 线性分类器只能用一个超平面
   - 无法处理多个分离的区域

3. 环形分布:
   类别1:$L_2$范数在$1$到$2$之间
   类别2:其他
   - 需要环形边界
   - 线性分类器无法处理

解决方案:
- 使用非线性模型
- 例如:神经网络、卷积神经网络
- 可以学习复杂的非线性决策边界

📝 本章总结

核心要点回顾

  1. 图像分类

    • 给图像分配类别标签的核心任务
    • 面临语义鸿沟和多种挑战
  2. 最近邻分类器

    • 简单但预测慢( O ( N ) O(N) O(N))
    • 像素距离不能很好地表示语义相似性
  3. K-最近邻分类器

    • 使用K个最近邻投票
    • 需要选择合适的K值和距离度量
  4. 线性分类器

    • 参数化方法,预测快
    • 三种理解方式:代数、视觉、几何
    • 只能学习线性边界,不能处理复杂模式

知识地图
图像分类 挑战
语义鸿沟 最近邻分类器
KNN 线性分类器
Linear 视角变化 背景杂乱 光照变化 距离度量
L1/L2 K值选择 超参数设置 参数化方法
W, b 三种视角
代数/视觉/几何 局限性
线性边界

关键决策点

  • 选择分类器:最近邻简单但慢,线性分类器快但能力有限
  • 距离度量:L1对异常值鲁棒,L2更常用
  • K值选择:使用验证集选择,平衡鲁棒性和局部性
  • 超参数设置:使用验证集,不能使用测试集
  • 线性分类器的局限性:需要非线性模型处理复杂模式

📚 延伸阅读

推荐资源

  1. CS231n课程:Stanford CS231n: Convolutional Neural Networks for Visual Recognition

    • 详细的图像分类和深度学习课程
  2. 经典数据集

    • CIFAR-10:10类图像分类数据集
    • ImageNet:大规模图像分类数据集
  3. 下一步学习

    • 损失函数:如何衡量分类器的好坏
    • 优化:如何学习参数W和b
    • 卷积神经网络:更强大的图像分类模型
相关推荐
高木木的博客1 小时前
数字架构智能化测试平台(1)--总纲
人工智能·python·nginx·架构
wanghowie1 小时前
11. AI 客服系统架构设计:不是调 API,而是系统工程
人工智能·系统架构
袋鼠云数栈UED团队1 小时前
基于 OpenSpec 实现规范驱动开发
前端·人工智能
Raink老师1 小时前
【AI面试临阵磨枪】什么是 Tokenization?子词分词(Subword)的优缺点?
人工智能·ai 面试
迷你可可小生1 小时前
面经(三)
人工智能·rnn·lstm
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【28】Nacos Skill 管理中心功能说明
java·人工智能·spring
AI医影跨模态组学1 小时前
Cancer Letters(IF=10.1)中科院自动化研究所田捷等团队:整合纵向MRI与活检全切片图像用于乳腺癌新辅助治疗反应的早期预测及个体化管理
人工智能·深度学习·论文·医学·医学影像
oioihoii2 小时前
Graphify 简明指南
人工智能
数字供应链安全产品选型2 小时前
AI全生命周期安全:从开发到下线,悬镜安全灵境AIDR如何覆盖智能体每一个环节?
人工智能
2501_933329552 小时前
企业舆情处置实战:Infoseek数字公关AI中台技术架构与功能解析
大数据·人工智能·架构·数据库开发