自动化AI算法测试的最佳方法是什么?

时间:2010-12-02 00:54:22

标签: artificial-intelligence

我想知道人们如何以自动方式测试人工智能算法。

一个例子是图灵测试 - 比如说有很多提交作品的提交。是否有任何可想到的方式以自动方式对候选人进行评分 - 除了让人们测试它们外。

我还看到了一些数据集(数字/字母的模糊图像,照片组等)可以随时间输入和学习。那里有什么好的资源。

我看到的一个挑战是:您不希望算法随着时间的推移而定制自己的测试数据,因为您试图了解它在一般情况下的效果。有没有技术可以确保它不会这样做?例如每次给它一个随机测试,或者通过一系列随机测试对其结果进行平均。

基本上,鉴于一堆算法,我想要一些自动化流程来提供数据,看看它“学到”它的能力,或者能够预测它尚未见到的新东西。

4 个答案:

答案 0 :(得分:4)

这是一个复杂的主题 - 良好的AI算法通常可以很好地概括为“看不见的”数据。最简单的方法是拥有两个数据集:训练集和用于测量性能的评估集。但一般来说,您希望“调整”您的算法,因此您可能需要3个数据集,一个用于学习,一个用于调整,一个用于评估。调整的定义取决于您的算法,但典型的示例是您需要在单独的数据集上调整的一些超参数(例如贝叶斯先前贝叶斯学习视图中的参数)的模型。学习过程已经为它设置了一个值(或者你可能硬编码了它们的值),但是有足够的数据可能有帮助,所以你可以单独调整它们。

至于制作这些单独的数据集,有很多方法可以做到这一点,例如将可用数据划分为用于不同目的的子集。需要做出权衡,因为您需要尽可能多的数据进行培训,但您也需要足够的数据进行评估(假设您处于新算法/产品的设计阶段)。

从已知数据集系统地进行此操作的标准方法是交叉验证。

答案 1 :(得分:3)

通常,当涉及到这类事情时,您有两个数据集 - 一个用于构建和调整算法的大型“训练集”,以及一个用于评估其性能的单独的较小“探测集”。 / p>

答案 2 :(得分:2)

@Anon有权利 - 训练和我称之为验证集。我注意到,我看到这个领域发展的点点滴滴有两点:

  1. Bayesian Classifiers:这样的内容可能会过滤您的电子邮件。简而言之,您可以训练算法,以便在特定项目是否属于某个组(例如垃圾邮件和火腿)时做出概率决策。
  2. 多个分类器:这是参与Netflix挑战的获胜团队所采用的方法,它不是通过组合几个以获得更好的优化一个特定算法(例如贝叶斯,遗传编程,神经网络等)。结果。
  3. 至于数据集Weka has several available。我没有探索过其他数据集库,但mloss.org似乎是一个很好的资源。最后,data.gov提供了许多提供一些有趣机会的集合。

答案 3 :(得分:1)

训练数据集和测试集对于K-means和其他聚类算法来说非常常见,但是如果没有监督学习(这意味着拥有训练集),那么你需要建立一个人工智能的东西。 “大脑”可以根据以下方式发言:

在国际象棋中:所有可能的未来状态可能来自当前的gameState。

在大多数人工智能学习(强化学习)中,你会遇到一个问题,即通过一遍又一遍地进行游戏来训练“经纪人”。基本上你将价值归于每个州。然后,您可以在某个州分配每个可能操作的预期值。

所以说每个州都有 S 状态和一个动作(尽管你可能在一个州有更多可能的动作,而在另一个州有更多动作),那么你想要找出 s 中最有价值的状态,并采取最有价值的行动。

为了弄清楚状态的价值及其相应的动作,你必须重复游戏。概率上,某种状态序列会导致胜利或失败,基本上你会了解哪些状态导致失败并且是“坏状态”。你还可以了解哪些更有可能导致胜利,这些随后是“好”状态。他们每个人都得到一个相关的数学值,通常作为预期的奖励。

从倒数第二状态到获胜状态的奖励:+10 如果进入失败状态则奖励:-10

所以那些给予负面奖励的州然后给予负面回报,给称为倒数第二的州,然后给称为倒数第三州的国家,等等。

最终,您可以根据您所处的状态以及您采取的操作来预测奖励。您最终会找到“最佳”步骤序列。这通常被称为最优政策

正确的说法是,在推导出最优政策时,您正在逐步采取的正常行动方案简称为政策,并且您始终在实施某种“政策“关于Q-Learning

通常,确定奖励的方式是有趣的部分。假设我奖励你每次不会导致失败的状态转换。然后,走到所有状态直到我终止的值是我做的很多增量,但是我有很多状态转换。

如果某些州非常无价值,那么很容易避免损失,因为几乎所有不良状态都可以避免。

但是,您不希望阻止发现新的,可能更有效的路径,而这些路径并不仅仅遵循这一项目,因此您希望以确保“确保”的方式奖励和惩罚代理人。胜利“或”保持杆子平衡“或尽可能长的任何东西,但如果失败太痛苦,你不想被困在局部最大值和极小的效率,所以不会尝试新的,未开发的路线。 (虽然除此之外还有很多方法)。

因此当你问“你如何测试AI算法”时,最好的部分是测试本身是构建了多少“算法”。该算法旨在测试特定的行动过程(策略)。它比

复杂得多
"turn left every half mile"

更像是

"turn left every half mile if I have turned right 3 times and then turned left 2 times and had a quarter in my left pocket to pay fare... etc etc"  

非常精确。

所以测试通常实际上是A.I.正在编程。大多数模型只是概率表示可能是好的,可能是坏的。计算每个可能的状态对于计算机来说更容易(我们认为!)因为它们可以在很长一段时间内专注于一项任务,而且它们记住了多少是你拥有多少RAM。然而,我们通过以概率方式影响神经元来学习,这就是为什么memristor是如此伟大的发现 - 它就像一个神经元!

你应该看看Neural Networks,这是令人费解的。我第一次读到用伪神经元突触连接矩阵制作一个“大脑”......一个能够“记住”的大脑基本上震撼了我的宇宙。

A.I。研究主要是概率性的,因为我们不知道如何“思考”我们只知道如何模仿我们自己的内在学习过程尝试,再试一次

相关问题