Deep Learning Concept Review

103 阅读1分钟

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
螢幕截圖 2023-12-09 下午8.40.57.png

Introduction of Machine Learning

  • Linearly separable features 线性可分特征
    • A linear classifier (decision boundary) that correctly classifies all training samples
螢幕截圖 2023-12-14 下午8.22.22.png
  • Model Capacity
    模型(或称为学习器)的容量是指学习器从一组函数中发现函数的能力。例如:

    • 线性预测器:y=wx+by=wx+b
    • 二次预测器:y=w2x2+w1x+by=w_{2}x^{2}+w_{1}x+b
    • 十次多项式预测器:y=b+i=110wixiy=b+\sum_{i=1}^{10}w_{i}x^{i}

    Capacity can be measured by the number of training examples {x(i),y(i)x^{(i)},y^{(i)}} that the learner could always fit, no matter how to change the values of x(i)x^{(i)} and y(i)y^{(i)}.

  • 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泛化: 指模型正确分类与用于训练的样本不同的新样本的能力。当模型过于复杂时,会导致决策边界变得复杂。虽然这种情况下模型在训练样本上能够完美分类,但在新的样本上可能表现不佳。 螢幕截圖 2023-12-14 下午3.57.42.png
  • Optimal capacity 最优容量

    最优容量是指模型容量的理想水平,以实现对训练数据的良好拟合和对未见过的新数据的良好泛化。

    通常,容量与训练误差和泛化(或测试)误差之间存在一种典型的关系。随着容量的增加,训练误差可以降低,但乐观估计(训练误差和泛化误差之间的差异)会增加。在某一点上,乐观估计的增加大于训练误差的减少(通常是在训练误差很低且不能进一步降低的情况下),这时我们进入了过拟合的状态,容量过大,超过了最优容量。在达到最优容量之前,我们处于欠拟合的状态。

    螢幕截圖 2023-12-14 下午4.02.04.png
  • Training Cycle

    螢幕截圖 2023-12-14 下午4.08.34.png
  • Design Cycle

    螢幕截圖 2023-12-14 下午4.09.30.png
  • Machine Learning Systems

    • Feature Extraction(特征提取):
      • 特征提取: 特征提取是将原始数据转换为更有用、更易于处理的形式的过程。这可能包括选择、转换或创建新的特征,以更好地表示数据。
      a. 判别性特征: 在特征提取中,我们寻找那些能够在分类任务中具有判别性的特征,能够有效区分不同类别的样本。
      b. 对某些变换具有不变性的特征: 特征应该在面对某些变换时能够保持不变,以提高模型的鲁棒性。
      c. 少量特征: 特征提取的目标之一是将原始数据表示为一个维度较小的特征集,以降低计算成本、提高模型效率,并有助于防止过拟合。
      
    • lassifier/Regressor(分类器/回归器):
      • 分类器/回归器: 这是用于根据输入数据预测其所属类别或输出数值的模型。
      a. 在训练集上分类错误与模型复杂性的权衡: 在模型设计中需要平衡在训练集上的分类错误和模型的复杂性。
      b. 决定分类器的形式: 这涉及选择适当的分类器类型,以适应特定问题的需求。
      c. 通过训练调整分类器参数: 使用训练数据,对分类器的参数进行调整,以提高性能。
      
    • Post-processing(后处理):
      • 后处理: 在模型输出后,可以考虑进行后处理,根据误分类的成本或风险来调整分类器的输出。
      a. 风险: 由于误将不同类别的样本误分类可能导致不同的代价,因此在后处理中需要考虑风险。
      b. 先验: 利用关于问题的先验知识,例如,一个样本更有可能属于与其之前相同的类别。
      c. 整合多个分类器: 这也可以包括整合多个分类器的输出,以提高整体性能。这种集成可以基于不同的特征集。
      

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
螢幕截圖 2023-12-14 下午8.49.38.png
  • Linear Regression
    • Suppose yy is a linear function of feature vectors y=[x1,x2]Ty=[x_{1},x_{2}]^{T}
      y=h(x)=θ0+θ1x1+...θnxn=i=0nθixi=θTxy=h(x)=\theta_{0}+\theta_{1}x_{1}+...\theta_{n}x_{n}=\sum_{i=0}^{n}\theta_{i}x_{i}=\theta^{T}x
    • θ=[θ0,...,θn]T\theta=[\theta_{0}, ..., \theta_{n}]^{T}are parameters(weights) for learning
    • Given the training set, we want to make h(x)=θTxh(x)=\theta^{T}x close to yy in the training set as much as possible.
    • Cost Function: 线性回归中,我们的目标是学习一组参数,使得模型的预测值尽可能地接近实际观测值。成本函数用于量化这种接近程度。
      • 线性回归的成本函数通常是均方误差(Mean Squared Error,MSE)
      • minθJ(θ)=12i=1m(h(x(i))y(i))2min_{\theta}J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}
      • 当训练样本数量m大于特征数量n时,使用均方误差(MSE)作为成本函数, 被称为普通最小二乘(Ordinary Least Squares,OLS)问题。
  • 梯度下降算法(Gradient Descent Algorithm)
    • Initial guess: 初始猜测的参数,迭代地改变θ以使J(θ)更小
    • 梯度下降算法通过迭代来调整参数θj\theta_{j}以使成本函数最小化; 每次迭代都会计算成本函数关于参数的梯度,然后按照梯度的方向调整参数。
    • 梯度下降更新规则:
      • For iteration k=1,2,3... and j=1,2,3...
      • θj:=θjαθjJ(θ)\theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial\theta_{j}}J(\theta)
    • 重复进行迭代,对每个参数进行更新,直到满足停止条件
    • 算法会在达到预定的迭代次数(k达到足够大)或者梯度的范数θJ(θ)||\nabla_{\theta}J(\theta)||达到足够小的情况下终止。这表示算法已经收敛到一个局部最小值或者鞍点。
    • α\alpha被称作learning rate (step size), θJ(θ)\nabla_{\theta}J(\theta)被称作negative gradient direction。
      符号 ∇在数学中表示“梯度”(Gradient)运算符。它用于表示一个多元函数在某一点的梯度。梯度是一个向量,其方向指向函数在该点增加最快的方向,而大小表示增加的速率。
      

