0%

实用ML_8.深度神经网络

深度学习模型设计模式

随着深度学习的不断发展,各式各样包括bert、transformer在内的深度神经网络架构层出不穷,在这些不同的网络架构中往往包含一些通用的深度网络设计模式,主要理解三种:

  1. batch/layer normalization
  2. 残差
  3. 注意力机制

Normalization

Batch Normalization

对输入的一个batch进行标准化处理(减均值,除以方差),能够有效的降低深度网络的学习难度

  • l从梯度角度理解,当从x->y的梯度变化 $\beta$ 变化较大时,梯度下降时沿着x点梯度移动,学习会出现偏差(斜率替代每个点的导数,如果导数变化过大,沿着斜率走就会偏离函数图像)
  • 对于分布变化较大的数据要采用较小的学习率,否则就需要通过Batch Normalization对输入进行平滑化(smooth)
  • 只对线性方法起作用,深度神经不起作用

批量归一化的主要步骤:

  1. 首先将输入转化为2D形式数据

  2. 标准化

  3. 还原

    • $\beta_j $ $\gamma_j$两个参数神经网络学习决定
    • 形式上理解为 由模型通过学习决定是否真的需要normalization
  4. 转换为输入形状,输出

实现代码如下

  1. 训练过程中 并不保留所有batch的均值和方差平均值 供预测使用

  2. 每次使用动量更新一个新的moving_var,moving_mean在预测中使用

完整代码:

Layer Normalization

BN在batch上做归一化,LN在样本上做归一化

由于RNN循环计算特性,不同时间步类似于不同的batch,均值和方差变化较大,无法共享使用(若输入长度为10,需要维护10个不同时间步的均值和方差,当预测长度为20时,后10个时间步在训练过程中没有均值和方差)

相较于Batch Normalization,将时间步看作为batch维度,reshape维度改变,其他操作不同

More Normalization

总结

  • Normalization的主要目的是为了 使目标函数平滑化,降低模型学习难度(即可以使用更大的学习率)
  • 一般步骤包括
    • reshape
    • normalization
    • recovery

注意力机制

残差