Validation 如何在神经网络中使用k-折叠交叉验证

Validation 如何在神经网络中使用k-折叠交叉验证,validation,machine-learning,neural-network,backpropagation,Validation,Machine Learning,Neural Network,Backpropagation,我们正在编写一个小型人工神经网络,它应该根据10个输入变量将7000种产品分为7类 为了做到这一点,我们必须使用k-折叠交叉验证,但我们有点困惑 我们从演示幻灯片中摘录了以下内容: 验证和测试集是什么? 根据我们的理解,我们运行了3个训练集并调整了权重(单历元)。那么,我们如何处理验证呢?因为据我所知,测试集用于获取网络的错误 接下来发生的事情也让我感到困惑。什么时候进行交叉 如果要求不太多,请列出一个步骤清单 将数据分成K个不重叠的折叠。让每个折叠K包含m个类别中相同数量的项目(分层交叉验证

我们正在编写一个小型人工神经网络,它应该根据10个输入变量将7000种产品分为7类

为了做到这一点,我们必须使用k-折叠交叉验证,但我们有点困惑

我们从演示幻灯片中摘录了以下内容:

验证和测试集是什么?

根据我们的理解,我们运行了3个训练集并调整了权重(单历元)。那么,我们如何处理验证呢?因为据我所知,测试集用于获取网络的错误

接下来发生的事情也让我感到困惑。什么时候进行交叉

如果要求不太多,请列出一个步骤清单

  • 将数据分成K个不重叠的折叠。让每个折叠K包含m个类别中相同数量的项目(分层交叉验证;如果您有100个类别A的项目和50个类别B的项目,并且您进行了2次折叠验证,则每个折叠应包含随机的50个类别A的项目和25个类别B的项目)

  • 对于1..k中的i:

    • 将折叠i指定为测试折叠
    • 将剩余的k-1折叠中的一个指定为验证折叠(这可以是随机的,也可以是i的函数,并不重要)
    • 将所有剩余折叠指定为训练折叠
    • 对所有自由参数(例如学习率、隐藏层神经元的数量)进行网格搜索,对训练数据进行训练,并对验证数据进行计算损失。拾取参数以最小化损失
    • 使用带有获胜参数的分类器来评估测试损失。积累成果

  • 现在,您已经收集了所有折叠的聚合结果。这是你最后的表演。如果你真的想在野外应用这一点,请使用网格搜索中的最佳参数对所有数据进行训练。

    你似乎有点困惑(我记得我也是),所以我要为你简化一些事情。

    样本神经网络场景 每当你被赋予一项任务,比如设计一个神经网络,你通常也会得到一个样本数据集,用于训练目的。假设您正在训练一个简单的神经网络系统,其中,
    Y
    是通过使用给定样本向量
    X
    计算权重向量
    W
    的标量积(·)计算出的输出。现在,最简单的方法是使用整个数据集,比如说1000个样本来训练神经网络。假设训练收敛且权重稳定,则可以放心地说,您的网络将正确分类训练数据。但是,如果出现以前看不见的数据,网络会发生什么情况?显然,此类系统的目的是能够概括和正确分类除用于培训的数据外的其他数据

    过度拟合解释 然而,在任何实际情况下,只有当您的神经网络部署到(我们称之为)生产环境中时,以前看不见的/新的数据才可用。但是,由于您没有充分测试它,您可能会经历一段不愉快的时光。:)任何学习系统几乎完美地匹配其训练集,但由于看不见的数据而不断失败的现象称为

    三盘 下面是算法的验证和测试部分。让我们回到1000个样本的原始数据集。您要做的是将其分为三组--培训验证测试
    Tr
    Va
    Te
    )--使用精心选择的比例。(80-10-10%)通常是一个很好的比例,其中:

    • Tr=80%
    • Va=10%
    • Te=10%
    培训和验证 现在要做的是,在
    Tr
    集合上训练神经网络,并正确更新其权重。验证集
    Va
    然后用于使用训练产生的权重计算分类误差
    E=M-Y
    ,其中
    M
    是从验证集获得的预期输出向量,
    Y
    是分类产生的计算输出(
    Y=W*X
    )。如果错误高于用户定义的阈值,则重复整个过程。当使用验证集计算的错误被认为足够低时,此培训阶段结束

    智能训练 现在,这里的一个聪明策略是在每个历元迭代中从集合
    Tr+Va
    中随机选择用于训练和验证的样本。这可确保网络不会过度适应训练集

    测试 然后使用测试集
    Te
    测量网络的性能。此数据非常适合此目的,因为在整个培训和验证阶段从未使用过此数据。它实际上是一小部分以前看不见的数据,用来模拟在生产环境中部署网络后会发生的情况

    如上文所述,根据分类误差再次测量性能。性能也可以(或者甚至应该)通过测试来衡量,以便知道错误发生的位置和方式,但这是另一个问答的主题

    交叉验证 了解了这种训练验证测试机制后,可以通过执行以下操作进一步加强网络,防止过度拟合。这在某种程度上是我上面解释的聪明策略的演变。这项技术包括在不同、不重叠、比例相等的
    Tr
    Va
    Te
    集合上执行K轮训练验证测试

    给定
    k=10
    ,对于k的每个值,您将数据集拆分为
    Tr+Va=90%