一、批归一化和残差网络

1.批归一化

  • BN是由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中“梯度弥散”的问题,从而使得训练深层网络模型更加容易和稳定。所以目前BN已经成为几乎所有卷积神经网络的标配技巧了。
  • 从字面意思看来Batch Normalization是对每一批数据进行归一化,确实如此,对于训练中某一个batch的数据{x1,x2,…,xn},注意这个数据是可以输入也可以是网络中间的某一层输出在BN出现之前,我们的归一化操作一般都在数据输入层,对输入的数据进行求均值以及求方差做归一化,但是BN的出现打破了这一个规定,我们可以在网络中任意一层进行归一化处理,因为我们现在所用的优化方法大多都是mini-batch SGD,所以我们的归一化操作就成为Batch Normalization。

2.预测时的批量归一化

  • 训练:以batch为单位,对每个batch计算均值和方差。
  • 预测:用移动平均估算整个训练数据集的样本均值和方差。

3.ResNet和DenseNet

python 做归一化处理代码 batch归一化_深度学习

  • ResNet:加号连接(保证A和B输出形状一样)
  • DenseNet:concat(A和B通道数相加)
  • 输出通道数=输入通道数+卷积层个数*卷积输出通道数
二、凸优化

1.尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到
的目标与深度学习的目标并不相同。

  • 优化方法目标:训练集损失函数值
  • 深度学习目标:测试集损失函数值(泛化性)

2.凸性

python 做归一化处理代码 batch归一化_归一化_02

  • 凸集合:连线两点都在集合内(第一行)
  • 凸集合的交集仍然是凸集合(第二行)
  • 凸集合的并集不一定是凸集合(第三行)

3.凸函数

python 做归一化处理代码 batch归一化_python 做归一化处理代码_03

  • 凸函数:第一个图A点大于B点,同理第三个图也是凸函数,第二个图不是

4.Jensen 不等式:函数值的期望大于期望的函数值

5.鞍点是对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点