神经网络训练中一个时代的意义
Posted
技术标签:
【中文标题】神经网络训练中一个时代的意义【英文标题】:Meaning of an Epoch in Neural Networks Training 【发布时间】:2015-09-18 06:14:47 【问题描述】:当我在阅读如何在 pybrain 中构建 ANN 时,他们说:
对网络进行一些 epoch 的训练。通常你会设置一些东西 像这里的 5 个,
trainer.trainEpochs( 1 )
我查找了这意味着什么,然后我得出结论,我们使用一个 epoch 的数据来更新权重,如果我选择用 5 个 epoch 训练数据作为 pybrain 建议,则数据集将分为 5 个子集,并且wights 最多会更新 5 次。
我熟悉在线培训,在每个样本数据或特征向量之后更新 wights,我的问题是如何确保 5 个 epoch 足以构建模型并可能设置权重?这种方式对在线培训有什么好处?在线培训中也使用了“epoch”一词,是指一个特征向量吗?
【问题讨论】:
【参考方案1】:一个 epoch 由 一个 训练集上的完整训练周期组成。一旦看到集合中的每个样本,您就会重新开始 - 标志着第二个时期的开始。
这与批量或在线培训本身无关。批处理意味着您在 epoch 结束时更新 一次(在看到 每个 样本之后,即 #epoch 更新)并在 each 之后在线更新strong> sample(#samples * #epoch 更新)。
您无法确定 5 个 epoch 或 500 个是否足以收敛,因为它会因数据而异。当误差收敛或低于某个阈值时,您可以停止训练。这也进入了防止过度拟合的领域。您可以阅读 early stopping 和 cross-validation 了解相关内容。
【讨论】:
那么,数据集被划分为 epoch,每个 epoch 由样本组成?以及用于构建模型的每个 epoch? 一个时期是否还包括运行梯度下降以找到最小误差?如果是这样,为什么一遍又一遍地运行它会更多地减少错误?【参考方案2】:很抱歉重新激活此线程。 我是神经网络的新手,我正在研究“小批量”训练的影响。
到目前为止,据我了解,一个纪元 (as runDOSrun is saying) 是通过使用 TrainingSet(不是 DataSet。因为 DataSet = TrainingSet + ValidationSet)中的所有内容。在小批量训练中,您可以将 TrainingSet 细分为小 Sets 并在一个 epoch 内更新权重。 “希望”这将使网络“收敛”更快。
一些神经网络的定义已经过时了,我猜,必须重新定义。
【讨论】:
我不会说我给出的定义已经过时,而只是标准情况。为了便于理解,我没有包括所有例外情况。一个 epoch 最一般的定义是将其称为一个迭代周期,在该迭代周期中训练一组训练样本。 真的。我与时代的更新点有关。但是是的。你给了user2162652一个很好的答案【参考方案3】:epoch 数是一个超参数,它定义了学习算法将在整个训练数据集中工作的次数。一个 epoch 意味着训练数据集中的每个样本都有机会更新内部模型参数。
【讨论】:
以上是关于神经网络训练中一个时代的意义的主要内容,如果未能解决你的问题,请参考以下文章