0

0

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

王林

王林

发布时间:2024-07-01 17:23:10

|

425人浏览过

|

来源于机器之心

转载

事实证明,扩散模型不仅能用于生成图像和视频,也能用于合成新程序。

假设我们给模型一张手绘的「5」状图形,它就能通过不断突变来修改程序,最终得到能输出目标图形的程序。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
该模型来自加州大学伯克利分校的一个研究团队,他们提出的这种程序合成新方法使用了神经扩散模型来直接操作句法树。

论文一作为该校博士生 Shreyas Kapur,其导师为该校计算机科学教授 Stuart Russell。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
  • 论文标题:Diffusion On Syntax Trees For Program Synthesis
  • 论文地址:https://arxiv.org/pdf/2405.20519
  • 项目地址:https://tree-diffusion.github.io/
  • 代码库:https://github.com/revalo/tree-diffusion

扩散模型之前已经在图像生成领域取得了巨大成功。而该团队发现,通过利用扩散机制,可让模型学会迭代地优化程序,同时确保句法有效性(syntactic validity)。这种新方法的关键在于可让模型观察程序在每一步的输出,从而实现有效的调试流程。

迭代的能力已经在 AlphaZero 等系统中得到了体现,而扩散机制的迭代性质也就很自然地会被用于基于搜索的程序合成。

该团队发现,通过在训练扩散模型的同时训练一个价值模型,就可以引导其中的去噪过程得到能输出所需结果的程序。这样一来,便能高效地探索程序空间,在生成过程中的每一步都做出更明智的决策。

为了实现该方法,该团队选择了逆向图形任务(inverse graphics task),即假定使用特定领域的语言来绘制图像。

该团队表示:「逆向图形任务天然就适合我们的方法,因为代码中的一点微小改变就能导致所得图像出现有意义的语义变化。」

举个例子,如果图像中出现了一个放置错误的图形,那就能被轻松看见并定位到程序空间中。图 1 给出了一些示例。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
这项研究的主要贡献包括:

1. 提出一种在句法树上使用扩散的全新方法
2. 针对逆向图形任务实现了该方法,并发现新方法优于之前的方法。
 
方法

简而言之,该方法的核心思想是:为句法树开发一个去噪扩散模型,类似于为视觉任务开发的图像扩散模型。

首先来看一个来自 Ellis et al. 论文《Write, execute, assess: Program synthesis with a repl》中的任务示例:根据图像生成一个构造实体几何(CSG2D)程序。使用 CSG2D,我们可以使用加法和减法等布尔运算将圆和四边形等简单的原语组合起来,从而能使用下面的上下文无关语法(CFG)创建出更复杂的形状:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
在图 2 中,z₀ 是目标程序,x₀ 是 z₀ 渲染过的版本。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
任务就是逆转 x₀,从而恢复得到 z₀。首先,去噪过程将 y=16 随机突变为 y=10。然后再将左侧有两个形状的子树转变成只有一个形状的新子树。这里的目标是基于图像 x₀,从 z₃ 和 x₃ 开始,训练一个能逆向该去噪过程的神经网络,从而得到 z₀。

下面首先将介绍如何将「噪声」添加到句法树中,然后将详细描述如何训练逆向该噪声的神经网络,最后将描述如何使用该神经网络来执行搜索。

采样微小突变

令 z_t 为时间 t 时的程序。令 p_N (z_{t+1}|z_t) 为将程序 z_t 随机突变成 z_{t+1} 所基于的分布。这里希望 p_N 突变满足两点:(1) 很小,(2) 能得到句法有效的 z_{t+1}。

为此,该团队探究了大量有关基于语法的模糊测试的计算机安全文献。为了确保突变很小,他们首先定义了一个函数 σ(z),其能给出程序 z 的「大小」。在实验中,则是将 CFG 中的一组端点(terminal)定义为原语。

举个例子,如果用他们的 CSG2D 语言来写,上述原语就为 {Quad, Circle}。使用该语言时,该团队的做法是让 σ(z) = σ_primitive (z),这能统计原语的数量。σ(z) 还可能包含深度、节点数量等选项。

然后,基于精确的约束条件 σ_min

为了让给定程序 z 发生突变,首先可在其句法树中生成一个在某个 σ_small 范围内的候选节点集合:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
然后,从该集合中均匀采样一个突变节点:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
由于能读取整个句法树和 CFG,因此知道了哪条生成规则能得到 m,并由此可以确保得到句法有效的突变。举个例子,如果 m 是一个数值,那么替代它的也应该是一个数值。如果 m 是一个一般子表达式,那就可以把它替换成任何一般子表达式。因此,可采样出 m',这是 m 的替代:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
策略

前向过程

该团队将程序合成问题视为一个推理问题。令 p (x|z) 为观察模型,其中 x 可以是任意类型的观察。任务是逆转这个观察模型的方向,即给定某个观察 x 得到一个程序 z。

首先,从一个数据集 D 取出某个程序 z₀,或者这里的做法是从 CFG 随机采样一个程序。即采样一个满足 σ(z₀) ≤ σ_max 的 z₀。然后通过下式描述的过程向 z₀ 添加噪声,执行 s 步,其中 s ∼ Uniform [1, s_max],而 s_max 是一个超参数:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
然后,训练一个建模以下分布的条件神经网络。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
其中 ϕ 是该神经网络的参数,z_t 是当前的程序,x_t 是该程序当前的输出,x₀ 是需要求解的目标输出。

