神经网络训练中纪元的含义

问题描述 投票:0回答:4

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

训练网络一些时期。通常你会设置一些东西 比如这里有5个,

trainer.trainEpochs( 1 )

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

我熟悉在线训练,其中权重在每个样本数据或特征向量之后更新,我的问题是如何确保 5 个时期足以构建模型并可能设置权重? 这种在线培训方式的优势是什么?另外,在线训练中使用了术语“epoch”,它是否意味着一个特征向量?

machine-learning artificial-intelligence neural-network pybrain
4个回答
105
投票

一个时期由训练集上的一个完整训练周期组成。一旦看到集合中的每个样本,您就重新开始 - 标记第二个纪元的开始。

这与批量或在线培训本身无关。批量意味着您在纪元结束时更新once(在看到every样本之后,即#epoch更新)并在eachsample之后在线更新(#samples * #epoch更新)。

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


1
投票

很抱歉重新激活此线程。 我是神经网络新手,正在研究“小批量”训练的影响。

到目前为止,据我了解,一个纪元(如runDOSrun所说)是对TrainingSet(不是DataSet。因为DataSet = TrainingSet + ValidationSet)中所有内容的彻底使用。在小批量训练中,您可以将 TrainingSet 细分为小 Set,并在一个 epoch 内更新权重。 “希望”这将使网络“收敛”得更快。

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


1
投票

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


0
投票

一个纪元是从 (1)(5) 的一个训练循环,用于使用数据集的一批 (BGD)、每个小批量 (MBGD) 或每个样本 (SGD) 来训练模型,采用一个或多个样本通过梯度下降(GD)更新模型参数的更多步骤如下所示:

*备注:

  • BGD 是批量梯度下降。
  • MBGD 是小批量梯度下降。
  • SGD 是随机梯度下降。
  • 基本上,重复一个纪元,以便模型可以学习得更深。
  • 基本上,模型在每个 epoch (5) 之后或每
    n
    epoch 进行一次测试。

(1) 使用真实值(训练数据)计算模型的预测,从输入层到输出层。 *此计算称为“前向传播”或“前向传递”。 *一个纪元开始。 (2) 使用损失函数计算模型的预测与真实值(训练数据)之间的损失总和(差异)的平均值。 (3) 在每次训练(epoch)时将所有张量的梯度归零以进行正确的计算。 *梯度累积在缓冲区中,然后它们不会被覆盖,直到调用

backward()

(4) 使用(2)计算的平均损失(差值)计算梯度,从输出层到输入层。 *此计算称为

Backpropagation

Backward Pass (5) 使用 (4) 计算的梯度通过梯度下降更新模型的参数,以最小化模型预测与真实值(训练数据)之间的损失总和的平均值(平均)优化器。 *一个纪元结束。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.