CS231n: Convolutional Neural Networks for Visual Recognition

Stanford University | Fei-Fei Li & Andrej Karpathy


Lecture 1:Introduction to Computer Vision

历史背景

  • ImageNet:由李飞飞(Fei-Fei Li)团队创建的大规模图像数据集,包含超过 1400 万张标注图像,涵盖 2 万多个类别。它的出现为深度学习在视觉领域的发展提供了数据基础。
  • ImageNet 大规模视觉识别挑战赛(ILSVRC):每年举办的图像分类比赛,推动了许多突破性算法的发展。

里程碑:AlexNet(2012)

  • 由 Alex Krizhevsky、Ilya Sutskever、Geoffrey Hinton 提出
  • 首次将深度学习大规模应用于图像分类,在 ILSVRC 2012 上以巨大优势夺冠
  • 标志着深度学习革命的开始

课程四大板块

1. Deep Learning Basics(深度学习基础)

  • 线性分类器(Linear Classifier)
  • 损失函数与优化(Loss Functions & Optimization)
  • 神经网络与反向传播(Neural Networks & Backpropagation)

2. Perceiving and Understanding the Visual World(感知与理解视觉世界)

四个核心任务:

任务 英文 描述
分类 Classification 判断图片整体属于哪个类别
语义分割 Semantic Segmentation 对每个像素进行分类(同一类物体不区分个体)
目标检测 Object Detection 定位并识别图中每个物体的边界框
实例分割 Instance Segmentation 对每个像素分类 + 区分同一类的不同个体

主要模型架构:

  • CNN(卷积神经网络):图像处理的基石架构
  • RNN(循环神经网络):处理序列数据,可用于视频理解
  • Transformer:自注意力机制,后来成为视觉领域的核心架构(ViT, DETR 等)
  • 注意力机制(Attention):让模型学会"关注"输入中的重要部分

大规模分布式训练(Large Scale Distributed Training):如何在多 GPU / 多机器上高效训练大模型

3. Generative and Interactive Visual Intelligence(生成式与交互式视觉智能)

  • 自监督学习(Self-Supervised Learning):无需人工标注,让模型从数据自身学习表征
  • 生成式建模(Generative Modeling):GAN、VAE、扩散模型(Diffusion Models)等,生成新图像
  • 视觉语言模型(Visual Language Models):图文多模态模型(如 CLIP、GPT-4V)
  • 3D 视觉(3D Vision):三维重建、神经辐射场(NeRF)等
  • 具身智能(Embodied Intelligence):让 AI 在物理/虚拟环境中感知、行动和交互

4. Human-Centered Applications and Implications(以人为中心的应用与影响)

  • AI 伦理、偏见、公平性
  • 隐私与安全
  • 实际部署与社会影响

Lecture 2:Image Classification with Linear Classifier

数据驱动方法(Data-Driven Approach)

传统方法(硬编码规则)无法应对图像分类的复杂性,现代方法采用三步走:

步骤 英文 说明
1. 收集 Collect 收集带有标签的图像数据集
2. 训练 Train 使用机器学习算法训练分类器
3. 评估 Evaluate 在新图像上评估分类器性能

K-最近邻算法(K-Nearest Neighbors, KNN)

距离度量

L1 距离(曼哈顿距离 / Manhattan Distance):
d1(I1,I2)=∑p∣I1p−I2p∣d_1(I_1, I_2) = \sum_p |I_1^p - I_2^p|d1(I1,I2)=pI1pI2p

  • 对每个像素位置 p,计算像素值之差的绝对值,再求和
  • 特征保留:每个维度的差异被同等对待
  • 几何上形成矩形/菱形的决策边界
  • 适合特征含义明确的场景

L2 距离(欧几里得距离 / Euclidean Distance):
d2(I1,I2)=∑p(I1p−I2p)2d_2(I_1, I_2) = \sqrt{\sum_p (I_1^p - I_2^p)^2}d2(I1,I2)=p(I1pI2p)2

  • 计算像素值之差的平方和,再开根号
  • 特征更随意:对大的差异惩罚更重
  • 几何上形成圆形的决策边界
  • 更常用,但在某些场景下不如 L1

