K-fold Cross-Validation - 在每次折叠后初始化网络?

Posted

技术标签:

【中文标题】K-fold Cross-Validation - 在每次折叠后初始化网络?【英文标题】:K-fold Cross-Validation - initialise network after each fold or not? 【发布时间】:2017-06-22 11:55:45 【问题描述】:

我主要了解 k 折交叉验证的工作原理,并已开始在我的 MATLAB 脚本中实现它,但是我有两个问题。

当使用它来选择网络特征时(在我的例子中,隐藏单元、权重衰减和没有迭代)。我应该在每次“折叠”之后重新初始化权重,还是应该将下一个训练折叠输入到已经训练好的网络中(它的权重已针对前一个折叠进行了优化)?

似乎执行后者应该会产生较低的错误,因为前一折数据将是下一个数据的良好近似值,因此权重将比从高斯分布随机初始化的权重更接近。

此外,在使用 k-fold 验证验证了网络,并选择了网络超参数等之后,我想开始使用网络,我是否认为我应该停止使用 k-fold 验证并只训练一次,使用所有可用数据?

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

是的,您应该在每次折叠后重新初始化权重,以便从“空白”网络开始。如果你不这样做,那么每个折叠都会“泄漏”到彼此中,这不是 K-Fold CV 应该做的。

找到最佳超参数后,是的,您可以使用所有可用数据对其进行训练。请记住为最终测试保留一些保留测试数据。

【讨论】:

非常感谢,这正是我希望听到的。

以上是关于K-fold Cross-Validation - 在每次折叠后初始化网络?的主要内容,如果未能解决你的问题,请参考以下文章

交叉验证Cross-Validation

python Keras K-fold

python Albon k-fold

K-fold 交叉验证查询

K-fold Train

kaggle Cross-Validation