深度学习tricks

报告中常听到的tricks做个了断。

Dropout

$r$ 为概率向量,为 0 或者 1

Batch Normalization

$m$ 指的是mini-batch的size

CART剪枝

剪枝前的损失函数,$|T|$ 表示模型复杂度,$\alpha$ 逐渐增大,剪枝过程中$|T|$ 不断变小,当 $\alpha$ 足够大时,模型停止剪枝

$g(t)$ 表示剪枝后整体损失函数减少的程度,是对决策树各个节点是否需要被剪枝的一种度量。

对于同一棵树的结点,$\alpha$ 都是一样的,当 $\alpha$ 从 0 开始缓慢增大,总会有某棵子树该剪,其他子树不该剪的情况,即alpha超过了某个结点的 $g(t)$,但还没有超过其他结点的 $g(t)$。这样随着 $\alpha$ 不断增大,不断地剪枝,就得到了 $n+1$ 棵子树,接下来只要用独立数据集测试这 $n+1$棵子树,选出误差最小的子树。对于某个 $\alpha$,剪枝时 $g(t)$ 选择最小的,整体误差小。

Mini batch

梯度下降中每次更新权重 $w$ 和偏置项 $b$ 的数据,是为了在较小精度损失下减少内存和提高训练速度。

mini batch: 批,full batch的子集

iterations: 迭代,batch*iterations=full batch,每训练一个mini batch完成一次iteration

epoch: 遍历完一次full batch是一次epoch

SGD & Adam

SGD步骤:

  1. 计算目标函数关于当前参数的梯度
  1. 计算当前时刻的下降梯度
  1. 根据下降梯度进行更新

Adam步骤:

  1. 计算目标函数关于当前参数的梯度
  1. 计算SGD的一阶动量和RMSProp的二阶动量,$\beta_1$和 $\beta_2$ 为超参数
  1. 计算下降梯度,并更新