文章目录
-
- [📚 学习路线图](#📚 学习路线图)
- 本文内容一览(快速理解)
- [一、什么是图像分类(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
本文内容一览(快速理解)
- 图像分类(Image Classification):给图像分配一个类别标签的核心任务
- 语义鸿沟(Semantic Gap):计算机看到的像素值与人类理解的语义之间的差距
- 图像分类的挑战:视角变化、背景杂乱、光照、形变、遮挡、类内变化
- 最近邻分类器(Nearest Neighbor):基于相似度的简单分类方法
- K-最近邻分类器(K-Nearest Neighbors):使用K个最近邻的投票机制
- 线性分类器(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):记住训练数据,找到最相似的图像
概念的本质:
最近邻分类器是一种非常简单的分类方法:
- 训练阶段:记住所有训练图像和对应的标签
- 预测阶段:对于新图像,找到训练集中最相似的图像,预测其标签
图解说明:
训练阶段
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):为什么不适合图像分类
概念的本质:
最近邻分类器在图像分类中很少使用,因为:
- 预测速度慢 : O ( N ) O(N) O(N)时间复杂度,需要比较所有训练图像
- 像素距离不信息:像素级别的距离不能很好地表示图像的语义相似性
图解说明:
最近邻分类器 问题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):代数、视觉、几何
概念的本质:
线性分类器可以从三个角度理解:
- 代数视角 : f ( x , W ) = W x + b f(x,W) = Wx + b f(x,W)=Wx+b,矩阵乘法
- 视觉视角 :每个类别有一个模板( W W W的每一行),通过模板匹配
- 几何视角:每个类别有一个超平面,将空间分割成不同区域
图解说明:
线性分类器 代数视角
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:其他
- 需要环形边界
- 线性分类器无法处理
解决方案:
- 使用非线性模型
- 例如:神经网络、卷积神经网络
- 可以学习复杂的非线性决策边界
📝 本章总结
核心要点回顾:
-
图像分类:
- 给图像分配类别标签的核心任务
- 面临语义鸿沟和多种挑战
-
最近邻分类器:
- 简单但预测慢( O ( N ) O(N) O(N))
- 像素距离不能很好地表示语义相似性
-
K-最近邻分类器:
- 使用K个最近邻投票
- 需要选择合适的K值和距离度量
-
线性分类器:
- 参数化方法,预测快
- 三种理解方式:代数、视觉、几何
- 只能学习线性边界,不能处理复杂模式
知识地图:
图像分类 挑战
语义鸿沟 最近邻分类器
KNN 线性分类器
Linear 视角变化 背景杂乱 光照变化 距离度量
L1/L2 K值选择 超参数设置 参数化方法
W, b 三种视角
代数/视觉/几何 局限性
线性边界
关键决策点:
- 选择分类器:最近邻简单但慢,线性分类器快但能力有限
- 距离度量:L1对异常值鲁棒,L2更常用
- K值选择:使用验证集选择,平衡鲁棒性和局部性
- 超参数设置:使用验证集,不能使用测试集
- 线性分类器的局限性:需要非线性模型处理复杂模式
📚 延伸阅读
推荐资源
-
CS231n课程:Stanford CS231n: Convolutional Neural Networks for Visual Recognition
- 详细的图像分类和深度学习课程
-
经典数据集:
- CIFAR-10:10类图像分类数据集
- ImageNet:大规模图像分类数据集
-
下一步学习:
- 损失函数:如何衡量分类器的好坏
- 优化:如何学习参数W和b
- 卷积神经网络:更强大的图像分类模型