为方便讲述,举一些数字例子:
假设总数据集有100000条训练数据,每条数据的格式都是{data;label}
stochastic-gradient-descent:
每次随机选择一条训练数据,以此条数据前向传播后得到的值与label之间的loss来更新模型梯度
batch-gradient-descent:(有时也称作minibatch-gradient-decent)
batch:有时训练数据过大无法一次性装入内存;活着就是单纯为了采用batch-gradient-decent这种训练方式,人们会将整个的100000条数据划分为多个子集,现假设一个batch有1000条训练数据,(那么batchsize=1000)
batch-gradient-decent :将这1 batch的1000条训练数据依次前向传播,得到loss,加权后得到处理后的加权loss,以这个loss来对模型参数进行更新
fullbatch-gradient-decent:
fullbatch的意思是:全部数据。之所以都是全部数据,但还加了一个batch,是因为有时数据实在太大了装不仅内存,确实需要分隔成一个个batch,但是fullbatch gradient decent的核心,无论是训练数据划分为多个batch,他都是将这些所有的100000条数据依次前向传播,得到loss,加权后得到处理后的加权loss,以这个loss来对模型参数进行更新
epoch:
指的是全部训练数据经过一次前向传播,一次反向传播的过程
那么,对于fullbatch-gradient-decent来说,一个epoch他只进行了一次的模型参数更新
对于minibatch-gradient-decent来说,一个epoch他进行了100000/1000=100次的参数更新
对于stochastic-gradient-decent来说,一个epoch他进行了100000/1=100000次的参数更新
iteration :
无论batchsize是多大(无论batchsize是SGD的1,minibatch的1000还是fullbatch的100000),把一个batch内的所有数据都放入神经网络中前向传播一遍,得到loss反向对模型参数更新一遍 ,这个过程称为一次iteration(迭代)
ref:https://blog.youkuaiyun.com/xys430381_1/article/details/80680167
本文深入探讨了三种梯度下降算法:随机梯度下降(SGD)、批量梯度下降(BGD)和全程梯度下降(FBGD)。SGD每次仅使用一个样本更新参数,适合大数据集;BGD和FBGD则考虑整个数据集,FBGD在内存允许的情况下一次性处理所有数据。一个epoch内,SGD更新次数最多,BGD最少,而FBGD介于两者之间。理解这些概念对于优化模型训练至关重要。
309

被折叠的 条评论
为什么被折叠?



