《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)

02. 改善深层神经网络:超参数调优、正则化以及优化

第三周 超参数调优、Batch正则化和程序框架

3.1 调试处理

  1. 超参数
    (1)常见参数:α,β,β1,β2,ϵ\alpha, \beta, \beta_1, \beta_2, \epsilon,层数,每层单元数,学习率衰减,mini-batch规模
    (2)重要性排名:a. α\alpha, b. β\beta,每层单元数,mini-batch规模,c. 层数,学习率衰减
  2. 尝试随机值
  3. 由粗糙到精细策略
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)

3.2 为超参数选择合适的范围

  1. 随机选择超参数
  2. 超参数适应的规模
    使用对数数轴
    代码:r=4np.random.rand()r = -4*np.random.rand()
    α=10r\alpha=10^{r}
  3. 指数加权平均的超参
    β=0.9,,0.999\beta = 0.9, \cdots, 0.999,因此不能使用线性随机均匀取值。因此考虑1β=0.1,,0.0011-\beta = 0.1, \cdots, 0.001,然后采用对数随机均匀取值。

3.3 超参数训练的实践:Pandas VS Caviar

  1. 两种流派
    (1)Babysitting one模型
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)
    (2)并行训练多个模型

3.4 正则化网络的**函数

  1. 归一化加速学习
  2. Batch归一化的实现
    (1)给定神经网络的隐藏值z(1),,z(m)z^{(1)}, \cdots, z^{(m) }
    (2)均值μ=1miz(i)\mu = \frac{1}{m}\sum_i z^{(i)}
    (3)均方差δ2=1mi(z(i)μ)2\delta^2 = \frac{1}{m}\sum_i (z^{(i)}-\mu)^2
    (4)归一化znorm(i)=z(i)μδ2+ϵz^{(i)}_{norm}=\frac{z^{(i)}-\mu}{\sqrt{\delta^2+\epsilon}}
    (5)归一化后的参数服从均值为0,方差为1。但实际上,所有参数服从不同的分布更具有现实的意义,因此进一步改进为z~(i)=γznorm(i)+β\widetilde{z}^{(i)}=\gamma z^{(i)}_{norm}+\beta,其中γ,β\gamma, \beta为待学习的参数,可用梯度下降法、动量法等进行学习。γ\gammaβ\beta的作用是设置均值和方差。

3.5 将Batch Norm拟合进神经网络

  1. 将Batch归一化加入到神经网络中
    (1)神经网络示意图
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)
    (2)计算路径
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)
    (3)代码tf.nn.batch_normalization
  2. mini-batches中的应用
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第3周超参数调优、Batch正则化和程序框架)
    说明:因为后期需要用β\betaγ\gammaz(i)z^{(i)}进行重新缩放,所以不需再学习b[l]b^{[l]}
  3. 梯度下降法的实现
    对于t=1,,numt=1, \cdots, num mini-batches
    在每个mini-batchX{i}X^{\{i\}}中计算正向传播(用z~[l]\widetilde{z}^{[l]}代替z[l]z^{[l]}
    计算反向传播dw[l],dβ[l],dγ[l]dw^{[l]}, d\beta^{[l]}, d\gamma^{[l]}
    更新参数(梯度下降法、动量法等)

3.6 Batch Norm为什么奏效?

3.7 测试时的Batch Norm

3.8 Softmax回归

3.9 训练一个Softmax分类器

3.10 深度学习框架

3.11 TensorFlow