xy0v0's Blog

xy0v0's Blog

交大荣昶笔记#1 | DL & Neuro Network 基础

2025-08-02

Neural Network

  • 神经网络基本单位:神经元
  • 权重(weight):调节权重可控制重视某一特征或忽视某一特征输入
\sum (w_ix_i+b)

其中b为bias(偏置量)
以上为线性变换步骤,运算结果传入激活函数 ​f

激活函数

  • Sigmoid
(z)=\frac{1}{1+e^{(-z)}}

函数关于 ​(0,0.5) 中心对称,值域[0,1]
用于二分类计算激活函数
多用于输出层,少用于隐藏层

  • ReLU
(z)=\max(0,z)

常用于隐藏层,计算速度快,方便求导

  • Softmax
    用于多分类问题的输出层,将输出转换为概率分布(要求 ​\sum y_i = 1 )
sigma (z_i)=\frac{e^{z_i}}{\sum_{j=1}^n e^{z_j}}

特点:

  • 可处理任意实数输入(包括负值与0)
  • 输出值域在[0,1]之间
  • 所有输出之和为1
  • 指数运算会放大输入之间的差异
  • 计算代价相对较高

前馈传播

  • 神经元的表达:​x_i^{(n)} 其中n为层数
  • 权重表达:​w_{ij}^{(n)}
  • 使用矩阵记录一层的权重和bias
  • 矩阵乘法表达:
    \begin{bmatrix} x_1^{(n+1)} \\ x_2^{(n+1)} \\ \vdots \\ x_m^{(n+1)} \end{bmatrix} = \begin{bmatrix} w_{11}^{(n)} & w_{12}^{(n)} & \cdots & w_{1k}^{(n)} \\ w_{21}^{(n)} & w_{22}^{(n)} & \cdots & w_{2k}^{(n)} \\ \vdots & \vdots & \ddots & \vdots \\ w_{m1}^{(n)} & w_{m2}^{(n)} & \cdots & w_{mk}^{(n)} \end{bmatrix} \begin{bmatrix} x_1^{(n)} \\ x_2^{(n)} \\ \vdots \\ x_k^{(n)} \end{bmatrix} + \begin{bmatrix} b_1^{(n)} \\ b_2^{(n)} \\ \vdots \\ b_m^{(n)} \end{bmatrix}
  • 使用矩阵乘法:优化时空 (分治)

反向传播

例子(花卉识别(二分类))

  • 输入: 花瓣长度,花瓣宽度,花萼长度,花萼宽度

  • 输出: 是否为玫瑰花(0/1)

  • 输入矩阵:略

  • 标签矩阵:

    Y = \begin{bmatrix} 1 & 0 \\ 1 & 0 \\ 0 & 1 \\ 0 & 1 \end{bmatrix}

    其中第一列表示玫瑰花,第二列表示鸢尾花

  • 标签: One-Hot,记为 ​\hat{y}_i

  • Loss: 预测结果与标签的差异

  • 1/2均方差:

L = \frac{1}{2}\sum_{i=1}^n(y_i - \hat{y}_i)^2
  • 交叉熵:
L = -\frac1n\sum_{i=1}^n (\hat{y}_i\log(y_i)+(1-\hat{y}_i)\log(1-y_i))
  • 信息熵:事件的信息量和事件的概率有关,定义事件 ​X=x的信息量为 ​-\log(p(x))

例如:

  • 对于第一个样本(玫瑰花):

    • ​\hat{y}_1 = 1, \hat{y}_2 = 0
    • ​y_1 = 0.8, y_2 = 0.2
    • ​L = -(1 \cdot \log(0.8) + 0 \cdot \log(0.2)) = -\log(0.8) \approx 0.223
  • 对于第三个样本(鸢尾花):

    • ​\hat{y}_1 = 0, \hat{y}_2 = 1
    • ​y_1 = 0.3, y_2 = 0.7
    • ​L = -(0 \cdot \log(0.3) + 1 \cdot \log(0.7)) = -\log(0.7) \approx 0.357

总的Loss:
​L = \frac{1}{4}(0.223 + ... + 0.357) \approx 0.29

我们希望信息量越小越好,信息量越小代表发生概率越大。比如:

  • 当预测正确时(如预测玫瑰花为玫瑰花),预测概率越接近1,信息量越小,Loss也就越小
  • 当预测错误时(如预测玫瑰花为鸢尾花),预测概率接近0,信息量大,Loss也就越大
  • 通过最小化Loss,我们就能让模型学会对正确类别给出高概率预测

梯度下降

梯度下降可用于找到损失函数的局部最优

w_{t+1} = w_t - \alpha \nabla L(w_t) \\ \nabla L(w_t) = \frac{\partial L}{\partial w_t}

其中 ​\alpha 为学习率(步长)

容易陷入局部最优/卡在斜率为0的非极值点 -- 解决:使用优化器

小批量梯度下降 Mini-Batch GD

迭代速度比批量梯度下降(BGD)快,精度比随机梯度下降高

  • 每次使用一个batch,批量运算
  • 每个batch的样本数量称为batch_size
  • batch_size越大,梯度估计越准确,但计算量也越大
  • batch_size越小,梯度估计越不准确,但迭代速度快

欠拟合/过拟合

  • 欠拟合:模型弱/训练次数太少
  • 过拟合:数据类型单一

CNN

用于处理大型图像,可维持空间特征

  • 输入:RGB三通道按像素输入(大多情况)

  • 卷积核:可理解为全连接神经网络中的神经元,只会和局部信息进行连接

    • 类似滑动窗口,在图片上滑动计算点积,得到feature map
    • 不同的卷积核可用于提取不同的图像特征
    • 由于图片有三个通道,具有深度,因此卷积核也需要具有深度,且卷积核深度必须与输入图片深度相同
      例如: 32x32x3的输入图片经过5x5x3的卷积核计算后得到的feature map为28x28x1
      经过多个kernel运算后若干个kernel的深度堆叠,在上述的例子中,加入存在​N个卷积核,最后得到​N个不同feature map,堆叠feature map后得到的activation map为28x28x ​N ,作为下一次的输入特征图
  • 步幅:滑动的步长

  • padding: 周围单元补0,扩大输入尺寸

池化层

特征压缩,将feature map划分为几个区域,取其最大值/mean,得到新的维度较小的特征

往往只改变size,不改变深度

经过若干步后,最终丢到全连接神经网络中进行分类

计算公式

卷积层输出尺寸计算

输入图片大小为 ​H \times W, 卷积核大小为 ​K \times K, 步长为 ​S, padding为 ​P

输出尺寸计算公式:

H_{out} = \lfloor \frac{H + 2P - K}{S} + 1 \rfloor \\ W_{out} = \lfloor \frac{W + 2P - K}{S} + 1 \rfloor

池化层输出尺寸计算

池化窗口大小为 ​K \times K, 步长为 ​S

输出尺寸计算公式:

H_{out} = \lfloor \frac{H - K}{S} + 1 \rfloor \\ W_{out} = \lfloor \frac{W - K}{S} + 1 \rfloor

注意:

  • 池化层通常不使用padding
  • 卷积层和池化层都不改变通道数(深度)