神经网络训练中Epoch的含义

55

当我在阅读如何在pybrain中构建ANN时,他们说:

训练网络一些时代。通常你会设置像5这样的东西,

trainer.trainEpochs( 1 )

我查找了这个术语的含义,然后得出结论:我们使用数据时代来更新权重。如果我选择按照pybrain建议将数据进行5次时代的训练,则数据集将被分成5个子集,并且权重将在最多5次更新。

我熟悉在线训练,其中权重在每个样本数据或特征向量之后更新。我的问题是如何确定5个时代足以建立一个模型并正确设置权重?这种方式与在线训练相比有什么优势?此外,在线训练中使用术语“时代”,它是否意味着一个特征向量?

3个回答

104

一个周期包括在训练集上进行一次完整的训练循环。当集合中的每个样本都被看到后,您会从头开始 - 标记第二个周期的开始。

这与批处理或在线训练本身无关。批量意味着您在周期结束时更新一次(在每个样本都被看到之后,即#epoch更新),在线意味着您在每个样本之后进行更新(#samples * #epoch更新)。

您无法确定5个周期或500个周期是否足够收敛,因为它将因数据而异。当误差收敛或低于某个阈值时,您可以停止训练。这也涉及到防止过拟合的领域。您可以阅读有关早期停止交叉验证的内容。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - user2162652
一个 epoch 是否包括运行梯度下降来找到最小误差?如果是,为什么反复运行可以使误差最小化? - mskw

1
抱歉重新激活这个线程。 我是新手神经网络,正在研究“小批量”训练的影响。
到目前为止,据我所知,一个时期(如runDOSrun所说)是所有TrainingSet的使用(不是DataSet,因为DataSet = TrainingSet + ValidationSet)。在小批量训练中,可以将TrainingSet分成小集合,并在一个时期内更新权重。希望这会使网络更快地“收敛”。
一些神经网络的定义已经过时,我想必须重新定义。

我不会说我给出的定义已经过时,只是标准情况而已。为了易于理解,我没有包括所有的例外情况。最普遍的纪元定义是将其称为一组训练样本进行训练的迭代周期。 - runDOSrun
我在谈论时代更新点。但是,你给了user2162652一个很好的答案。 - Jp Ramoso

0

Epochs的数量是一个超参数,它定义了学习算法将通过整个训练数据集工作的次数。一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接