机器学习——调参

在实际调整参数之前,我们先要搞清楚两个事情:

1.调参的目的是什么?
2.调参调的东西具体是什么?

第一个问题:调参的目的是什么?
      调参的最终目的是要使训练之后的模型检测物体更精确,向程序的方向更靠近一步的话,就是使得损失函数(例如SSD中的loss)尽量小(因为利用训练集训练出来的模型质量在训练过程中只能靠验证集来检测)。
       因此,调参可以看做一个多元函数优化问题。

第二个问题:调参调的东西具体是什么?
       在解答第二个问题之前,我们先引入一个概念,超参数。
【超参数】
       在模型开始学习过程之前人为设置值的参数,而不是通过训练得到的参数数据(诸如常规意义下的b、w)。这些参数定义关于模型更高层次的概念(模型复杂性、学习能力等)。不能直接从标准模型培训过程中的数据中学习,需要预先定义。可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定。
示例:
      树的数量或深度、学习率、深层神经网络隐藏层数、k均值聚类中的簇数……
       要调的参数,主要就是这个“超参数”。

【深度学习中常用的调节参数】
1.学习率(learning rate)
学习率的调整应该是一个很常见的操作。一般随着迭代次数的提高,当loss下不去的时候会先暂停训练模型,然后将learning rate调整至原来的1/10再继续进行训练。
原因是,梯度下降过程中的学习率可以看做下山过程中的步长,假设你的一步很大可以跨过山谷直接踩到对面的山上的话,就很难得到局部最优解。此时,减小步长会提高你走到地面的概率。

2.有关过拟合
利用drop out、batch normalization、data argument等方法可以有效防止过拟合,通过调整drop out中每个神经元被抛弃的概率可以调整模型的泛化能力。

3.网络层数
一般来说,网络层数越多,模型的性能(包括灵敏度、收敛等)就会越好(这也是为什么深度神经网络最近这么火的原因之一)。相应地,对计算能力的要求就会更高。

而且,层数越多,神经元节点数越多,过拟合的概率就会越高。

这怎么办?

利用2中的各种方法防止过拟合。


4.Batch_Size

可以适当增大batch_size,但这种方法可能会对计算机性能有所影响(在本机上将batch_size调到原来的2倍的时候:大概是从24调到48,机器已经卡得不要不要的了……)。

batch_size增大到某个时候,可以达到时间上最优;
batch_size增大到某些时候,可以达到最终收敛精度上最优。




参考链接:

https://blog.csdn.net/echokangyl/article/details/79486448


猜你喜欢

转载自blog.csdn.net/qq_34872501/article/details/80645652