中文

编程谜题

机器学习 2021-11-09 v3 人工智能 计算与语言 编程语言 软件工程

摘要

我们引入一种称为编程谜题的新型编程挑战,作为对程序综合的客观且全面的评估,并发布了一个开源的 Python 编程谜题数据集(P3)。每个谜题由一个简短的 Python 程序 ff 定义,目标是找到一个使 ff 返回 True 的输入。这些谜题的客观性在于,每一个都完全由其验证器 ff 的源代码指定,因此只需对 ff 求值即可测试候选解。它们不需要答案键或输入/输出示例,也不依赖于自然语言理解。该数据集的综合性在于其涵盖了不同难度与领域的问题,从简单的字符串处理问题,到经典编程谜题(如汉诺塔),到面试/竞赛编程问题(如动态规划),再到算法与数学中长期的开放问题(如因数分解)。我们开发了枚举式程序综合、GPT-3 与 Codex 求解器,它们能够通过从自身过往解中学习来解决谜题——即便无任何参考解可用。Codex 表现最佳,在 397 个测试问题中单次尝试可解决至多 18%,每题尝试 1,000 次可解决 80%。在一项小规模用户研究中,我们发现谜题求解表现与编程经验、以及谜题对人类与 AI 求解者的难度之间均呈正相关。因此,P3 上的进一步改进可能对许多程序综合领域产生显著影响。

关键词

引用

@article{arxiv.2106.05784,
  title  = {Programming Puzzles},
  author = {Tal Schuster and Ashwin Kalyan and Oleksandr Polozov and Adam Tauman Kalai},
  journal= {arXiv preprint arXiv:2106.05784},
  year   = {2021}
}

备注

NeurIPS 2021 (Datasets and Benchmarks Track). Puzzles repository: https://github.com/microsoft/PythonProgrammingPuzzles