gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:20:27 24 4
gpt4 key购买 nike

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

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

我们有演示幻灯片的摘录:

k-fold cross validation diagram

验证集和测试集究竟是什么?

据我们了解,我们运行了 3 个训练集并调整了权重(单个 epoch)。那么我们如何处理验证呢?因为据我了解,测试集是用来获取网络的误差的。

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

如果不是问太多,将不胜感激步骤的项目符号列表

最佳答案

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

示例神经网络场景

每当您接受诸如设计神经网络之类的任务时,您通常还会得到一个用于训练目的的样本数据集。假设您正在训练一个简单的神经网络系统 Y = W · X哪里Y是通过计算权重向量的标量积 (·) 计算得出的输出 W使用给定的样本向量 X .现在,最简单的方法是使用包含 1000 个样本的整个数据集来训练神经网络。假设训练收敛并且您的权重稳定,那么您可以有把握地说您的网络将对训练数据进行正确分类。但是,如果呈现以前看不见的数据,网络会发生什么?显然,此类系统的目的是能够对用于训练的数据以外的数据进行概括和正确分类。

过拟合解释

然而,在任何现实世界的情况下,以前看不见的/新数据只有在您的神经网络部署在生产环境中后才可用,我们称之为生产环境。但是,由于您没有对其进行充分测试,因此您可能会过得很不愉快。 :) 任何学习系统几乎完美地匹配其训练集但经常因看不见的数据而失败的现象称为 overfitting .

三套

下面是算法的验证和测试部分。让我们回到 1000 个样本的原始数据集。你要做的是把它分成三组——培训 , 验证 测试 ( TrVaTe )——使用精心挑选的比例。 (80-10-10)% 通常是一个很好的比例,其中:

  • Tr = 80%
  • Va = 10%
  • Te = 10%

  • 培训和验证

    现在发生的是神经网络在 Tr 上训练设置并正确更新其权重。验证集 Va然后用于计算分类误差 E = M - Y使用训练产生的权重,其中 M是取自验证集的预期输出向量和 Y是分类结果的计算输出 ( Y = W * X )。如果错误高于用户定义的阈值,则整个 training-validation epoch重复。当使用验证集计算的错误被认为足够低时,此训练阶段结束。

    智能训练

    现在,这里有一个聪明的诡计是 随机选择哪些样本用于训练和验证 从总集 Tr + Va在每个 epoch 迭代中。这确保了网络不会过度拟合训练集。

    测试

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

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

    交叉验证

    了解了这种训练-验证-测试机制后,可以通过执行 K-fold cross-validation 进一步加强网络防止过度拟合。 .这在某种程度上是我上面解释的智能策略的演变。该技术涉及 在不同的、不重叠的、等比例的 Tr 上执行 K 轮训练-验证-测试, VaTe .

    给定 k = 10 ,对于 K 的每个值,您将您的数据集拆分为 Tr+Va = 90%Te = 10%您将运行算法,记录测试性能。

    k = 10
    for i in 1:k
    # Select unique training and testing datasets
    KFoldTraining <-- subset(Data)
    KFoldTesting <-- subset(Data)

    # Train and record performance
    KFoldPerformance[i] <-- SmartTrain(KFoldTraining, KFoldTesting)

    # Compute overall performance
    TotalPerformance <-- ComputePerformance(KFoldPerformance)

    显示过拟合

    我正在从 wikipedia 中取出下面举世闻名的情节展示验证集如何帮助防止过度拟合。训练误差(蓝色)随着 epoch 数量的增加而趋于减少:因此网络试图精确匹配训练集。另一方面,红色的验证错误遵循不同的 U 形轮廓。曲线的最小值是理想情况下应该停止训练的时间,因为这是训练和验证误差最低的点。

    Overfitting reduced by validating neural network

    引用

    更多引用 this excellent book将为您提供机器学习的全面知识以及一些偏头痛。是否值得,由你来决定。 :)

    关于validation - 如何在神经网络中使用 k 折交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889637/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com