逆向突变路径

由于能够获取基本真值突变,因此可以简单地通过前向过程马尔可夫链 z₀ → z₁ →... 来逆向采样的轨迹,从而生成用以训练神经网络的目标。乍一看,这或许是个合理选择。但是,直接训练模型逆向最后一次突变有可能为神经网络创造出远远更有噪声的信号。

举个例子,在一个大得多的句法树中,一种颜色的突变路径为:
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
目标图像 x₀ 的颜色是 Red,而突变后图像 x₂ 的颜色是 Green。如果只是简单教模型逆向上述马尔可夫链,则可能会训练网络将 Green 变成 Blue,即便可以直接训练网络将 Green 变成 Red。

因此,为了创建更好的训练信号,可以计算目标树与突变树之间的编辑路径。该团队使用了一种大体上基于树编辑距离(tree edit distance)的树编辑路径算法。广义的树编辑距离问题允许插入、删除和替换任意节点。但这里的设定不同,对树的编辑仅能在一个只允许小突变的动作空间中实现。

对于两个树 z_A 和 z_B,可以线性方式比较它们的句法结构。对于已经满足 ≤ σ_small 的改变,就将其加入到突变列表中。对于 > σ_small 的改变,则寻找能降低两个树之间距离的首个突变。因此,对于任意两个程序 z_A 和 z_B 而言,可以在 O (|z_A| + |z_B|) 时间内计算出突变路径的第一步。
 
价值网络与搜索

该团队另外还训练了一个价值网络 v_ϕ (x_A, x_B),其输入为两张经过渲染的图像 x_A 和 x_B,预测的是生成这两张图像的底层程序之间的编辑距离。由于在训练期间已经计算出了树之间的编辑距离,因此对于任意一对经过渲染的图像,都能直接获得它们的基本真值程序编辑距离,这就可以用于以监督式方法训练该价值网络。

使用该团队提出的上述新策略和新价值网络,就可以为任意目标图像 x₀ 和随机初始化的程序 z_t 执行波束搜索。在每一次迭代中,都要维护搜索树中一组有最有希望值的节点,并且仅扩展这些节点。看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
架构

图 3 展示了新提出的神经架构的概况。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
他们的去噪模型 q_ϕ (z_{t−1}|z_t, x_t; x₀) 使用的是 Tsimpoukelli et al. 在论文《Multimodal few-shot learning with frozen language models》中描述的视觉 - 语言模型。至于图像编码器,他们使用的是现成可用的 NF-ResNet-26 的实现;这是一种无归一化器的卷积架构,可避免使用 Batch-Norm 时的时间不稳定问题。

该团队实现了一种定制化的 token 化器,其中使用了他们的 CFG 的端点为 token。该编辑模型的其余部分是一个小型的仅解码器 Transformer。

他们还添加了另外两种类型的 token:用作该模型的句子起点 token 的 以及允许模型在其上下文中引用位置的 token

给定一张当前图像,一张目标图像,和当前一个已 token 化的程序,训练该 Transformer 模型使之能以自回归方式预测编辑位置和替换文本。在进行预测时,解码过程受到语法的约束。该团队对预测 logit 进行了掩蔽,使之仅包含能表示句法树节点的编辑位置,以及仅得到对于所选编辑位置句法上有效的替换。

这里设置 σ_small = 2,这意味着只允许网络产生少于两个原语的编辑。对于训练数据,他们的做法是从 CFG 采样一个无限的随机表达式流。对于噪声步数 s,他们是从 [1, 5] 中随机选取一个。样本中有一定的比例 ρ 是完成随机采样新表达式作为突变表达式。他们使用单台英伟达 A6000 GPU 训练了三天时间。
 
实验

他们在 4 种特定领域的图形语言上进行了实验:CSG2D、CSG2D-Sketch、TinySVG、Rainbow。

所选用的基准方法为 Ellis et al. 提出的《Write, execute, assess: Program synthesis with a repl》以及 Sharma et al. 提出的《CSGNet: Neural shape parser for constructive solid geometry》。

图 4 比较了新方法与基准方法的性能。

可以看到,在 CSG2D 和 TinySVG 环境中,新提出的树扩散策略明显优于之前方法的策略。如果组合使用波束搜索,该策略的性能还能进一步提升,在解决问题时相比其它方法可以更少地调用渲染器。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
下图给出了新系统的一些成功示例以及基准方法的输出。可以看到,新系统能修复其它方法遗漏的较小问题。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
如下视频展示了两个使用 CSG2D-Sketch 语言基于草图恢复程序的示例,其表明观察模型并不一定需要确定性的渲染;它也可由随机的手绘图像构成。看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
为了理解这些新设计的影响,该团队也在简化的 Rainbow 环境中使用一个更小的 Transformer 模型进行了消融实验,结果见图 5。总体而言,这些设计选择的效果得到了证明。
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
更多细节内容请参考原论文。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6608

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

842

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1092

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

2183

2024.03.01

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4197

2026.01.21

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

497

2023.08.14

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2909

2024.08.16

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号