随着科技的飞速发展,人工智能编程也越来越成熟。它的发展能否帮助人类创造出更智能的机器?程序合成是指根据规范自动生成程序的概念。它不同于程序验证。程序验证依赖于程序根据正式规范运行的正式证明。1957年,在康奈尔大学符号逻辑学会夏季会议期间,AlonzoChurch试图根据数学要求综合程序。20世纪60年代,人工智能相关研究人员阐述了程序综合的概念,并将其应用到典型的人工智能研究中。近年来,深度学习改变了人工智能完成任务的方式。这一进展促使研究人员尝试教授人工智能人类擅长的工作。其中一个重要领域是创建元学习系统,让人工智能学习人类擅长的工作种类。神经程序合成和机器人技术的研究已经初步证明了使用程序合成来教会机器人准确执行任务的能力。程序综合最常用于使计算机编程更容易实现。AutoProf、FlashFill、Storyboard编程工具等应用程序允许学生通过直接操作某些概念而无需编写代码,以更直观的方式进行编程。AI研究人员Fran?oisJollet在他的论文《智力测试》中介绍了程序合成作为ARC任务的技术,该任务是在解决智力测试问题后建模的。在接受TheVerge采访时谈到他的论文时,Joley说:“关键在于,在任何任务中,获得高技能并不是智力的标志。除非该任务是一项元任务,涉及从大量先前的知识中学习未知问题。这就是我认为的智能基准。从本质上讲,系统智能应该通过以下方式进行测试,正如Jollet所说,“意味着只使用系统之前不知道的新任务,测量系统开始任务的先验知识,以及采样测量系统的效率(即需要多少数据来学习执行任务。达到一定技能水平所需的信息(先验知识和经验)越少,越智能。今天的人工智能系统根本不智能”他后来将ARC任务作为解决Kaggle抽象和推理问题挑战的问题发布。解决这个问题将涉及利用编程综合的力量来学习以前未知的ARC任务。分解编程综合问题对于每一个似乎无法解决的问题,你可以先把问题分解成小问题,如果你没学过编程组合,学习什么是错的,怎么错的在开始工作之前修复它。1.程序空间问题每个程序综合问题最终都涉及搜索整个程序空间。搜索方法必须有效。想象一下,用树算法,一定有办法把这棵树的树枝砍掉,否则,随着它的生长,它有无限生长的潜力。2.用户意图问题在测试用户意图逻辑之间常常存在模糊的界限。当用户与环境交互时会发现一个方面,并且随着用户的参与,新数据可能会将问题变成用户眼中的全新问题。成功解决Kaggle挑战必然涉及解决这两个问题。用于程序综合的实用程序在Python中,Z3是用于程序综合的Python包。这是AdrianSampson为Z3编写的优秀教程。其文章中的示例如下:Buildingagenericsolver,如下:代码来源于AdrianSampson的博客。然后,定义要运行的公式。代码来自AdrianSampson的博客Run:print(solve(formula))来解决任何问题。您可以阅读他的教程以获取更多详细信息和示例。想了解更多关于程序综合的信息?这里有一些与程序综合相关的学习资源。1.DeepLearningforProgramSynthesishttps://sunblaze-ucb.github.io/program-synthesis/index.html2.DeepCoder:LearningToWritePrograms(深度编码器:学习编写程序)https://openreview。net/pdf?id=ByldLrqlx3.深度学习程序综合微软研究院(DeepLearningProgramSynthesisMicrosoftResearch)https://www.microsoft.com/en-us/research/blog/deep-learning-program-synthesis/如果你开始解决Fran?oisJolet的Kaggle挑战,本文将为您提供帮助。“没有任何问题可以从创造它的同一意识水平上得到解决。”-阿尔伯特·爱因斯坦每一个“不可能”的挑战都是由不放弃解决问题的人一步步解决的。加油,你是最棒的!