螢幕截圖 2023-12-14 下午10.05.40.png

  • Matrix Claculus矩阵微积分

    • 函数f关于矩阵A的梯度
    Af(A)=[fA11fA12fA1nfA21fA22fA2nfAm1fAm2fAmn]\nabla_A f(A) = \begin{bmatrix} \frac{\partial f}{\partial A_{11}} & \frac{\partial f}{\partial A_{12}} & \cdots & \frac{\partial f}{\partial A_{1n}} \\ \frac{\partial f}{\partial A_{21}} & \frac{\partial f}{\partial A_{22}} & \cdots & \frac{\partial f}{\partial A_{2n}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f}{\partial A_{m1}} & \frac{\partial f}{\partial A_{m2}} & \cdots & \frac{\partial f}{\partial A_{mn}} \\ \end{bmatrix}
    • 向量f关于矩阵A的梯度
      • x(f(x)+g(x))=xf(x)+xg(x)\nabla_{x}(f(x)+g(x))=\nabla_{x}f(x)+\nabla_{x}g(x)
      • For tRt\in R, x(tf(x))=txf(x)\nabla_{x}(tf(x))=t\nabla_{x}f(x)
    xf(x)=[fx1fx2fxn]\nabla_x f(x) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \\ \end{bmatrix}
  • 随机梯度下降(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:h(x)=g(θTx)=11+eθTxh(x)=g(\theta^{T}x)=\frac{1}{1+e^{-\theta^{T}x}}, where g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}, g(z) is called logistic function.
    • When zz\rightarrow \infty, g(z)1g(z)\rightarrow 1; When zz\rightarrow -\infty, g(z)1g(z)\rightarrow 1.
    螢幕截圖 2023-12-15 上午12.00.43.png
    • sigmoid 函数的导数: ddzg(z)=g(z)(1g(z))\frac{d}{dz} g(z) = g(z) \cdot (1 - g(z)); sigmoid函数的导数易于计算。这在后续的梯度下降等优化算法中是有用的。
    • 概率建模:
      • y=1时: P(y=1x;θ)=h(x)P(y=1|x;\theta) = h(x)
      • y=0时: P(y=0x;θ)=1h(x)P(y=0|x;\theta) = 1 - h(x)
    • 单个训练样本的表达式:
      • p(yx;θ)=(h(x))y(1h(x))1yp(y|x;\theta) = (h(x))^y \cdot (1 - h(x))^{1-y}

Neural Networks

Computational graph of linear models

