一点一点地喂数据和将数据全部用于训练对模型的影响一样吗?
来源:2-7 神经元实现(二分类逻辑斯蒂回归模型实现)
XhmTLnz丶
2019-03-11
在不考虑速度和内存的情况:
老师所给的代码,每次训练只拿出20个数据来训练模型(每次的20个数据不相同),tf.train.AdamOptimizer是如何在每一步使用不同的20个数据来最小化损失函数(这里的损失还只是20个样本的损失,不是所有样本的损失),也就是说这20个样本的损失只迭代了一次就换了一批数据,使用上20个数据训练得到的参数和新的20个数据进行梯度下降继续更新参数,这样能找到使得损失函数局部最小的参数吗?
如果送入全部数据,损失函数求的是所有样本的损失,通过梯度下降求使得损失函数局部最小的参数可以理解,但是视频中的方法很难理解。
写回答
1回答
-
这样是可以找到局部最小值的,具体有严密的数学证明,张瞳老师在这方面做过很多的工作,如果感兴趣可以去搜他的paper来看。使用全部数据集自然是最优的方式,但是使用部分数据集一点一点喂的方式也是有理论保证可以找到最小值的,甚至,从时间上看,这样的方式比每次都在全部数据集上计算要快,因为遍历1000个样本的时间,可以用来在20个样本上遍历50次了。
112019-03-24
相似问题