问题描述
我正在使用NER的spaCy CLI训练命令,其中train_path
设置为训练数据集(训练集),dev_path
设置为评估数据集(测试集)。控制台上的打印输出显示了NER Precision,Recall和F分数。
但是,我不清楚如何计算分数。是从模型预测的训练集(训练分数)还是从测试集的分数(测试分数)?
我想确定在哪个时期停止训练以防止过拟合。目前,在经过60个时期后,损耗仍会略有下降,而Precision,Recall和F分数仍会略有上升。在我看来,该模型可能正在记住训练数据,并且P,R和F分数是根据训练集计算得出的,因此一直在改进。
据我所知,即使训练分数不断增加,在训练分数即将再次下降之前,一个良好的训练停止点也就在眼前。因此,我想将它们随时间(时期)进行比较。
我的问题是:
解决方法
loss
是根据训练示例计算得出的,这是在training loop中调用nlp.update()
的副作用。但是,所有其他性能指标都是通过calling Scorer
在开发集上计算得出的。
据我所知,即使训练分数不断增加,训练的好起点还是在考试分数再次下降之前。
是的,我同意。因此,从spacy train
的结果来看,这是(训练)损失仍在减少而(dev)F分数又开始减少的时候。
目前,在经过60个时间段后,损耗仍然略有下降,而精确度,召回率和F分数仍略有上升。
看来您可以再训练一些时间:-)