当我阅读如何在 pybrain 中构建 ANN 时,他们说:
训练网络一些时期。通常你会设置一些东西 比如这里有5个,
trainer.trainEpochs( 1 )
我查了一下这是什么意思,然后我得出结论,我们使用一个时期的数据来更新权重,如果我选择用 5 个时期的数据作为 pybrain 的建议来训练数据,数据集将被分为 5 个子集,权重将最多更新5次。
我熟悉在线训练,其中权重在每个样本数据或特征向量之后更新,我的问题是如何确保 5 个时期足以构建模型并可能设置权重? 这种在线培训方式的优势是什么?另外,在线训练中使用了术语“epoch”,它是否意味着一个特征向量?
很抱歉重新激活此线程。 我是神经网络新手,正在研究“小批量”训练的影响。
到目前为止,据我了解,一个纪元(如runDOSrun所说)是对TrainingSet(不是DataSet。因为DataSet = TrainingSet + ValidationSet)中所有内容的彻底使用。在小批量训练中,您可以将 TrainingSet 细分为小 Set,并在一个 epoch 内更新权重。 “希望”这将使网络“收敛”得更快。
神经网络的一些定义已经过时,我想必须重新定义。
epoch 的数量是一个超参数,它定义了学习算法在整个训练数据集中工作的次数。一个epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。
一个纪元是从 (1) 到 (5) 的一个训练循环,用于使用数据集的一批 (BGD)、每个小批量 (MBGD) 或每个样本 (SGD) 来训练模型,采用一个或多个样本通过梯度下降(GD)更新模型参数的更多步骤如下所示:
*备注:
n
epoch 进行一次测试。(1) 使用真实值(训练数据)计算模型的预测,从输入层到输出层。 *此计算称为“前向传播”或“前向传递”。 *一个纪元开始。 (2) 使用损失函数计算模型的预测与真实值(训练数据)之间的损失总和(差异)的平均值。 (3) 在每次训练(epoch)时将所有张量的梯度归零以进行正确的计算。 *梯度累积在缓冲区中,然后它们不会被覆盖,直到调用
backward()。
(4) 使用(2)计算的平均损失(差值)计算梯度,从输出层到输入层。 *此计算称为
Backpropagation或 Backward Pass。 (5) 使用 (4) 计算的梯度通过梯度下降更新模型的参数,以最小化模型预测与真实值(训练数据)之间的损失总和的平均值(平均)优化器。 *一个纪元结束。