看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能

简介: 【7月更文挑战第12天】加州伯克利研究团队利用神经扩散模型创新程序合成,通过在语法树上反向消除“噪声”实现迭代编辑,改善了传统LLMs自回归生成的局限性。这种方法能看手绘草图生成图形程序,结合搜索进行调试,适用于逆图形任务,性能优越,但目前仅支持有限的程序结构。[[arxiv:2405.20519](https://arxiv.org/pdf/2405.20519)]

最近,加州大学伯克利分校的研究人员提出了一种基于神经扩散模型的新型方法,用于程序合成。该方法通过在任何上下文无关文法的语法树上进行扩散操作,为程序合成领域带来了新的突破。

在传统的程序合成中,大型语言模型(LLMs)通常一次生成一个代码令牌。然而,这种自回归生成过程缺乏对程序输出的反馈,导致模型在生成代码时无法根据输出进行调整。此外,直接训练LLMs来提出编辑建议也面临着丰富的编辑数据稀缺的挑战。

为了解决这些问题,研究人员提出了一种基于神经扩散模型的方法,该方法直接在语法树上进行操作。类似于图像扩散模型,该方法通过反转应用于语法树的"噪声"来实现。与逐个生成代码令牌不同,该方法通过迭代编辑代码来保持语法有效性,这使得它很容易与搜索结合使用。

该方法被应用于逆图形任务,其中模型学习将图像转换为生成这些图像的程序。通过与搜索结合使用,该模型能够编写图形程序,查看执行结果,并调试它们以满足所需的规范。研究人员还展示了他们的系统如何为手绘草图编写图形程序。

该研究的主要贡献包括:

  1. 提出了一种基于在语法树上进行扩散的新颖程序合成方法。
  2. 实现了一种基于逆图形任务的方法,该方法在性能上显著优于先前的方法。

该研究的新颖之处在于,它将扩散模型的成功经验从图像生成领域扩展到了程序合成领域。通过利用扩散模型,该方法使模型能够学习迭代细化程序,同时确保语法有效性。此外,该方法还允许模型在每个步骤中观察程序的输出,从而有效地启用了调试过程。

然而,该方法也存在一些限制。首先,它目前仅适用于没有变量绑定、循环、字符串、连续参数等的表达式。虽然研究人员认为该方法可以扩展到支持这些功能,但需要更多的工作和仔细的设计。其次,与当前的大型语言模型相比,该方法在许多领域中生成复杂程序的能力有限。

论文地址:https://arxiv.org/pdf/2405.20519

目录
相关文章
|
消息中间件 存储 Kafka
【Kafka】Kafka 概述分析
【4月更文挑战第5天】【Kafka】Kafka 概述分析
【Kafka】Kafka 概述分析
|
存储
在Arduino中使用数学库
在Arduino中使用数学库,可以通过包含`<math.h>`头文件来访问一系列数学函数,如sin、cos、tan等。使用这些函数前需确保已正确引入库,并了解各函数参数与返回值类型,以便进行精准的数学运算。
|
分布式计算 资源调度 Hadoop
Hadoop【问题记录 02】【hadoop-3.1.3 单机版】ResourceManager无法启动NodeManager启动后过自动关闭 javax/activation/DataSource
【4月更文挑战第2天】Hadoop【问题记录 02】【hadoop-3.1.3 单机版】ResourceManager无法启动NodeManager启动后过自动关闭 javax/activation/DataSource
484 2
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
911 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
|
8月前
|
算法 NoSQL Java
场景题:10亿QQ用户,如何统计在线人数?
在竞争激烈的就业市场中,面试不仅考察八股文、算法和项目经验,场景题也愈发重要。本文介绍Java面试中的“在线人数统计”问题:面对亿级用户,如何高效统计在线人数。传统数据库方案难以应对频繁的上线下线操作带来的IO压力,而使用Bitmap(位数组)或Redis的Bitmap命令则能有效解决这一问题。通过将每个用户的在线状态映射到位数组中,仅需119.2MB内存即可处理10亿用户,在线人数统计变得简单高效。
317 9
|
JavaScript 前端开发 应用服务中间件
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
490 0
|
存储 C语言
【c语言】玩转文件操作
本文介绍了C语言中文件操作的基础知识,包括文件的打开和关闭、文件的顺序读写、文件的随机读写以及文件读取结束的判定。详细讲解了`fopen`、`fclose`、`fseek`、`ftell`、`rewind`等函数的使用方法,并通过示例代码展示了如何进行文件的读写操作。最后,还介绍了如何判断文件读取结束的原因,帮助读者更好地理解和应用文件操作技术。
258 2
|
人工智能 安全 物联网
《阿里云物联网:连接智能未来的桥梁》
在数字化飞速发展的今天,物联网技术正以前所未有的速度改变着我们的生活和工作方式。阿里云物联网作为行业领军者,凭借其在云计算、大数据和人工智能等领域的深厚积累,为全球用户提供了一站式的物联网解决方案。阿里云物联网不仅拥有强大的云平台支撑和丰富的物联网产品体系,还具备智能化应用开发能力和完善的安全保障体系。从智能家居到智能工业,从智能交通到智能城市,阿里云物联网广泛应用于各个领域,并将持续加大技术创新和产品研发力度,拓展国际市场,与全球合作伙伴共同推动行业的发展。阿里云物联网将继续发挥其技术优势和创新能力,为全球用户提供更加智能、高效、安全的物联网解决方案。
241 1
|
监控 Java 微服务
使用Spring Boot构建微服务架构
使用Spring Boot构建微服务架构
|
机器学习/深度学习 算法 PyTorch
使用Pytorch中从头实现去噪扩散概率模型(DDPM)
在本文中,我们将构建基础的无条件扩散模型,即去噪扩散概率模型(DDPM)。从探究算法的直观工作原理开始,然后在PyTorch中从头构建它。本文主要关注算法背后的思想和具体实现细节。
9232 3