技术开发 频道

深度学习研究的新变化:教计算机如何编码

  【IT168 技术】多年来,编写可以创建程序的软件一直是人工智能(AI)研究的难以实现的目标。事实上,AI agents 可以创建自己的程序,如果通常看起来像是一般人工智能与狭义人工智能的区别之一。 这个目标非常重要,人工智能研究人员已经创建了一个特定的研究领域,称为程序综合(Program Synthesis),专注于应对这些挑战。程序综合背后的想法是创建可以生成与给定规范匹配的程序的AI agents。当我们利用Microsoft Excel中的Flash Fill功能时,我们经常使用这种技术的原始版本。

  尽管程序综合(Program Synthesis)很重要,但完整的研究空间仍处于初期阶段。最近,来自微软的AI研究人员发表了一篇论文,介绍了一种新的程序合成技术,称为神经引导式演绎搜索(NGDS),它提出了一种解决此类问题的新方法。

  程序综合模型的挑战非常明显。AI agents 不仅需要生成符合特定输入数据集的程序,而且还能够很好地概括未来的数据集。传统上,程序综合空间模型要么依赖于广泛手工设计的演绎逻辑技术,要么依赖于需要大量数据的纯粹统计模型,并且通常无法在具有挑战性的基准上提供实时综合。NGDS试图将这两种技术中的非常好的技术组合成一种新型的程序综合模型,该模型可以创建与基本规范相匹配的程序并随着时间的推移而很好地概括。如果我们借用Pedro Domingos的Mater算法论文中的一行,我们可以说NGDS将象征主义和贝叶斯主义结合成一个主算法。

  NGDS的象征性部分基于演绎搜索算法,该算法由目标程序的基础域特定语言(DSL)参数化。 NGDS通过递归地应用DSL的生成规则来进行,以将初始合成问题分解为更小的子问题,并进一步对它们应用相同的搜索技术。 NGDS使用神经指导模型补充演绎搜索过程,该模型针对每个分支决策先验地预测将从该分支产生的非常好的程序的概括分数。

  要查看NGDS的运行情况,请考虑以下样本数据集,该数据集可以使用执行三个字符串子表达式串联的程序生成:第一个单词的第一个字符,常量字符串“. “,最后一句话。

  使用NGDS时,搜索阶段将首先确定正确程序中的 top-level 运算符是连接还是原始子表达式(子字符串或常量字符串)。 如果它决定 top-level 运算符是Concatenate,则系统会进一步将提供的输入输出示例减少为Concatenate的两个子表达式的必要输入输出示例。 这些逻辑决策在搜索过程中引入了分支,其中大多数产生满足该示例但不向其他输入推广的程序。 可以使用我们的神经引导先验地消除这些分支。下图说明了这种方法。

  NGDS的优点在于它保留了构建搜索树(search tree)的符号洞察力(symbolic insights),确保了所发现程序的正确性,但仅探索了可能产生用户预期的可推广程序的树的那些分支。 随着时间的推移,这个过程大大减少了非生产性的搜索时间。 NGDS的一个关键思想是,分数预测模型对于搜索过程中的所有决策不必相同。 可以为不同的DSL级别,符号甚至制作训练单独的模型。 这允许模型使用输入 - 输出规范的不同特征来评估不同产品的适合度,并且还导致更简单的监督学习问题。

  微软研究团队针对几种非常先进的程序合成技术评估了NGDS,例如PROSE(纯符号),RobustFill(纯神经)和DeepCoder(神经符号混合)。

  NGDS绝对是创建更高级程序综合模型的技术。该技术向我们展示了实现程序综合的途径是基于将象征主义或贝叶斯主义等不同思想流派结合到单一模型中。 NGDS的关键点在于,基于符号演绎推理的系统与统计技术的深度整合,可以在不使用大量计算资源的情况下,生成具有高质量程序的模型的世界非常好的。

0
相关文章