为什么神经网络模型不用交叉验证?

  统计/机器学习 深度学习 模型验证 人工神经网络    浏览次数:10536        分享
2

最近开始自学神经网络,深度学习,看了网上不少教程,发现通常只是把数据集分成train set和eval set,很少做交叉验证的。

为什么我们不对神经网络模型进行交叉验证呢?有什么原因吗?

 

得得得   2018-10-09 13:59



   3个回答 
6

当然可以对neural netwok进行cross validation,但是有时候我们并不这么做,我们只做train validation split。

理由是:

1. 训练神经网络的计算代价很大,k-fold cv则需要训练k个神经网络

2. 在用神经网络时,我们往往有极大量的数据,在这种情况下,我们没有必要去通过cross validation来充分利用数据

如果有说的不对的地方,欢迎指正

SofaSofa数据科学社区DS面试题库 DS面经

wxw_pku   2018-10-10 13:51

3

如果用了dropout,相当于用了cross validation,因为每个训练数据在每个epoch只能见到一个随机的子网络。最后测试时是这k个子网络的平均,k接近无限。

还有如果随机的组成mini batch,每个batch又是训练数据的随机子集,也相当于把训练数据分为无限个子集,降低了过拟合风险。

我理解是以上两点引入足够的随机性,能让结果稳定。如果还有过拟合,还可以加其他方法,比如对参数加L1/L2norm限制,data augmentation,unet/auto encoder等稀疏结构。

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-09-19 23:25

2

也不是完全不用交叉验证,只是用的话比较慢吧

SofaSofa数据科学社区DS面试题库 DS面经

宽宽   2018-10-11 09:47



  相关讨论

吴恩达深度学习第一课第四周作业L层结果收敛在0.64的问题

神经网络中的gradient check是什么意思?

神经网络模型里训练和推理是什么意思?

deep learning中的pooling是什么意思?

epoch和batch之间有什么关系?

训练神经网络中经常提到的epoch是什么意思

反向传播和梯度算法概念???反向传播是指反向传播算法,还是反向传播算法中的一个过程?

请问深度学习算法中的梯度消失的原理是什么?如何能通俗理解

神经网络中的Dropout和Bagging

为什么RNN会有梯度消失的问题,LSTM是怎么解决梯度消失的?

  随便看看

spark里怎么refresh表?

logloss的取值范围是多少?一般好的分类器能达到多少?

如何获取pyspark DataFrame的行数和列数?

怎么理解库克距离(Cook's distance)?

把tf.Tensor转换为numpy array