- ReGAL是一种通过代码重构来学习可重用函数库的无梯度方法。
- ReGAL通过执行验证和完善其抽象,从现有程序中学习。
- ReGAL发现的共享函数库使得在不同领域中更容易预测程序。
- 使用ReGAL函数的开源和专有LLMs在LOGO图形生成、日期推理和基于Minecraft的文本游戏TextCraft的三个数据集上提高了准确性。
- 对于CodeLlama-13B,ReGAL在图形方面的准确率提高了11.5%,在日期理解方面提高了26.1%,在TextCraft方面提高了8.1%。
- 分析显示,ReGAL的抽象封装了常用子程序和环境动态。
ReGAL(Refactoring for Generalizable Abstraction Learning)是一种通过代码重构创建可重用函数库的新方法,用于增强程序合成。这种方法的独特之处在于它不仅仅生成代码,而是在不改变原始执行输出的情况下对其进行改进,并从一小组现有程序中进行学习。ReGAL的重要性在于其实际应用,已经证明它可以提高开源和专有大型语言模型(LLMs)在各个领域的准确性,包括图形生成、日期推理和基于Minecraft的文本游戏。在三个测试领域中,该方法甚至超过了GPT-3.5的表现。对于那些对人工智能和软件开发交叉领域感兴趣的人,特别是对代码生成的效率和准确性感兴趣的人来说,ReGAL发现和应用可推广抽象的方法可能是一个值得探索的改变游戏规则的方法。
 
评论
-研究从任意程序中提取约束和不变量以及简化函数。 -可以教导通用模型为特定任务编译轻量级模型,并使用大型模型生成的测试数据对其进行验证。 -最佳抽象/内联应该与读者对问题领域的内部概念表示保持一致。 -自动抽象具有挑战性,尤其是当它涉及到在已经实现的抽象之外创建新的抽象时。 -编程语言的查准率/准确率允许自动化系统通过扩展现有程序来创建新程序。 -编码重用通常会在多次使用类似的编码后导致抽象。 -可以训练模型将函数文档转换为抽象语法树(AST),以改进编码生成。 -一段时间以来,从不完整的规范生成编码是可能的。 -像ALPS这样的系统生成的编码相对于它们的示例或报告失败是正确的。 -像GPT-4这样的大型语言模型(LLM)很难处理分层多步骤推理任务,例如生成复杂程序。 -Parsel是一个使用编码LLM和自然语言函数描述自动实现和验证复杂算法的框架。 -LLM可以用于编码生成的某些方面,而基于规则的方法可以应用于其他部分。 -重复的编码应该被抽象,而不是由概率模型生成。 -语言模型可以通过对编码执行的微调和暴露于试错来学习避免错误。 -当前编码LLM预测下一个词元,而无需访问正式语义、解释器、调试器或编译器。 -抽象简化了编码,并且有一些技术可以在运行时从错误中恢复。 -更高级别的语言已经进化为对常见模式进行更简洁的编码。 -程序合成是一个长期存在的领域,有许多应用。 -神经程序综合并不是一个新概念。 -从没有程序示例的行为示例中综合程序是一种既定的做法。 -直接操作抽象语法树,而不是源编码,被视为未来的进步。 -使用样板文件较少的语言是减少重复编码的解决方案。
2024-01-31 21:49:50 +0800
ReGAL重构优化抽象的方法虽然创新,但可能无法充分反映领域专家的复杂编码实践,这可能会抑制其实用的积分。领域专家经常将丰富的隐性知识和领域特定启发法编码到他们的编码中,这对于广义模型的复制来说可能是一个挑战。这种差异可能导致抽象,尽管它们在理论上很优雅,但可能不适合专家设计的实用、上下文驱动的解决方案。例如,ReGAL的抽象虽然被设计为封装通用的子例程和动态,但可能会引入额外的层,从而模糊编码的可读性,并使不熟悉这些自动化模式的开发人员的调试复杂化。增强ReGAL实用性的关键在于确保其抽象不仅是可概括的,而且与领域专家的心理模型和实践需求产生共鸣。这可能涉及利用领域专家的直接输入迭代改进ReGAL的模型,或者开发混合系统,将ReGAL自动抽象与专家驱动的设计模式相结合。这样的合作可能会导致对何时以及如何应用ReGAL抽象有更细微的理解,在可重用性和领域特定性之间取得平衡,这符合专家的直觉,并保持编码的清晰性。
2024-01-31 21:49:54 +0800