抽象与推理的挑战
计算机能从几个例子中学习复杂、抽象的任务吗?
当前的机器学习技术需要大量的数据,而且很脆弱——它们只能理解以前看到的模式。使用当前的方法,一个算法可以通过接触大量数据来获得新的技能,但是可以广泛应用于许多任务的认知能力仍然难以捉摸。这使得创建能够处理现实世界的可变性和不可预测性的系统变得非常具有挑战性,比如家用机器人或自动驾驶汽车。然而,其他的方法,比如归纳式编程,提供了更多类似于人类的抽象和推理的可能性。抽象与推理语料库(ARC)为衡量人工智能对未知任务的技能获取提供了一个基准,其约束条件是只有少数演示能够学习复杂的任务。它提供了一个未来的一瞥,在那里人工智能可以很快学会自己解决新问题。Kaggle抽象与推理挑战邀请您尝试将这个未来带到现在!
本次比赛由Keras的创建者Francois Chollet主持。Chollet关于测量智力的论文提供了ARC基准背后的背景和动机。
在这次比赛中,你将创造一个人工智能,它可以解决以前从未见过的推理任务。每个ARC任务包含3-5对列车输入和输出,以及一个测试输入,您需要使用从列车示例中学习到的模式预测相应的输出。
这个存储库包含ARC任务数据,以及一个基于浏览器的界面,供人们尝试手工解决任务。
“ARC可以被视为一个通用的人工智能基准,作为一个程序合成基准,或作为一个心理测量智能测试。它的目标是人类和人工智能系统,目的是模拟类似人类的一般流体智能。”
完整的数据集描述,它的目标,和它的底层逻辑,可以在这里找到: The Measure of Intelligence.
提醒一下,当考生第一次看到任务时,他们能够为任务中的所有测试输入生成正确的输出网格(这包括选择输出网格的维度)。对于每个测试输入,考生可以进行3次测试(这适用于所有考生,无论是人类还是人工智能)。
data
目录包含两个子目录:
data/training
: 包含用于训练的任务文件(400个任务)。使用这些来原型你的算法或训练你的算法获得弧相关的认知先验。data/evaluation
: 包含用于评估的任务文件(400个任务)。用这些来评估你最终的算法。为了确保评估结果的公平性,不要将评估集中的信息泄漏到您的算法中(例如,在开发过程中查看评估任务,或者在使用评估分数作为反馈时反复修改算法)。任务以JSON格式存储。每个任务JSON文件包含两个字段的字典:
"train"
: 示范输入/输出对。它是一个“对”列表(通常是3对)"test"
: 测试输入/输出对。它是一个“对”列表(通常是一对)。一个“pair”是有两个字段的字典:
"input"
: 一对的输入“grid”。"output"
: 一对的输出“grid”。“grid”是一个矩形矩阵(列表的列表),其中包含0到9之间的整数。最小的网格大小是1x1,最大的是30x30。
查看任务时,考生可以访问演示对的输入和输出,以及测试对的输入。目标是构建与测试输入网格相对应的输出网格,每个测试输入使用3个试验。“构建输出网格”包括选择输出网格的高度和宽度,然后用符号(0到9之间的整数,用颜色表示)填充网格中的每个单元格。只有“精确的”解决方案(所有的单元格都符合预期的答案)才能被认为是正确的。
测试界面位于 apps/testing_interface.html
. 在网络浏览器中打开它(推荐使用Chrome)。它将提示您选择一个任务JSON文件。
加载任务之后,您将进入测试空间,如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ma1ibYx4-1581778373356)(https://arc-benchmark.s3.amazonaws.com/figs/arc_test_space.png)]
在左侧,您将看到显示任务性质的输入/输出对。在中间,您将看到当前测试输入网格。在右侧,您将看到用于构建相应输出网格的控件。
您可以使用以下工具:
-调整大小:输入一个网格大小(例如。“10x20"或"4x4”),然后点击"调整大小"。这将保留现有的网格内容(在左上角)。
-从输入复制:将输入网格复制到输出网格。这对于输出包含一些输入修改的任务非常有用。
-重置网格:用0填充网格。
-编辑:从颜色选择栏中选择一个颜色(符号),然后点击一个单元格来设置它的颜色。
当你的输出网格准备好了,点击绿色的“提交!”按钮来检查你的答案。我们不执行三审规则。
当您获得当前测试输入网格的正确答案后,您可以使用“next test input”按钮切换到任务的下一个测试输入网格(如果有可用的;大多数任务只有一个测试输入)。
完成任务后,使用“load task”按钮打开一个新任务。
(第一次打开需要科学上网,否则可能无法读取数据并跳转)
(未完待续…)