计算图实际上是在描述一个模型的结构,其中节点表示变量或操作,边表示数据流和计算流。

  • 线性模型的计算图:

    • 输入节点表示个体特征向量 xx 的每个特征值 x1,x2,...,xnx_1, x_2, ..., x_n
    • 使用常量输入节点 x0=1x_0 = 1,权重与输入节点相关联,表示为 w1,w2,...,wnw_1, w_2, ..., w_nbb
    • 地面实际标签标示为 y^\hat{y}
    • 成本函数表示为 J(w1,...,wn,b)=yy^22J(w_1, ..., w_n, b) = \lVert y - \hat{y} \rVert^2_2
    螢幕截圖 2023-12-15 上午12.26.09.png
  • 逻辑回归的计算图:

    • 输入节点表示个体样本 x=x1,x2,...,xnx = {x_1, x_2, ..., x_n} 的每个特征值。
    • 使用常量输入节点 x0=1x_0 = 1,权重与输入节点相关联,表示为 w1,w2,...,wnw_1, w_2, ..., w_nbb
    • 地面实际标签(0或1)表示为 y^\hat{y}
    • 成本函数表示为 J(w1,...,wn,b)=y^log(σ(y))(1y^)log(1σ(y))J(w_1, ..., w_n, b) = -\hat{y}\log(\sigma(y)) - (1 - \hat{y})\log(1 - \sigma(y)),其中 σ(y)\sigma(y) 是 logistic sigmoid 函数。
    螢幕截圖 2023-12-15 上午12.27.14.png
  • 多类别逻辑回归的计算图:

    • 输入节点表示个体样本 x=x1,x2,...,xnx = {x_1, x_2, ..., x_n} 的每个特征值。
    • 使用常量输入节点 x0=1x_0 = 1,权重与输入节点相关联,表示为 wijw_{ij}bjb_j(对应每个类别)。
    • 输出节点 y1,y2,...,yCy_1, y_2, ..., y_C,通过 softmax 函数进行规范化。
    • 成本函数表示为 J(W,b)=i=1Cy^ilog(pi)J(W, b) = -\sum_{i=1}^C \hat{y}_i \log(p_i),其中 pip_i 由 softmax 函数计算。
    螢幕截圖 2023-12-15 上午12.36.11.png

Fully-connected layers

The linear calculation to calculate y1,y2,,yCy_{1},y_{2},···,y_{C} from x1,x2,,xnx_{1},x_{2},···,x_{n} are named as fully-connected layer in neural networks.

The linear computation between x and y can be denoted as a matrix-vector multiplication y=Wx+by = Wx + b

螢幕截圖 2023-12-15 上午9.07.47.png
  • 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 的均值和方差、使用训练时的估计值、使用整个训练集的均值和方差。
    • 优势:
      • 网络训练更快
      • 允许更高的学习率
      • 更容易初始化权重
      • 使更多的激活函数可行
  • Dropout层

    • Training:

      • 输入:dropout比例p,特征向量z=[z1,z2,...,zn]z=[z_{1},z_{2},...,z_{n}]
      • 输出:将比例p的特征值在zz中随机置为零,得到yy
    • Testing/Inference:

      • 输入:dropout 比例p,特征向量z=[z1,z2,...,zn]z=[z_{1},z_{2},...,z_{n}]
      • 输出:pz1,pz2,...,pznpz_{1}, pz_{2},...,pz_{n}
    • 注意:

      • 一般用于全连接层,而非最顶层的全连接层。
      • 在使用 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
    • 每个隐藏单元通过连接到局部区域,可以捕捉输入中的局部信息。这使得网络更容易学习到局部模式和特征。
    • 多个这样的单元被铺瓦式地分布,以覆盖整个输入的视觉区域。
  • 卷积神经网络(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

    • Lout=Lin+2×paddingdilation×(kernel size1)1stride+1L_{out} = \frac{{L_{in} + 2 \times \text{{padding}} - \text{{dilation}} \times (\text{{kernel size}} - 1) - 1}}{stride} + 1
    • 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
      • jout=jin×sj_{out} = j_{in} × s
      • rout=rin+(k1)×jinr_{out} =r_{in} +(k−1)×j_{in}
      • rin: the current receptive field
      • j (jump): the distance between two adjacent features
      • k, p, s: kernel size, padding size, and stride size
  • Pooling 池化

    • 操作方式
      • 通常使用固定大小的池化窗口,比如 2×22×2。
      • 池化窗口在输入特征图上滑动,每次选取窗口中的最大值作为输出。
    • 步幅(Stride)
      • 池化窗口的移动步幅通常设定为池化窗口大小,以确保不重叠。
    • 独立通道操作
      • 对每个输入通道(channel)独立进行池化操作。
    • 尺寸计算
      • 输入特征图大小为P×Q×CP \times Q \times C,其中P和Q是空间维度,C是通道数。
      • 输出特征图大小为P2×Q2×C\frac{P}{2} \times\frac{Q}{2}\times C,假设使用的是 2×2的最大池化。
      螢幕截圖 2023-12-15 上午10.45.45.png
  • Partial Convolution

    Partial Convolution 是一种用于图像修复(image inpainting)任务的卷积操作,其目标是填充输入图像中的空洞。Partial Convolution 的核心思想是,如果当前卷积窗口中至少有一个有效的输入值(即二值掩模中至少有一个非零元素),那么输出值将根据有效输入进行计算;否则,输出值将为零。

    x={ixiwi+bi1,if imi>00,otherwisex' = \begin{cases} \frac{\sum_{i}^{ } x_iw_i + b}{\sum_{i}^{ } 1}, & \text{if } \sum_{i}^{ } m_i > 0 \\ 0, & \text{otherwise} \end{cases}

    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),将输入添加到网络的输出,形成残差。这样,网络可以通过学习残差来逐渐调整权重,而不是直接学习完整的映射。这使得网络可以更轻松地训练非常深的层次,减轻了梯度消失的问题。

    螢幕截圖 2023-12-15 上午11.08.39.png