关于神经网络模型的几点疑问

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

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

(1)按理说不应该有很大的随机性,随机性大说明模型的稳定性差。或者初始参数选择不好。打一个比方来说,你的初始参数如果选择随机数,你的神经元足够多,那么从整体上看,每次的结果都应该差不多。
好比扔硬币,虽然扔一个两个出现某种情况是随机的,但是你扔100次,每次正面向上的数量都在50左右,差别不大。
(2)神经网络既可以生成(升维)也可以判别(降维)还可以两者结合起来,比如GANs。(似乎之前回答你了)
(3)在真实的情况下,只需要训练集和验证集,分为两部分的原因是防止过拟合。当训练集的正确率远远高于验证集,就没有再训练的必要了。
至于测试集,这个是因为你学习的时候并没有实际的使用的数据,所以用原来的数据划分一些充当测试集。在真实情况下,直接拿现实的数据就可以测试了。比如说你做一个实际的股票预测,那么不需要什么测试集,你直接拿今天的新鲜数据就可以测试了。