A. 神经网络,训练样本500条,为什么比训练样本6000条,训练完,500条预测比6000条样本好!
并非训练样本越多越好,因课题而异。 1、样本最关键在于正确性和准确性。你所选择的样本首先要能正确反映该系统过程的内在规律。我们从生产现场采得的样本数据中有不少可能是坏样本,这样的样本会干扰你的神经网络训练。通常我们认为坏样本只是个别现象,所以我们希望通过尽可能大的样本规模来抵抗坏样本造成的负面影响。 2、其次是样本数据分布的均衡性。你所选择的样本最好能涉及到该系统过程可能发生的各种情况,这样可以极大可能的照顾到系统在各个情况下的规律特征。通常我们对系统的内在规律不是很了解,所以我们希望通过尽可能大的样本规模来“地毯式”覆盖对象系统的方方面面。 3、再次就是样本数据的规模,也就是你要问的问题。在确保样本数据质量和分布均衡的情况下,样本数据的规模决定你神经网络训练结果的精度。样本数据量越大,精度越高。由于样本规模直接影响计算机的运算时间,所以在精度符合要求的情况下,我们不需要过多的样本数据,否则我们要等待很久的训练时间。 补充说明一下,不论是径向基(rbf)神经网络还是经典的bp神经网络,都只是具体的训练方法,对于足够多次的迭代,训练结果的准确度是趋于一致的,方法只影响计算的收敛速度(运算时间),和样本规模没有直接关系。
如何确定何时训练集的大小是“足够大”的?
神经网络的泛化能力主要取决于3个因素:
1.训练集的大小
2.网络的架构
3.问题的复杂程度
一旦网络的架构确定了以后,泛化能力取决于是否有充足的训练集。合适的训练样本数量可以使用Widrow的拇指规则来估计。 拇指规则指出,为了得到一个较好的泛化能力,我们需要满足以下条件(Widrow and Stearns,1985;Haykin,2008): N = nw / e 其中,N为训练样本数量,nw是网络中突触权重的数量,e是测试允许的网络误差。 因此,假如我们允许10%的误差,我们需要的训练样本的数量大约是网络中权重数量的10倍。
B. 神经网络给定相对误差在多少比较合理
标准BP算法中,每输入一个样本,都要回传误差并调整权值,这种对每个样本轮训的方法称为“单样本训练”。由于单样本训练遵循的是只顾眼前的“本位主义”原则,只针对每个样本产生的误差进行调整,难免顾此失彼,使训练次数增加,导致收敛速度过慢。因此,有另外一种方法,就是在所有样本输入之后,计算网络的总误差,再根据总误差调整权值,这种累积误差的批处理方式称为“批训练”或“周期训练”。在样本数较多时,批训练比单样本训练的收敛速度更快。
C. 神经网络训练集正确率88%,测试集只有50%,这是为什么
训练数据和测试数据不太一样吧,不过测试集比训练集差是正常的。
D. 在神经网络的训练过程中,是应当追求训练准确率,还是应当追求测试准确率
我的经验是训练准确率尽量接近测试准确率或者训练误差与测试误差均低,单纯追求训练准确率的最高不一定可取,有可能出现overlearning的情况,有时训练准确率高是因为a network might improve the error rating on a number of already correctly-classified cases at the expense of misclassifying an additional case.
E. 训练集测试集8比2合适吗
不合适。
数据量较小(1w条以下),一般的划分是,训练集:验证集:测试集=8:1:1(有的地方说是6:2:2),训练集:测试集=2:1至4:1(总之测试集不要超过30%)。训练集:训练参数,此处的参数是指普通参数,即在神经网络中能够被梯度下降算法所更新的,如权值。验证集:用于调超参数,监控模型是否发生过拟合,能够被多次使用,进行人工调参。此处的超参数,如神经网络中的网络层数、网络节点数、迭代次数、学习率测试集:评估最终模型泛化能力,被一次使用。
F. 神经网络的数据量多少比较合适
一般来说要1万以上,越多越好,但要保证采集标准统一,且输出为相同的数据不能太多。
G. caffe训练神经网络测试集准确率达到多少就可以
这个并没有准确的结论,如果你数据预处理存在问题或者标签不合理,accuracy自然不会很高。并且,还需要改变已有网络中的参数或者网络结构才能有效提高accuracy。我们的目的并不在于准确率到底是多少,而是当测试准确率比较高时,得到的模型可以代替人去进行复杂图片的等级判断
H. 神经网络的准确率是怎么计算的
其实神经网络的准确率的标准是自己定义的。
我把你的例子赋予某种意义讲解:
1,期望输出[1 0 0 1],每个元素代表一个属性是否存在。像着4个元素分别表示:是否肺炎,是否肝炎,是否肾炎,是否胆炎,1表示是,0表示不是。
2,你的神经网络输出必定不可能全部都是输出只有0,1的输出。绝大部分是像[ 0.9968 0.0000 0.0001 0.9970]这样的输出,所以只要输出中的某个元素大于一定的值,例如0.7,我们就认为这个元素是1,即是有某种炎。否则为0,所以你的[ 0.9968 0.0000 0.0001 0.9970]可以看成是[1,0,0,1],。
3,所以一般神经网络的输出要按一定的标准定义成另一种输出(像上面说的),看调整后的输出和期望输出是否一致,一致的话算正确,不一致算错误。
4,用总量为n的检验样本对网络进行评价,输出调整后的输出,统计错误的个数,记为m。
所以检验正确率可以定义为n/m。