深度学习图像算法工程师--面试准备(2)

深度学习面试准备

深度学习图像算法工程师--面试准备(1)
深度学习图像算法工程师--面试准备(2)


文章目录

  • 深度学习面试准备
  • 前言
  • [一、Batch Normalization(批归一化)](#一、Batch Normalization(批归一化))
    • [1.1 具体步骤](#1.1 具体步骤)
    • [1.2 BN一般用在网络的哪个部分](#1.2 BN一般用在网络的哪个部分)
  • [二、Layer Normalization(层归一化)](#二、Layer Normalization(层归一化))
  • [三、 Internal Covariate Shift](#三、 Internal Covariate Shift)
  • 总结

前言

参考文章


一、Batch Normalization(批归一化)

  • BatchNormalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。
  • 使得每层网络的输入都服从(0,1)0均值,1方差分布,如果不进行BN,那么每次输入的数据分布不一致,网络训练精度自然也受影响。
  • 在Batch中进行 Normalization 计算,其实就是在每个通道进行一次计算,即计算范围是 [Batch, 1, Height,Width],计算次数是 Channel。

1.1 具体步骤

  1. 计算样本均值。
  2. 计算样本方差。
  3. 样本数据标准化处理。
  4. 进行平移和缩放处理。引入了γ和β两个参数。来训练γ和β两个参数。引入了这个可学习重构参数γ、β,让我们的网络可以学习恢复出原始网络所要学习的特征分布。

1.2 BN一般用在网络的哪个部分

先卷积再激活做BN

Conv+BN+Relu

Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理。

二、Layer Normalization(层归一化)

LN和BN不同,LN是根据样本的特征数来做归一化的,完全独立于batch size。在一个Layer中进行计算,可以理解是一个样本中进行Normalization,即计算范围是 [1, Channel, Height, Width],计算次数是 Batch。

常应用于循环神经网络(RNN)等结构,以解决对于不定长度序列的输入数据的归一化问题。

三、 Internal Covariate Shift

Internal Covariate Shift(内部协变量转移)是指神经网络在训练过程中每一层输入数据分布的变化,即随着网络参数的更新,每一层的输入数据的分布也会发生变化。这种内部协变量转移可能会导致训练过程变得更加困难,因为每一层都需要适应不断变化的输入数据分布。

Internal Covariate Shift 的问题在于,当神经网络每一层的输入数据的分布发生变化时,之前学习到的权重可能就不再适用,这会导致训练过程变得不稳定,需要更小的学习率和更仔细的调参来收敛。同时,由于每一层的输入数据分布的变化,网络可能需要更多的训练样本才能学到有效的表示。

为了解决 Internal Covariate Shift 的问题,批量归一化(Batch Normalization)被引入到神经网络中。批量归一化通过对每一层的输入数据进行归一化,使得每层的输入数据分布保持稳定,有助于加速训练过程、提高模型的泛化能力,并且减少对初始权重的依赖。


总结

  • BN的优点:

  • 可以解决"Internal Covariate Shift"

  • 解决梯度消失的问题(针对sigmoid),加快收敛速度。

  • 对初始权重不那么敏感:BN 使得网络对初始权重的选择不那么敏感,减少了调参的困难。

  • BN的缺点:

  1. 计算代价:BN 需要额外的计算量来计算均值和方差,可能会增加训练时间。
  2. 不适用于小批量数据:在小批量数据上表现可能不稳定,因为均值和方差的估计可能不准确。
  • LN的优点:
  1. 不依赖于batch size。
  2. 适用于RNN;
  • LN的缺点:
  1. 不适用于CNN。
  2. 针对具有多个连续特征的数据,进行特征之间的缩放,可能会导致量纲差异消失。
  3. 局部归一化:LN 是在每个样本中所有特征的维度上进行归一化,可能会丢失通道间的信息,不够全局。
  4. 缓慢的收敛速度:相对于 BN,LN 可能导致收敛速度较慢,需要更多的训练时间。
相关推荐
网易独家音乐人Mike Zhou2 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
小陈phd2 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao3 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
Swift社区6 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Kent_J_Truman6 小时前
greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用
算法
IT 青年7 小时前
数据结构 (1)基本概念和术语
数据结构·算法
ZHOU_WUYI7 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
Dong雨7 小时前
力扣hot100-->栈/单调栈
算法·leetcode·职场和发展
如若1237 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
SoraLuna7 小时前
「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
开发语言·算法·macos·cangjie