超参数 K

  • K 是超参数(Hyperparameter)——由我们手动设定、算法本身无法学习的变量
  • K 值的选择高度依赖数据集
  • K 太小 → 容易过拟合,对噪声敏感
  • K 太大 → 决策边界过于平滑,可能欠拟合

超参数选择策略

核心原则:测试集只能使用一次,绝不能用于调参!

方法 做法 评价
1. 训练集上选最优 在所有训练数据上调参 ❌ 最差,K=1 总是最优,完全过拟合
2. 测试集上选最优 在测试集上调参 ❌ 作弊,无法反映真实泛化能力
3. 验证集上选最优 划分训练集/验证集/测试集 ✅ 正确方法
4. 交叉验证 训练集分成 N 份,轮流当验证集 ✅✅ 最佳方法,数据较少时尤其有用

参数方法(Parametric Approach)

  • KNN 是非参数方法:训练时只是记住所有数据,预测时再做计算(lazy learning)
  • 参数方法:训练阶段从数据中学习紧凑的模型参数(如权重矩阵 W),预测时只需前向计算,非常高效

线性分类器(Linear Classifier)

核心公式

f(x,W)=Wx+bf(x, W) = Wx + bf(x,W)=Wx+b

  • x:输入图像(展平为一维向量,如 32×32×3 = 3072 维)
  • W:权重矩阵(参数),每个类别一行
  • b:偏置向量(bias),提供类别无关的偏移
  • 输出:每个类别的得分(score),最高分即为预测类别

几何解释

  • 每个类别对应高维空间中的一个超平面
  • W 的每一行是一个类别的模板(template),代表了该类别的"原型图像"
  • 分类器计算输入 x 与各类别模板的内积相似度 + 偏置

如何选定 W?→ 损失函数(Loss Function)

损失函数用于量化 W 的好坏

  • 损失越低 → 分类器表现越好
  • 目标是找到使损失最小化的 W

两种常见损失函数:

1. SVM 损失(Hinge Loss / 多类 SVM 损失):
Li=∑j≠yimax⁡(0,sj−syi+Δ)L_i = \sum_{j \neq y_i} \max(0, s_j - s_{y_i} + \Delta)Li=j=yimax(0,sjsyi+Δ)

  • syis_{y_i}syi 是正确类别的得分,sjs_jsj 是其他类别的得分
  • Δ\DeltaΔ 是安全边界(margin),通常设为 1
  • 核心思想:正确类别的得分应该比错误类别高至少 Δ\DeltaΔ
  • 如果正确类别的得分已经足够高,损失为零

2. Softmax 分类器(交叉熵损失 / Cross-Entropy Loss):
Li=−log⁡(esyi∑jesj)L_i = -\log\left(\frac{e^{s_{y_i}}}{\sum_j e^{s_j}}\right)Li=log(jesjesyi)

  • 先将得分通过 Softmax 函数转化为概率分布:P(yi∣xi)=esyi∑jesjP(y_i | x_i) = \frac{e^{s_{y_i}}}{\sum_j e^{s_j}}P(yixi)=jesjesyi
  • 再取正确类别概率的负对数作为损失
  • 核心思想:最大化正确类别的概率,等价于最小化交叉熵
  • 损失范围:[0,∞)[0, \infty)[0,),概率越接近 1,损失越接近 0

SVM vs Softmax 对比:

SVM Loss Softmax Loss
关注点 正确得分是否比错误高 margin 正确类别的概率是否尽可能大
一旦满足 margin 损失为零,不再优化 持续优化,追求更高概率
输出解释 得分(无概率含义) 概率分布

关键术语速查表

术语 英文 简要解释
超参数 Hyperparameter 训练前手动设定、不能被学习的参数
过拟合 Overfitting 模型在训练集上表现很好,但泛化到新数据时表现差
损失函数 Loss Function 衡量模型预测结果与真实标签之间差距的函数
交叉验证 Cross-Validation 将数据分成多份轮流验证,更可靠地评估模型
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