关于神经网络模型的疑问

2019-04-26 12:49发布

问题:

神经网络模型,因为其随机性,每次训练出来的结果中准确度不太一样。想请问下:

  1. 每次训练的准确度会相差很多么? 我自己试过几次,貌似不会很大。但是个人经验不足,不敢确认;
  2. 假使准确度相差较大,而当前的模型训练完毕后,发现此时的准确度较高。那保存该模型后,准确率就能和测试集的准确率基本一致?
  3. 神经网络模型属于生成法还是判别法模型?
  4. 神经网络需要设置超参,那是否有必要将数据分成三份---训练集、验证集、测试集?还是说,只有在交叉验证的条件下,才需要这样切分数据?
  5. 顺便问下,这个数据集到底要怎么切分法?我问过人,据说常规情况下,大部分模型都是需要设置超参的。而设置超参的话,就必须切分出验证集(该验证集用于超参的训练)。那按照这种说法,不是数据集就是要分成三份才是合理的么?可是实际上,我经常看到的,也都是分成两份而已啊?

回答1:

关于第5个问题,我也一直没想明白,不过我刚才抽烟的时候突然想明白了,不一定正确:

假设你是项目经理,我是码农,小丽是测试。你拿到一堆样本,想要得到一个模型,于是你把样本分成2份:一份发给我用来训练模型,一份发给小丽,用来测试我训练的模型。

我拿到数据后又分成2份,一份是训练集,就是用来训练模型的,一份是验证集,就是我用来验证模型参数是否达到要求的(实际上有时候不是明确的分成两份,也可能是我训练10次模型,每次都把你给我的那份数据按照某种策略分成两份,会有重复使用的情况,这是另一个问题了)。等我把模型交给小丽,小丽会用你给她那份数据测试正确率等,这份数据就是测试集。

也就是说程序员通常只关心训练集和验证集,而测试人员只关心测试集。所以你经常看到只分两份,因为你看到的都是码农。

可能通常码农不会用到测试集,验证就当测试了,合二为一了。