# 3.1 调试处理（Tuning process）

深度神经网络需要调试的超参数（Hyperparameters）包括：

* $$\alpha$$**：学习因子**
* $$\beta$$**：动量梯度下降因子**
* $$\beta\_1,\beta\_2,\varepsilon$$**：Adam算法参数**
* **#layers：神经网络层数**
* **#hidden units：各隐藏层神经元个数**
* **learning rate decay：学习因子下降参数**
* **mini-batch size：批量训练样本包含的样本个数**

学习因子$$\alpha$$是最重要的超参数，也是需要重点调试的超参数。动量梯度下降因子$$\beta$$、各隐藏层神经元个数#hidden units和mini-batch size的重要性仅次于,然后就是神经网络层数#layers和学习因子下降参数learning rate decay。最后，Adam算法的三个参数$$\beta\_1,\beta\_2,\varepsilon$$一般常设置为0.9，0.999和$$10^{-8}$$

传统的机器学习中，对每个参数等距离选取任意个数的点，分别使用不同点对应的参数组合进行训练，最后根据验证集上的表现好坏来选定最佳的参数。例如有两个待调试的参数，分别在每个参数上选取5个点，这样构成了5x5=25中参数组合：

![](https://2314428465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le0cHhI0S0DK8pwlrmD%2F-Le0cKOp1vaxoORIi4ak%2F-Le0ccV1jGxEGjHfP9z_%2F168import.png?generation=1556953092485256\&alt=media)

> 这种做法在参数比较少的时候效果较好

深度神经网络模型中是使用随机选择。随机选择25个点，作为待调试的超参数：

![](https://2314428465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le0cHhI0S0DK8pwlrmD%2F-Le0cKOp1vaxoORIi4ak%2F-Le0ccV7fkwRte6B9UQD%2F169import.png?generation=1556953082206298\&alt=media)

随机化选择参数是为了尽可能地得到更多种参数组合。如果使用均匀采样，每个参数只有5种情况；而使用随机采样的话，每个参数有25种可能的情况，更可能得到最佳的参数组合

另外一个好处是对重要性不同的参数之间的选择效果更好。假设hyperparameter1为$$\alpha$$，hyperparameter2为$$\varepsilon$$，显然二者的重要性是不一样的。如果使用第一种均匀采样的方法，$$\varepsilon$$的影响很小，相当于只选择了5个$$\alpha$$值。而如果使用第二种随机采样的方法，$$\varepsilon$$和$$\alpha$$都有可能选择25种不同值。这大大增加了$$\alpha$$调试的个数，更有可能选择到最优值

在实际应用中完全不知道哪个参数更加重要的情况下，随机采样的方式能有效解决这一问题，但是均匀采样做不到这点

随机采样之后，可能得到某些区域模型的表现较好。为了得到更精确的最佳参数，继续对选定的区域进行由粗到细的采样（coarse to fine sampling scheme）。就是放大表现较好的区域，对此区域做更密集的随机采样

如对下图中右下角的方形区域再做25点的随机采样，以获得最佳参数：

![](https://2314428465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le0cHhI0S0DK8pwlrmD%2F-Le0cKOp1vaxoORIi4ak%2F-Le0ccV9eFTZTRbiu605%2F170import.png?generation=1556953082728808\&alt=media)
