监督学习验证集 - ANN

Supervised Learning validation Set - ANN

我已经使用监督学习方法在处理中实现了一个神经网络。 我实际上在做的是训练一些圆圈在他们的目标位置上移动。

我的代码运行完美,但是我发现很多人将他们的代码分成 3 组, 为了找到与训练误差相关的验证误差。 (网络性能)。

 1.Training Set 
 2.Validation Set
 3.Test Set  

我的程序包括一组训练输入和训练输出。我的网络经过训练(循环),直到达到特定目标。

例如我有 5 个输入和 5 个目标输出。

Input values  {0.2, 0.1, 0.15, 0.11, 0,01}
Target values {1,1,1,1,1}

Set Learning rate = 1
Set momentum = 1
Set bias     = 1

A) 创建 5 个介于 0-1 和 5 之间的随机权重 bias Weight from 0-1。

random_Weight = random (0-1)
Bias_Weight = random (0-1)

B) 计算总和

Sum = (input_data  * random_Weight) + (Bias * Bias_Weight)

c) 将数据输入指数函数

Output  =  1.0 /(1.0 +exp(-1 * sum)

d) 计算错误:

Error = Target values - output

e) 调整新权重

Change = (learning rate * weight * input values) + (momentum * change)
weight = weight + change

f) 重复直到目标位置=当前位置

我不知道我的训练函数会重复多少次,直到达到预期的目标。如何将数据分成 3 组? (训练、验证、测试)。

如果我理解正确的话,我只实现了训练集。

我的问题是[a]如何在这个具体问题中创建验证集

[b]什么是数据集[c]在这种情况下如何拆分它作为验证集?

[d]如何计算校验误差?

[e] 在此过程中是否有任何建议的文档 我可以从哪里开始?

广告"performance of network"

让我们首先揭开术语的神秘面纱。网络本身没有“性能”。任何从功能最小化器(经典的 ANN 就是这种情况)派生的预测器都有一些 "mathematically formulated" 错误 建模现实,但主要问题不是模型如何"close"模拟观察到的(和临时模拟的)现实(已经由训练中使用的示例-结果对 [观察] 训练) 但是 "well" "trained"-模型将如何处理尚未观察到(因此未预先训练)的示例。

因此,ANN 模型"generalise"、不受"bias" 和"overfitting" 影响的能力是预测器“性能"(预测质量)。

广告 [a]+[b]+[c]

为了 SUPERVISED 学习者,你的机会相当高。从您的问题领域准备、开发或以其他方式获取合理数量的示例(观察)。

正如 [e] 将教给您的那样,问题域有一定的基本原理,合理的数量是多少(简而言之:它取决于现实,您的 ANN 正在尝试模拟,因此先验未知,因此无需过早恐慌)。

采取负责任的监督 学习/数据健全性努力以确保,您的 ANN 学习者不会针对 wrong/noisy [=10= 进行训练]-在可用数据集的任何行中配对。这比人们第一眼看到的更重要。是的,犯错是人之常情,但地狱是不宽容的,接受任何 AI/ML-learner 的预训练来重复和重复,重复和重复你的错误,这不过是浪费使用 AI 力量的机会。

有一个包含 2000 个观察值的数据集 ([x_1.1, x_2.1, x_3.1,...,x_n.1] ,[y_1] ) 可用,经典建议将数据集(按行)拆分为三个子集:

  1. aTrainingDataSET:有大约 60%-70% 的记录(观察对)
  2. aTestingDataSET:有大约 20%-30% 的记录
  3. aCrossValidationDataSET:有大约 20%-30% 的记录(在训练阶段没有看到)

这种知识公平的方法允许您假设经过训练的 ANN "generalised" 它不仅能够处理其训练的示例,而且能够处理非数据示例(你先验知道正确的结果,否则你无法履行你的监督学习角色),它检测你的 AI 学习者在现实世界中生存的能力 "evolution(s)" 不包含在你的前几个例子中(来自aTrainingDataSET).

因此,为您的 ANN 学习者提供数据集的训练部分,以找到(理想情况下是凸的)最小化驱动的 optimum/threshold 输出(ANN 设置)。

使用测试数据集测试具有不同 [C,gamma] 非数据集相关设置的预训练 ANN 学习器,以发现 "how precise" 是对 [C,gamma] 景观的 ANN 模型预测ANN 模型。

最后,评估 "best" 调整的 [C,gamma] 调整的学习者(到目前为止的候选者,最能反映 aTrainingDataSET 和 aTestDataSET )它们将如何预测 aCrossValidationDataSET 的答案,这两者都不是到目前为止,他们已经暴露在气味中 [你的这部分监督(预评级)体验没有向他们展示只是因为这个非常重要的可能性]。

通过这种方式,您可以管理您的 ANN 模型以摆脱 "high-bias" / "overfitting" 的陷阱,这两个主要的黑洞是一个微不足道的(数学上)公式 "penalty" -based minimiser 将没有其他机会,只能 运行 你的 ANN 模型。

广告 [d]

在上述方法的意义上,交叉验证预测误差(惩罚函数)是从任何预训练的、[C,gamma] 调整的 ANN 学习器中计算出来的一旦暴露给交叉验证数据集。

广告 [e]

ANN/ML 上有很多很棒的实践课程,所以不要犹豫,加入并访问。

If you ever would have a chance to re-run any lecture / course from prof. Andrew NG, be it from his Stanford, Coursera or his recent AI/ML-Lab phase of his immense efforts in popularisation of this practical use of the ANN-learners, there would go my choice No.1 to follow.

更新

Ad an Add-On question on sizing of aTrainingDataSET

假设关于有 -5- 个训练示例(在下面的 question/comment 中)可用于 ANN 训练过程的说法是正确的,似乎有问题,以防万一,有一些主要限制拥有更强大的数据集(更大的监督学习示例基础)。

典型的 ANN "consumes" 大量训练样本,以允许其基于最小化算法的演化和稳定其最佳性能内部设置(ANN-s 的工作原理),从而最大化其能力尽可能接近正确答案回答(预测)问题。

虽然只有 -5- [示例-答案] 对可能有一些价值,但训练基于 ANN 的学习器以服务于它的未来任务(预测角色)的价值太少了。

尝试为开发可靠的基于 ANN 的预测器的初始过程获取/生成/准备更强大的数据集。