浅谈batch, batch_size, lr, num_epochs

 深度学习的入门者对这几个参数的见解,看了很多文章,博客终于有了自己的一点见解

batch:叫做批量,也就是一个训练集,通常是一个小的训练集。然后在上面做梯度下降,优化的算法叫随机梯度下降法。

batch_size:叫做小批量,这个取值通常是2**n,将一个训练集分成多个小批量进行优化。这种优化算法叫做批量随机优化算法,这种算法更加常用,因为下一个小批量会根据上一个小批量计算出来的参数继续进行优化,更新。

lr:是learning rate(学习率)也就是步长,每次更新参数所走的一个步长。这个步长值通常比较小,但是不能很小,如果大的话可能会引起更新参数的震荡,小的话就会更新得很慢,可能一直达不到收敛。

num_epochs:这个是一个周期。一个训练周期是指完全遍历完整个训练集,而和batch_size不同,batch_size是将训练训练集分成多个小批量,在每个小批量上进行更新参数。

问题就在这儿,困扰我蛮久,就是既然在一个训练集上每个小批量都在沿着损失函数值小的方向更新,那么只用完整的遍历一个训练集就好了,为什么要遍历多次训练集,有多个训练周期?

num_epochs也是一个超参数,是要慢慢调整的,我的理解是下一个训练周期会跟着上一个训练周期的参数继续更新,所以训练周期过多可能会导致过拟合,过少可能会导致欠拟合。也就是这个超参数需要人为的调整。

你可能感兴趣的:(深度学习ing,batch,深度学习,机器学习,python,pytorch)