神经网络训练中一个时代的意义

Meaning of an Epoch in Neural Networks Training

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

Train the network for some epochs. Usually you would set something like 5 here,

trainer.trainEpochs( 1 )

我查了一下那是什么意思,然后我得出结论,我们使用一个时期的数据来更新权重,如果我选择用 5 个时期训练数据作为 pybrain advice,数据集将分为 5 个子集,权重最多更新5次

我熟悉在线训练,其中权重在每个样本数据或特征向量之后更新,我的问题是如何确保 5 个 epoch 足以构建模型并设置权重?这种在线培训方式的优势是什么?另外在线训练中使用了"epoch"这个词,是不是一个特征向量的意思?

一个 epoch 包含 一个 训练集的完整训练周期。一旦看到集合中的每个样本,您就会重新开始 - 标志着第二个纪元的开始。

这与批处理或在线培训本身无关。批处理意味着您在纪元结束时更新 一次(在看到 每个 样本之后,即#epoch 更新)并在线更新之后每个 样本 (#samples * #epoch updates).

您无法确定 5 个时期或 500 个时期是否足以收敛,因为它会因数据而异。当误差收敛或低于某个阈值时,您可以停止训练。这也涉及防止过度拟合的领域。您可以阅读 early stopping and cross-validation 相关内容。

抱歉重新激活了这个线程。 我是神经网络的新手,正在研究 'mini-batch' 训练的影响。

到目前为止,据我了解,一个纪元 () 是通过使用 TrainingSet(不是 DataSet。因为 DataSet = TrainingSet + ValidationSet)中的所有内容。在小批量训练中,您可以将 TrainingSet 细分为小的 Sets 并在一个 epoch 内更新权重。 'hopefully' 这将使网络 'converge' 更快。

神经网络的一些定义已经过时,我想必须重新定义。

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