动手学深度学习(六)

批量归一化和残差网络;

凸优化;

梯度下降

批量归一化(BatchNormalization)

对输入的标准化(浅层模型)

处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。
标准化处理输入数据使各个特征的分布相近

批量归一化(深度模型)

利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。

1.对全连接层做批量归一化

位置:全连接层中的仿射变换和**函数之间。
全连接:
x=Wu+boutput=ϕ(x) \boldsymbol{x} = \boldsymbol{W\boldsymbol{u} + \boldsymbol{b}} \\ output =\phi(\boldsymbol{x})

批量归一化:
output=ϕ(BN(x)) output=\phi(\text{BN}(\boldsymbol{x}))

y(i)=BN(x(i)) \boldsymbol{y}^{(i)} = \text{BN}(\boldsymbol{x}^{(i)})

μB1mi=1mx(i), \boldsymbol{\mu}_\mathcal{B} \leftarrow \frac{1}{m}\sum_{i = 1}^{m} \boldsymbol{x}^{(i)},
σB21mi=1m(x(i)μB)2, \boldsymbol{\sigma}_\mathcal{B}^2 \leftarrow \frac{1}{m} \sum_{i=1}^{m}(\boldsymbol{x}^{(i)} - \boldsymbol{\mu}_\mathcal{B})^2,

x^(i)x(i)μBσB2+ϵ, \hat{\boldsymbol{x}}^{(i)} \leftarrow \frac{\boldsymbol{x}^{(i)} - \boldsymbol{\mu}_\mathcal{B}}{\sqrt{\boldsymbol{\sigma}_\mathcal{B}^2 + \epsilon}},

这⾥ϵ > 0是个很小的常数,保证分母大于0

y(i)γx^(i)+β. {\boldsymbol{y}}^{(i)} \leftarrow \boldsymbol{\gamma} \odot \hat{\boldsymbol{x}}^{(i)} + \boldsymbol{\beta}.

引入可学习参数:拉伸参数γ和偏移参数β。若γ=σB2+ϵ\boldsymbol{\gamma} = \sqrt{\boldsymbol{\sigma}_\mathcal{B}^2 + \epsilon}β=μB\boldsymbol{\beta} = \boldsymbol{\mu}_\mathcal{B},批量归一化无效。

2.对卷积层做批量归⼀化

位置:卷积计算之后、应⽤**函数之前。
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。
计算:对单通道,batchsize=m,卷积计算输出=pxq
对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。

3.预测时的批量归⼀化

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

残差网络(ResNet)

深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。

残差块(Residual Block)

恒等映射:
左边:f(x)=x
右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)

动手学深度学习(六)

在残差块中,输⼊可通过跨层的数据线路更快 地向前传播。

ResNet模型

卷积(64,7x7,3)
批量一体化
最大池化(3x3,2)

残差块x4 (通过步幅为2的残差块在每个模块之间减小高和宽)

全局平均池化

全连接

稠密连接网络(DenseNet)

动手学深度学习(六)

###主要构建模块:
稠密块(dense block): 定义了输入和输出是如何连结的。
过渡层(transition layer):用来控制通道数,使之不过大。

稠密块

过渡层

1×11\times1卷积层:来减小通道数
步幅为2的平均池化层:减半高和宽

优化与估计

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

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

优化在深度学习中的挑战

  1. 局部最小值
  2. 鞍点
  3. 梯度消失

凸性 (Convexity)

动手学深度学习(六)
动手学深度学习(六)
动手学深度学习(六)

Jensen 不等式

iαif(xi)f(iαixi) and Ex[f(x)]f(Ex[x]) \sum_{i} \alpha_{i} f\left(x_{i}\right) \geq f\left(\sum_{i} \alpha_{i} x_{i}\right) \text { and } E_{x}[f(x)] \geq f\left(E_{x}[x]\right)

性质

  1. 无局部极小值
  2. 与凸集的关系
  3. 二阶条件

限制条件

拉格朗日乘子法

Boyd & Vandenberghe, 2004

惩罚项

投影

梯度下降

Boyd & Vandenberghe, 2004

一维梯度下降

多维梯度下降

自适应方法

牛顿法

预处理 (Heissan阵辅助梯度下降)

梯度下降与线性搜索(共轭梯度法)

随机梯度下降

随机梯度下降参数更新

对于有 nn 个样本对训练数据集,设 fi(x)f_i(x) 是第 ii 个样本的损失函数, 则目标函数为:

f(x)=1ni=1nfi(x) f(\mathbf{x})=\frac{1}{n} \sum_{i=1}^{n} f_{i}(\mathbf{x})

其梯度为:

f(x)=1ni=1nfi(x) \nabla f(\mathbf{x})=\frac{1}{n} \sum_{i=1}^{n} \nabla f_{i}(\mathbf{x})

使用该梯度的一次更新的时间复杂度为 O(n)\mathcal{O}(n)

随机梯度下降更新公式 O(1)\mathcal{O}(1):

xxηfi(x) \mathbf{x} \leftarrow \mathbf{x}-\eta \nabla f_{i}(\mathbf{x})

且有:

Eifi(x)=1ni=1nfi(x)=f(x) \mathbb{E}_{i} \nabla f_{i}(\mathbf{x})=\frac{1}{n} \sum_{i=1}^{n} \nabla f_{i}(\mathbf{x})=\nabla f(\mathbf{x})

小批量随机梯度下降