Bob Jiang
This note is based on HKU ELEC4542/Introduction to Deep Learning for Computer Vision (Dr. Xihui Liu)
Basics
- Machines learning is a sub-field of AI
- Artificial intelligence: general reasoning
- Machine learning: learn to obtain a function with expected outputs
- Deep learning: machine learning with deep neural networks
Introduction of Machine Learning
- Linearly separable features 线性可分特征
- A linear classifier (decision boundary) that correctly classifies all training samples
-
Model Capacity
模型(或称为学习器)的容量是指学习器从一组函数中发现函数的能力。例如:- 线性预测器:
- 二次预测器:
- 十次多项式预测器:
Capacity can be measured by the number of training examples {} that the learner could always fit, no matter how to change the values of and .
-
Underfitting
- Definition: The learner cannot find a solution that fits training examples well
- Reasons:
- Model is not rich enough
- Difficult to find the global optimum of the objective function on the training set or easy to get stuck at local minimum / 难以找到全局最优解
- Limitation on the computation resources (not enough training iterations of an iterative optimization procedure) / 计算资源有限
- 欠拟合通常在非深度学习方法中,尤其是在大规模训练数据的情况下经常发生,有时甚至比过拟合更为严重
-
Overfitting
- Definition: The learner fits the training data well, but loses the ability to generalize well, i.e. it has small training error but larger generalization error
- Reasons:
- 函数族太大: 与训练数据规模相比,所选的函数族过于庞大,其中包含许多函数都能很好地拟合训练数据 The family of functions is too large
- 缺乏足够数据: 在数据量不足的情况下,学习器难以区分哪个函数最为适当,可能会在这些表现良好的解决方案中任意选择一个,而无法正确泛化 Without sufficient data
- 噪声影响: 在大多数情况下,数据受到噪声的影响。具有较大容量的学习器倾向于描述随机误差或噪声,而不是数据的真实模式或类别 data is contaminated by noise
- 解决方案:
- 验证集: 使用单独的验证集来选择更适当的模型,以防止选择那些在训练数据上过于复杂的模型。
- 更多数据: 增加训练数据规模,以帮助学习器更好地泛化,区分真实模式与噪声。
- 正则化: 引入正则化项,限制模型的复杂度,防止过分拟合
-
Model complexity (capacity) 模型复杂度
- 模型复杂度(容量)的目标是对未曾见过的新样本进行分类,而不是对训练样本进行分类。
- Generalization泛化: 指模型正确分类与用于训练的样本不同的新样本的能力。当模型过于复杂时,会导致决策边界变得复杂。虽然这种情况下模型在训练样本上能够完美分类,但在新的样本上可能表现不佳。
-
Optimal capacity 最优容量
最优容量是指模型容量的理想水平,以实现对训练数据的良好拟合和对未见过的新数据的良好泛化。
通常,容量与训练误差和泛化(或测试)误差之间存在一种典型的关系。随着容量的增加,训练误差可以降低,但乐观估计(训练误差和泛化误差之间的差异)会增加。在某一点上,乐观估计的增加大于训练误差的减少(通常是在训练误差很低且不能进一步降低的情况下),这时我们进入了过拟合的状态,容量过大,超过了最优容量。在达到最优容量之前,我们处于欠拟合的状态。
-
Training Cycle
-
Design Cycle
-
Machine Learning Systems
- Feature Extraction(特征提取):
- 特征提取: 特征提取是将原始数据转换为更有用、更易于处理的形式的过程。这可能包括选择、转换或创建新的特征,以更好地表示数据。
a. 判别性特征: 在特征提取中,我们寻找那些能够在分类任务中具有判别性的特征,能够有效区分不同类别的样本。 b. 对某些变换具有不变性的特征: 特征应该在面对某些变换时能够保持不变,以提高模型的鲁棒性。 c. 少量特征: 特征提取的目标之一是将原始数据表示为一个维度较小的特征集,以降低计算成本、提高模型效率,并有助于防止过拟合。 - lassifier/Regressor(分类器/回归器):
- 分类器/回归器: 这是用于根据输入数据预测其所属类别或输出数值的模型。
a. 在训练集上分类错误与模型复杂性的权衡: 在模型设计中需要平衡在训练集上的分类错误和模型的复杂性。 b. 决定分类器的形式: 这涉及选择适当的分类器类型,以适应特定问题的需求。 c. 通过训练调整分类器参数: 使用训练数据,对分类器的参数进行调整,以提高性能。 - Post-processing(后处理):
- 后处理: 在模型输出后,可以考虑进行后处理,根据误分类的成本或风险来调整分类器的输出。
a. 风险: 由于误将不同类别的样本误分类可能导致不同的代价,因此在后处理中需要考虑风险。 b. 先验: 利用关于问题的先验知识,例如,一个样本更有可能属于与其之前相同的类别。 c. 整合多个分类器: 这也可以包括整合多个分类器的输出,以提高整体性能。这种集成可以基于不同的特征集。
- Feature Extraction(特征提取):
Introduction to deep learning
A network of interconnecting artificial neurons simulates some properties of biological neural networks: learning generalization adaptivity fault networks: learning, generalization, adaptivity, fault tolerance, distribution computation.
Linear Regression
- Process map for supervised learning
graph LR
Input(FeatureVector) --> A-Learned-Funtion
A-Learned-Funtion --> Expected-Output
- Linear Regression
- Suppose is a linear function of feature vectors
- are parameters(weights) for learning
- Given the training set, we want to make close to in the training set as much as possible.
- Cost Function: 线性回归中,我们的目标是学习一组参数,使得模型的预测值尽可能地接近实际观测值。成本函数用于量化这种接近程度。
- 线性回归的成本函数通常是均方误差(Mean Squared Error,MSE)
- 当训练样本数量m大于特征数量n时,使用均方误差(MSE)作为成本函数, 被称为普通最小二乘(Ordinary Least Squares,OLS)问题。
- Suppose is a linear function of feature vectors
- 梯度下降算法(Gradient Descent Algorithm)
- Initial guess: 初始猜测的参数,迭代地改变θ以使J(θ)更小
- 梯度下降算法通过迭代来调整参数以使成本函数最小化; 每次迭代都会计算成本函数关于参数的梯度,然后按照梯度的方向调整参数。
- 梯度下降更新规则:
- For iteration k=1,2,3... and j=1,2,3...
- 重复进行迭代,对每个参数进行更新,直到满足停止条件
- 算法会在达到预定的迭代次数(k达到足够大)或者梯度的范数达到足够小的情况下终止。这表示算法已经收敛到一个局部最小值或者鞍点。
- 被称作learning rate (step size), 被称作negative gradient direction。
符号 ∇在数学中表示“梯度”(Gradient)运算符。它用于表示一个多元函数在某一点的梯度。梯度是一个向量,其方向指向函数在该点增加最快的方向,而大小表示增加的速率。
-
Matrix Claculus矩阵微积分
- 函数f关于矩阵A的梯度
- 向量f关于矩阵A的梯度
- For ,
-
随机梯度下降(Stochastic Gradient Descent,SGD)
- 在传统的梯度下降中,每次参数更新都需要对整个训练集进行求和操作。这在训练样本很多的情况下(例如,样本数量m大于一百万)可能会非常耗时。
- 为了加速参数更新过程,引入了随机梯度下降。在每次参数更新迭代中,只随机选择一个训练样本进行梯度计算和参数更新。
- 随机梯度下降通常能够更快地将参数接近最小值。然而,它有可能永远不会完全“收敛”到最小值,而是会使参数θ在最小值附近振荡。
-
小批量梯度下降(Mini-batch Gradient Descent)
- 为了平衡梯度下降和随机梯度下降的优势,引入了小批量梯度下降。在每次参数更新迭代中,不再只使用一个样本,也不再使用整个训练集,而是随机选择一个小批量(mini-batch)的训练样本集P进行梯度计算和参数更新。
- Much faster than gradient descent
- More stable than stochastic gradient descent
Review of Logistic Classification
-
Binary classification 二元分类问题
- The possible range of values h in the continuous range [0,1]
- We choose the following hypothesis:, where , g(z) is called logistic function.
- When , ; When , .
- sigmoid 函数的导数: ; sigmoid函数的导数易于计算。这在后续的梯度下降等优化算法中是有用的。
- 概率建模:
- y=1时:
- y=0时:
- 单个训练样本的表达式:
Neural Networks
Computational graph of linear models
计算图实际上是在描述一个模型的结构,其中节点表示变量或操作,边表示数据流和计算流。
-
线性模型的计算图:
- 输入节点表示个体特征向量 的每个特征值 。
- 使用常量输入节点 ,权重与输入节点相关联,表示为 和 。
- 地面实际标签标示为
- 成本函数表示为 。
-
逻辑回归的计算图:
- 输入节点表示个体样本 的每个特征值。
- 使用常量输入节点 ,权重与输入节点相关联,表示为 和 。
- 地面实际标签(0或1)表示为 。
- 成本函数表示为 ,其中 是 logistic sigmoid 函数。
-
多类别逻辑回归的计算图:
- 输入节点表示个体样本 的每个特征值。
- 使用常量输入节点 ,权重与输入节点相关联,表示为 和 (对应每个类别)。
- 输出节点 ,通过 softmax 函数进行规范化。
- 成本函数表示为 ,其中 由 softmax 函数计算。
Fully-connected layers
The linear calculation to calculate from are named as fully-connected layer in neural networks.
The linear computation between x and y can be denoted as a matrix-vector multiplication
-
Sigmoid 层
- 在 1990 年代至 2000 年代是全连接层之间最流行的非线性函数之一。
- 可用作二进制分类的最后一层。
- 可以用于控制信息流通过另一个神经元。
-
Tanh 层
- 相较于 Sigmoid 函数,现在使用相对较少
-
ReLU 层
- 定义: 对于输入x,ReLU 函数输出 f(x)=max(0,x)。
- 特点: 当输入为正数时,输出等于输入;当输入为负数时,输出为零。
- 优点: 计算简单,不会对正数进行任何处理,有助于减轻梯度消失问题。
- 缺点: 当输入为负数时,梯度为零,可能导致神经元“死亡”(在训练中停止更新权重)
-
Leaky ReLU (带泄漏的线性整流单元):
- 定义: 对于输入x,Leaky ReLU 函数输出f(x)=max(αx,x),其中α是小于 1 的小正数,称为泄漏系数。
- 特点: 当输入为正数时,输出等于输入;当输入为负数时,输出为α倍的输入。
- 优点: 解决了 ReLU 的梯度为零问题,保留了负数的信息。
- 缺点: 引入了额外的超参数α。
-
PReLU (参数化线性整流单元):
- 定义: PReLU 是 Leaky ReLU 的扩展,它使用可学习的参数 α,对于输入x,PReLU 函数输出f(x)=max(αx,x),其中α是一个可学习的参数
- 特点: 类似于 Leaky ReLU,但α现在是一个可学习的参数。
- 优点: 可以通过训练来确定激活函数的形状,适应不同的数据。
- 缺点: 引入了更多的参数,可能需要更多的数据和计算。
-
Batch Normalization 层
- Forward:
- 输入:特征向量x, 在一个 mini-batch �B 中
- Training:
- 在训练中,通过计算每个 mini-batch 的均值和标准差进行归一化。使用指数移动平均来估计均值和方差。
- Testing:
- 在测试时,有三个选择:使用当前 mini-batch 的均值和方差、使用训练时的估计值、使用整个训练集的均值和方差。
- 优势:
- 网络训练更快
- 允许更高的学习率
- 更容易初始化权重
- 使更多的激活函数可行
- Forward:
-
Dropout层
-
Training:
- 输入:dropout比例
p,特征向量 - 输出:将比例
p的特征值在中随机置为零,得到
- 输入:dropout比例
-
Testing/Inference:
- 输入:dropout 比例
p,特征向量 - 输出:
- 输入:dropout 比例
-
注意:
- 一般用于全连接层,而非最顶层的全连接层。
- 在使用 Dropout 层时,训练误差可能会增加,但在小规模数据集上效果好。
-
-
MLP(多层感知器)
- 结构: 现代 MLP 通常由多个全连接层(fully-connected layers)组成。每个全连接层后面跟着一个 Batch Normalization(BN)层,然后是 PReLU 或 Leaky ReLU 这样的非线性激活层。这种结构的堆叠可以使网络学习更复杂的表示。
- Batch Normalization(BN)层: BN 用于在训练期间规范化每个全连接层的输入。这有助于缓解训练期间的梯度消失问题,并提高网络的稳定性和收敛速度。规范化是通过减去输入的均值并除以标准差来完成的。
- PReLU 或 Leaky ReLU 非线性层: 在全连接层之后,非线性激活函数被引入以引入网络的非线性性。这里提到了 PReLU(Parametric Rectified Linear Unit)和 Leaky ReLU,它们是 ReLU 的变体,允许在负数部分引入一些小的斜率,有助于缓解梯度消失问题。
- 特征归一化: 输入特征的每个维度都被规范化,这意味着对于每个特征,平均值被减去,然后除以标准差。这有助于提高训练的稳定性。
- 多层损失: 可以在网络的不同层引入多个损失函数。这可以用于多任务学习,其中网络需要同时优化多个任务。这些损失可以在整个网络中传播,或者只在顶层进行。
-
为什么需要神经网络
- 三层神经网络理论上可以逼近任何非线性函数,但如果函数非常复杂,则需要指数级增长的隐藏层神经元数量。使用深层结构,每层只需少量神经元就足以逼近所需函数。
Convolutional Neural Networks
-
Problems with fully connected networks
- The number of input values are generally quite large
- The number of weights grows substantially as the size of the input images
-
Locally Connected Neural Networks(局部连接神经网络)
- Sparse connectivity(稀疏的连通性)
- a hidden unit is only connected to a local patch
- 每个隐藏单元通过连接到局部区域,可以捕捉输入中的局部信息。这使得网络更容易学习到局部模式和特征。
- 多个这样的单元被铺瓦式地分布,以覆盖整个输入的视觉区域。
- Sparse connectivity(稀疏的连通性)
-
卷积神经网络(Convolutional Neural Networks, CNNs)中的权重共享(Shared weights)概念
- 共享权重可以极大地减少需要学习的参数数量。如果每个位置都有独立的权重,网络的参数量将会很庞大。平移不变性是指对于输入中的平移(位置变化)不敏感。在图像处理中,相似的结构可能出现在不同的位置,但它们对于任务的解决是相同的。通过共享权重,网络能够捕获在图像的不同位置上出现的相似特征,而不需要为每个位置学习独立的参数。
-
卷积网络的相关概念
-
填充(Padding):
- 在卷积神经网络中,填充是指在输入特征图的边缘周围添加额外的像素值(通常是零)。
- 填充的目的是确保输出特征图的空间尺寸与输入特征图相同。通常,填充大小选择为卷积核大小的一半(⌊s/2⌋和⌊t/2⌋表示在高度和宽度上的填充大小)。
-
步幅(Stride):
- 步幅定义了卷积核在输入特征图上滑动的步长。
- 如果步幅为1,卷积核每次滑动一个像素;如果步幅为2,卷积核每次滑动2个像素,以此类推。
- 大步幅卷积会导致输出特征图尺寸缩小,因为卷积核的相对移动更迅速。
-
扩张(Dilation):
- 扩张卷积是一种在卷积核内引入间隔的方法,通过增加卷积核中相邻权重之间的距离来扩大感受野。
- 扩张卷积有助于捕获更大范围的上下文信息,而不增加参数的数量。
-
反卷积(Deconvolution):
- 反卷积,有时也称为转置卷积,是一种将输入特征图的空间尺寸增加的操作。
- 在某些情况下,为了还原或增加特征图的空间分辨率,可以使用反卷积操作。这可以用于上采样。
-
-
给定输入特征图(feature map)的大小 Lin = [P, Q],以及卷积的相关参数(padding、dilation、kernel size、stride),计算输出特征图的大小 Lout
- padding 是填充大小。
- dilation 是膨胀率。
- kernel size 是卷积核的大小。
- stride 是步幅。
-
感受野 The receptive field of a feature can be briefly defined as the region in the input image pixel space that the feature is calculated from
- Calculation
- rin: the current receptive field
- j (jump): the distance between two adjacent features
- k, p, s: kernel size, padding size, and stride size
- Calculation
-
Pooling 池化
- 操作方式:
- 通常使用固定大小的池化窗口,比如 2×22×2。
- 池化窗口在输入特征图上滑动,每次选取窗口中的最大值作为输出。
- 步幅(Stride) :
- 池化窗口的移动步幅通常设定为池化窗口大小,以确保不重叠。
- 独立通道操作:
- 对每个输入通道(channel)独立进行池化操作。
- 尺寸计算:
- 输入特征图大小为,其中P和Q是空间维度,C是通道数。
- 输出特征图大小为,假设使用的是 2×2的最大池化。
- 操作方式:
-
Partial Convolution
Partial Convolution 是一种用于图像修复(image inpainting)任务的卷积操作,其目标是填充输入图像中的空洞。Partial Convolution 的核心思想是,如果当前卷积窗口中至少有一个有效的输入值(即二值掩模中至少有一个非零元素),那么输出值将根据有效输入进行计算;否则,输出值将为零。
x and m denote feature (or pixel) values for the current convolution window and the corresponding binary mask, respectively;x′ is the output feature value
CNN Architectures for Image Understanding
-
Overfeat
OverFeat是一种用于图像分类、目标检测和定位的深度学习模型架构。OverFeat采用了滑动窗口的方法,即在不同位置尺度上滑动小窗口并使用CNN提取特征,从而实现对整个图像的全局理解。
-
Deep Residual Learning 深度残差学习 残差块包含了一个跳跃连接(skip connection),将输入添加到网络的输出,形成残差。这样,网络可以通过学习残差来逐渐调整权重,而不是直接学习完整的映射。这使得网络可以更轻松地训练非常深的层次,减轻了梯度消失的问题。