当前位置:  开发笔记 > 人工智能 > 正文

在神经网络中,训练,验证和测试集之间有什么区别?

如何解决《在神经网络中,训练,验证和测试集之间有什么区别?》经验,为你挑选了3个好方法。

我正在使用这个库来实现学习代理.

我已经生成了培训案例,但我不确定验证和测试集是什么.
老师说:

70%应该是培训案例,10%是测试案例,其余20%应该是验证案例.

编辑

我有这个训练代码,但我不知道何时停止训练.

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

编辑

在经过20次训练迭代后,验证数据可以得到平均误差0.2,应该是80%?

平均误差=验证目标和输出之间的绝对差值之和,给定验证数据输入/验证数据的大小.

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

Kiril.. 265

训练期间使用训练和验证集.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

完成培训后,您将对抗测试集并验证准确性是否足够.

训练集:该数据集用于调整神经网络上的权重.

验证集:此数据集用于最小化过度拟合.您没有使用此数据集调整网络的权重,您只是验证训练数据集的准确度的任何提高实际上都会提高准确性,而不是之前未向网络显示的数据集,或者至少网络没有接受过培训(即验证数据集).如果训练数据集的准确度增加,但验证数据集的准确度保持不变或降低,则您的神经网络过度拟合,应该停止训练.

测试集:此数据集仅用于测试最终解决方案,以确认网络的实际预测能力.



1> Kiril..:

训练期间使用训练和验证集.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

完成培训后,您将对抗测试集并验证准确性是否足够.

训练集:该数据集用于调整神经网络上的权重.

验证集:此数据集用于最小化过度拟合.您没有使用此数据集调整网络的权重,您只是验证训练数据集的准确度的任何提高实际上都会提高准确性,而不是之前未向网络显示的数据集,或者至少网络没有接受过培训(即验证数据集).如果训练数据集的准确度增加,但验证数据集的准确度保持不变或降低,则您的神经网络过度拟合,应该停止训练.

测试集:此数据集仅用于测试最终解决方案,以确认网络的实际预测能力.


验证集用于培训过程.测试集不是.测试集允许1)查看训练集是否足够2)验证集是否完成防止过度拟合的工作.如果您在培训过程中使用测试集,那么它将只是另一个验证集,并且它不会显示在网络中提供新数据时会发生什么.

2> phoxis..:

训练集:用于学习的一组示例,即拟合分类器的参数[即权重].

验证集:用于调整分类器的参数[即架构,而不是权重]的一组示例,例如用于选择神经网络中的隐藏单元的数量.

测试集:一组示例,仅用于评估完全指定的分类器的性能[泛化].

从ftp://ftp.sas.com/pub/neural/FAQ1.txt部分" 什么是人口,样本,训练集,设计集,验证 "

对于数据集中的不同数据集,错误表面将不同(批量学习).因此,如果您为测试集数据找到了非常好的局部最小值,这可能不是一个非常好的点,并且可能是由同一问题的一些其他数据集生成的表面中的非常糟糕的点.因此,您需要计算这样一个模型,该模型不仅能够找到训练集的良好权重配置,而且还能够预测出具有良好误差的新数据(不在训练集中).换句话说,网络应该能够概括示例,以便它学习数据,而不是简单地通过过度拟合训练数据来记住或加载训练集.

验证数据集是您要学习的功能的一组数据,您不直接用于训练网络.您正在使用一组数据训练网络,您可以将其称为训练数据集.如果您使用基于梯度的算法训练网络,那么错误表面和某些点的梯度将完全取决于训练数据集,因此训练数据集直接用于调整权重.为确保不会过度使用网络,您需要将验证数据集输入网络并检查错误是否在某个范围内.因为验证集没有直接用于调整netowork的权重,因此验证和测试集的良好错误表明网络预测了列车集示例,

提前停止是一种停止训练的方法.有不同的变化可用,主要概述是,列车和验证集错误都被监控,列车错误在每次迭代时减少(backprop和兄弟),并且首先验证错误减少.在验证错误开始上升时停止训练.此时的权重配置表示模型,该模型可以很好地预测训练数据,以及网络未看到的数据.但实际上是因为验证数据间接影响重量配置以选择重量配置.这就是测试集的用武之地.这组数据从未在训练过程中使用过.一旦基于验证集选择了模型,就将测试集数据应用于网络模型,并找到该集的错误.此错误代表了我们可以从同一问题的绝对新数据中获得的错误.

编辑:

此外,如果您没有足够的数据用于验证集,则可以使用交叉验证来调整参数以及估计测试错误.


我知道我不应该发布这样的无意义的评论,但是想告诉你我很欣赏这个答案:)

3> user2410953..:

交叉验证集用于模型选择,例如,为给定参数集选择具有最小误差量的多项式模型.然后使用测试集报告所选模型的泛化错误.从这里:https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有