深度学习参数介绍&作用(持续更新)


前言

提示:本博客是结合多个博客来总结深度学习、机器学习模型中常用的参数特点与作用。

一、深度学习参数介绍

1.batchsize

batchsize : 在深度学习中,每次训练在训练集中一次性取batchsize个样本训练。因为GPU的线程一般为2的N次方,batchsize大小一般设置为2的N次方(64,128),以使得GPU内部的并行计算效率最高。

  • batch_size越大,收敛越快,需要训练的次数少,准确率上升得稳定,但是实际使用起来精度不高;
  • batch_size越小,收敛越慢,准确率可能来回震荡,因此需要把学习速率降低一些,但是实际使用起来精度较高。

深度学习框架的函数中经常会出现batch_size,说白了就是梯度下降。梯度下降又有:

1. Batch gradient descent,批梯度下降
遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法计算量开销大,计算速度慢,不支持在线学习。
2 . stochastic gradient descent,随机梯度下降
每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降。这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hit不到最优点。两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈。
3. mini-batch gradient decent,小批的梯度下降
为了克服两种方法的缺点,mini-batch gradient decent把数据分为若干个批,按批来更新参数,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。

2.iterations

iterations : 1个iteration等于使用batchsize个样本训练一次。每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,再BP算法更新参数。

3.epoch

epoch : 1个epoch等于使用训练集中的全部样本训练一次,epoch的值就是整个数据集被训练几次。

4.learning rate

learning rate : 学习率决定目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。

  • 当学习率设置的过小时,收敛过程将变得十分缓慢
  • 而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛



二、深度学习参数之间的关系

1. 模型训练时train loss与test loss的分析

1.train_loss不断下降,test_loss不断下降
可能的原因:网络还在学习中,loss在稳步下降。

2.train_loss不断下降,test_loss趋于不变
可能的原因:网络出现过拟合的现象,因此在训练集上表现为网络仍在学习,但是test_loss趋于不变说明网络泛化能力差。

3.train_loss趋于不变,test_loss不断下降
可能的原因:数据集 100% 是有问题的。。。

4.train_loss趋于不变,test_loss趋于不变
可能的原因:loss开始在某一直附近不断振荡,说明网络学习遇到瓶颈,此时应该减小学习率或者减小batchsize的大小,又或者是数据集有问题(数据集标注错误数据比较多)

5.train_loss不断上升,test_loss不断上升
可能的原因:网络结构的设计有问题;训练时超参数的设置有问题;数据集没有经过清洗。。


猜你喜欢

转载自blog.csdn.net/qq_42804713/article/details/126495356