2-3. 超参数调试、Batch正则化和程序框架

1. 调试处理

    以两个待调试参数为例,我们可以在一个二维平面内随机取点,并将每个点都试一遍,找出某几个表现出众的点。再在它们所围成的区域里随机取点,重复上述过程,直至找到满意的取值。
    若是多个参数,可以类比,只不过是在一个更高维度的空间中取点罢了。
    之所以要随机取点而不是等间距取点,是因为如果其中有一个参数对结果影响不大,那么随机取点可以让我们对另一个参数尝试更多的可能性。
    仍以两个参数为例。如果我们在一个二维平面内等间距取25个点( 5 × 5 ),并且其中有一个参数 ϵ 对结果的影响微乎其微,那么我们对另一个参数的取值实际上只取了5个值。而如果是随机取点的话,我们对另一个参数则去了25个值,更有可能找到最优解。

2. 为超参数选择合适的范围

    当我们估计出某个超参数大致的范围后,我们希望的是能够在这个范围内随机 均匀取值。例如我们想要决定某一层的神经元个数 n [ l ] ,我们可能会在 ( 50 ,   100 ) 这个区间内去随机均匀取值,这是没有问题的。
    但是如果我们想要调整超参数 β ,我们很有可能会在 ( 0.0001 ,   1 ) 的范围内去随机取值。这是再在区间内随机取值就不行了。因为这时我们会在 ( 0.1 ,   1 ) 间分配 90 % 的点,而在 ( 0.0001 ,   1 ) 内分配 10 % 的点。这样显然不行。
  这种情况下我们可以对它取对数( log 10 β 。这样就变成了在 ( 4 ,   0 ) 里面随机取值。同样,如果 β ( 0.9 ,   0.9999 ) 中取值,那么我们可以对 1 β 取对数,然后再随机取值。
    此外我们还需注意的一点是,对于想 β 这样的超参数,它的灵敏度会随着区间的变化而变化。当 β 趋向于1时,其灵敏度会大幅上升,所以我们对于这样的区间要更加密集地取点。

3. 超参数的训练的实践: P a n d a s   V S   C a v i a r

  • P a n d a s 当我们有足够多的数据但没有足够强的 C P U / G P U 时,我们可以只关注一个模型,并且每天都根据它的表现来不断修改参数。
  • C a v i a r 如果我们有非常强大的 C P U / G P U 的话,那么我们可以同时训练多个模型,根据它们的曲线来选择最优方案。

4. 正则化网络的激活函数

B a t c h   N o r m 这个地方一直没弄明白,怎么看 z ~ ( i ) 都不等于 z ( i ) 啊。

(1) { μ = 1 m i z ( i ) σ 2 = 1 m i ( z ( i ) μ ) 2 z n o r m ( i ) = z ( i ) μ σ 2 ϵ z ~ ( i ) = γ z n o r m ( i ) + β γ β ( l e a r n a b l e   p a r a m e t e r s ) I f : { γ = σ 2 + ϵ β = μ                             T h e n : z ~ ( i ) = z ( i )

猜你喜欢

转载自blog.csdn.net/qq_40989384/article/details/81204242