SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能
概述
论文地址:https://arxiv.org/pdf/2406.09403
素描是一种应用广泛的有效工具,包括产生创意和解决问题。由于素描能直接传达无法用语言表达的视觉和空间信息,因此从古代岩画到现代建筑图纸,素描在世界各地被用于各种用途。儿童用它来解决几何问题,工程师用它来解释原型,建筑师用它来绘制蓝图,甚至科学家也用它来传达复杂的概念和实验结果。
多模态语言建模的最新进展主要集中在通过绘制所谓的 "中间草图 "来简化推理的任务上。在涉及几何或复杂数学问题等主要基准测试中,模型会收到图表图像,并回答需要符号或空间理解的问题。此时,例如在几何问题中,可以通过绘制中间草图(如辅助线)来提高推理能力,这与人们解决问题的方式相同。
计算机视觉基准具有类似的特点,例如,在物体检测中,会在物体周围绘制一个边界框;在深度估计中,会根据深度绘制一个颜色图,从而提高模型的检测性能。最近提出的 "BLINK "和 "VBench"也侧重于中间草图。但与此同时,对目前基于草图推理的语言模型所使用的框架还没有进行充分的研究。
本文提出的 SKETCHPAD 是一种为推理生成中间草图的工具。它受到文本排序链(CoT)推理的启发,促使底层视觉语言模型生成视觉工件,作为文本、程序和视觉推理混合链的一部分。例如,在证明三角形的角度之和为 180 度时,如下图(a)所示,SKETCHPAD允许代理通过引入新的辅助线来编辑图表。然后,它将提供关于这条新线和与之相关的角的补充信息,并利用这些信息来解决这个几何任务。

SKETCHPAD还提高了计算机视觉中模型空间推理的性能。如上图(d)所示,在判断一块饼干是否堆叠在另一块饼干之上时,模型首先会进行中间深度估计。通过分析这一估算结果,饼干显然是堆叠在一起的,因此模型可以得出准确的答案。
论文展示了 SKETCHPAD 在各种数学和计算机视觉任务中的有效性。在数学方面,论文涉及几何、数学函数、图形算法和策略游戏等问题。对于几何问题,SKETCHPAD 会根据图表输入和问题,使用辅助线和变量提示模型生成 Matplotlib 代码。即使在纯语言输入的情况下,SKETCHPAD 也能让模型绘制函数图并推理其性质。这些结果表明,即使是基于语言的输入,SKETCHPAD 也有能力支持推理。在所有类别的数学任务中,SKETCHPAD的表现都比基准GPT-4好10%左右。
计算机视觉可处理深度、空间推理、拼图、视觉对应、语义对应等各种任务,以及 MMVP 和 VBench 提出的问题。在这一领域,SKETCHPAD 使模型能够生成分割遮罩、裁剪图像、绘制边界框、缩放图像区域和叠加图像。与数学一样,SKETCHPAD 在所有七类计算机视觉任务中始终表现出色。例如,利用 SKETCHPAD,GPT-4 在 VBench 上提高了 14.3%,在 BLINK 深度和语义对应任务上分别提高了 12.1% 和 9.7%。
此外,对 SKETCHPAD 的有效性进行的分析以及对模型生成的计划和人类生成的计划进行的比较表明,它们非常一致,并显示出相似的推理模式。SKETCHPAD有望引发对更先进和可解释的多模态人工智能的新研究。
新的 SKETCHPAD 框架
本文提出的 SKETCHPAD 是多模态语言模型的通用框架,用于绘制草图作为推理的中间步骤,并利用草图进行进一步推理。下图举例说明了 SKETCHPAD 的工作原理。

输入多模态查询后,SKETCHPAD 代理会生成一个草图计划(思维)来处理查询,然后生成一个程序来生成草图(操作)。生成的草图(观察)是推理过程的可视化表示,模型对其进行分析,为查询生成最终输出。
在第一步 "思考 “中,模型分析上下文(包括查询、以前的想法、行动和观察)并生成下一步行动的思考计划。例如, 给定上图(a)中的 查询"查找 ∠EIC” ,模型的思维计划将画出与 BD 平行的辅助线 IX。
在第二步 "行动 "中,基于 “思想”,模型会执行操作视觉和文本内容的行动。在几何图形示例中,模型生成 Python 代码,修改原始几何图形以绘制辅助线。生成的代码将被编译并执行。
在第三步 "观察 "中,SKETCHPAD 环境会根据"操作 "返回新的观察结果。在几何示例中,将返回一个带有新辅助线的新图表。
多模态语言模型可以利用这一框架立即勾勒出来,无需进行微调或学习。
这个多轮交互过程一直持续到模型认为已经收集到足够的信息来回答查询为止。此时,模型会生成一个特殊的退出操作,并输出答案。
在传统研究中,语言模型主要生成和处理基于文本的观察和行为,而 SKETCHPAD 则不同,它允许模型同时处理视觉和文本内容。这样,模型就可以利用他们绘制的草图进行规划和推理,提高解决问题的能力。
草图绘制功能是 SKETCHPAD 的核心,它允许语言模型生成绘制草图的程序。这些程序通过调用各种专用视觉模型和 Python 绘图软件包来执行。与最近报道的 ViperGPT 和 VPD 类似,SKETCHPAD 允许语言模型通过生成代码来绘制草图。我们为语言模型提供了详细的工具说明,使其能够通过提示生成多模态内容(实际提示的示例可在本文的补充材料中找到)。
根据任务的不同,SKETCHPAD 使用多种工具来实现草图。对于数学任务,使用 matplotlib 和 networkx 等常用 Python 软件包绘制草图;而对于图像任务,在绘制草图时使用图像语言模型。这些模型包括在图像上绘制边界框的检测工具、绘制彩色遮罩的分割和标记工具,以及对分割进行编号和标注的工具。
数学任务中的素描
在这里,SKETCHPAD 被用来处理四个复杂的数学任务(几何、函数、图形算法和游戏策略)。我们的研究表明,将草图绘制功能集成到语言模型中能显著提高数学问题的处理能力,并取得新的先进成果。
首先是几何问题。在这方面,画辅助线对解决问题大有帮助。正如我们刚才看到的,在下图(a)中,问题是 “求∠EIC”。在这种情况下,语言模型计划画一条平行于 BD 的辅助线 IX,从而利用平行线的性质求出 ∠EIC。

为了评估 SKETCHPAD 的有效性,我们使用了 Geometry3K 数据集中的一个问题:SKETCHPAD 将几何图形和相应的 matplotlib 代码作为输入,提出并修改代码以生成辅助线,运行代码并在更新代码后添加辅助线。将几何图形可视化。
其次是函数问题。函数在科学、工程和经济学的各种应用中都很重要。在此,我们重点讨论IsoBench 数据集中的以下两项任务:偶偶分类和凸凹判定。偶偶函数分类确定一个函数是偶函数、奇函数还是两者都不是。对于所有 x,偶函数满足 f(-x) = f(x),而奇函数满足 f(-x) = -f(x)。凸凹判定也决定了一个函数是凸函数还是凹函数。
传统的语言模型会分析函数并试图证明其属性,而 SKETCHPAD 可以通过直观地勾画函数来高效地解决问题。为了确定下图(b)中函数的凸性,SKETCHPAD 使用 matplotlib 绘制了函数图,并直观地验证了其整体形状。

下一步是图算法问题。许多与计算机网络和运输系统相关的实际问题都可以表述为图算法问题:我们根据IsoBench 的以下三个图算法任务对 SKETCHPAD 进行了评估:连通性、最大流量和同构性。图形连通性决定了图形中两个顶点之间是否存在路径。最大流量是指在一个有边的网络中,在容量限制条件下,从源顶点发送到汇顶点的最大流量。图同构决定了两个图在结构上是否等同。
如下图 (b) 所示,在给出图形邻接矩阵后,SKETCHPAD 会使用 Python 的 networkx 库绘制实际的图形结构,从而可以直接对图形的属性和关系进行可视化推理。

最后是棋局策略。国际象棋棋局可以用不同的格式表示,如可视化棋盘状态或文本程序符号。即使只给出文本程序符号,SKETCHPAD 也会绘制棋盘、分析局面并制定策略;评估 SKETCHPAD 在 IsoBench 数据集的胜者识别任务中的表现,并根据最终棋盘状态、国际象棋找出对局结果(白胜、黑胜、和棋)。为了创建图形棋盘,SKETCHPAD 使用 Python 国际象棋库,以国际象棋的 Forsyth-Edwards Notation (FEN) 来绘制棋盘。
使用可访问 API 的多模态语言模型(gpt-4-turbo-2024-04-29 和 gpt-4o-2024-05-13)来评估 SKETCHPAD 的性能。这些结果与没有 SKETCHPAD 的基线、主要封闭源模型(如 Claude 3 和 GeminiPro)以及开源模型(如 Mistral 和 LLaMA-2 70B)进行了比较。
如下表所示,在所有任务中,SKETCHPAD 不断提高基础模型的性能,GPT-4o 平均提高 18.8%,GPT-4 Turbo 平均提高 13.5%。

特别是在图形连通性(Connectivity)和最大流量(Maxflow)等图形算法方面,观察到了明显的改进。例如,在 GPT-4o 上使用 SKETCHPAD 时,最大流量(Maxflow)的准确率达到 66.3%,比基础模型提高了 41.3%。同样,在函数任务中,GPT-4 Turbo 的准确率超过 90%,GPT-4o 的准确率超过 88%,在凸性和偶数分类任务中也有显著提高。此外,在游戏策略方面也有约 20% 的提高,这表明绘制的游戏棋盘提高了策略推理能力。这些结果表明,SKETCHPAD 是增强多模态语言模型在多个领域的推理能力的有效手段。
计算机视觉任务中的草图绘制
在这里,SKETCHPAD 被用来处理复杂的视觉推理任务。最近的研究(BLINK)表明,目前许多多模态语言模型仍然缺乏核心的视觉识别能力。而专用计算机视觉模型则具备这种能力。此外,SoM 研究表明,在图像上绘制分割掩码可以利用 GPT-4V 强大的视觉支撑能力。在本文中,我们将这些想法推广到 SKETCHPAD 中,以便使用专用视觉模型绘制语言模型草图。
SKETCHPAD使用三个复杂的视觉推理任务(VBench、MMVP 和BLINK)进行实验:VBench 是一个基准,包含有关图像中小项的问题;MMVP 是一个基准,包含视觉问题,旨在揭示基于 CLIP 的多模态语言模型的视觉缺陷;BLINK 是一个基准,包含视觉问题,旨在揭示基于 CLIP 的多模态语言模型的视觉缺陷。BLINK是一个包含视觉识别任务的基准,这些任务对人类来说很容易,但对多模态语言模型来说却具有挑战性。具体来说,它包括相对深度、空间推理、拼图、视觉对应和语义对应任务。

在 SKETCHPAD 中,语言模型使用多个模块(检测、分割、深度估计、滑动窗口视觉搜索和其他图像处理模块)来绘制和处理图像。这些模块以 Python 函数的形式实现,可由语言模型调用
检测模块将图像和文本查询(如 “猫”)作为输入,运行 Grounding-DINO 开放词汇对象检测模型,并绘制图像中检测到的边界框(带数字标签)。它还会返回边界框的坐标。
分割模块将图像作为输入,并返回一张绘有彩色分割掩码的图像。每个掩码都有一个数字标签。基础分割模型是 SegmentAnything 和 Semantic-SAM。深度估计模块将图像作为输入,并返回深度图。基础模型是 DepthAnything。
滑动窗口视觉搜索模块模仿人类在图像上搜索小物件的方式。它将文本查询作为输入,并在图像上执行滑动窗口。窗口大小为图像大小的 1/3,步长为图像大小的 2/9。返回检测到的图像斑块序列。
其他图像处理模块包括放大和裁剪(将图像和边界框作为输入,并返回框内的图像补丁)和叠加图像(将两幅图像和 alpha 值作为输入,并返回叠加图像)。
SKETCHPAD 充分利用这些模块,显著提高了多模态语言模型的视觉推理能力。这为有效解决复杂的视觉任务提供了一种新方法。
在此,我们在一项复杂的视觉推理任务中对多模态语言模型进行了实验,比较了它们在使用和不使用 SKETCHPAD 的情况下的表现,以及与主要多模态语言模型(Gemini、Claude 3、LLaVA 1.5、LLaVA-NeXT)的表现。资料来源如下表所示,SKETCHPAD 在所有任务中都持续提高了基础模型的性能,特别是带有 SKETCHPAD 的 GPT-4o 在所有任务中都取得了最新的成绩。

VBench 的表现优于 SEAL,在 GPT-4 Turbo 上提高了 18.5%,在 GPT-4o 上提高了 14.3%。在 BLINK 中,SKETCHPAD 对 GPT-4 Turbo 的平均绝对准确率提高了 6.6%,对 GPT-4o 的平均绝对准确率提高了 9.0%。
尽管 SKETCHPAD 模块只处理单幅图像,但在多幅图像任务(拼图、视觉对应、语义对应等)中也有显著改进。SKETCHPAD 的帮助更大。总之,SKETCHPAD 被证明是提高多模态语言模型在视觉推理任务中性能的有效方法。
总结
本文提出的 SKETCHPAD是一个为多模态语言模型生成中间草图的新框架。通过将辅助线、数学函数、图形和游戏可视化,该框架可大幅提高复杂数学推理任务的性能。
对于视觉推理任务,视觉专家已被添加到 SKETCHPAD 中;LM 在推理过程中调用这些专家,将预测结果可视化,例如来自物体检测模型的边界框或来自分割模型的遮罩,然后观察这些预测结果,以便进一步规划和推理。系统。
实验结果表明,SKETCHPAD 取得了新的先进成果,提高了语言模型在所有任务中的性能,SKETCHPAD 正在利用语言和图像的互补优势来应对日益复杂的推理挑战,并使语言模型更像人类。它有望成为实现多模态人工智能的重要一步。
相关文章:
SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能
概述 论文地址:https://arxiv.org/pdf/2406.09403 素描是一种应用广泛的有效工具,包括产生创意和解决问题。由于素描能直接传达无法用语言表达的视觉和空间信息,因此从古代岩画到现代建筑图纸,素描在世界各地被用于各种用途。儿童…...
[JAVA备忘录] Lambda 表达式简单介绍
目录 前言 函数式接口 Lambda 表达式使用实例 简单示例 1. 无参数,无返回值 2. 有参数,无返回值 3. 无参数,有返回值 4. 有参数,有返回值 解释: 集合框架 1.forEach:遍历集合 2.排序࿱…...
[python]使用flask-caching缓存数据
简介 Flask-Caching 是 Flask 的一个扩展,为任何 Flask 应用程序添加了对各种后端的缓存支持。它基于 cachelib 运行,并通过统一的 API 支持 werkzeug 的所有原始缓存后端。开发者还可以通过继承 flask_caching.backends.base.BaseCache 类来开发自己的…...
裸机按键输入实验
一、硬件原理分析 按键就两个状态:按下或弹起,将按键连接到一个 IO 上,通过读取这个 IO 的值就知道按 键是按下的还是弹起的。至于按键按下的时候是高电平还是低电平要根据实际电路来判断。前 面几章我们都是讲解 I.MX6U 的 GPIO 作为输出使用…...
GaussDB运维管理工具(二)
GaussDB运维管理工具(二) 集群管理组件cm_ctl工具介绍cm_ctl工具使用查询集群状态启停集群主备切换重建备DN检测进程运行查看实例配置文件手动剔除故障CNCM参数获取和配置停止仲裁 Cluster Manager(缩写为CM)是GaussDB的集群管理工…...
【HarmonyOS之旅】HarmonyOS开发基础知识(一)
目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...
Mysql数据究竟是如何存储的
Mysql行列式 开篇 笔者这几日在学习mysql是这么运行的这本书,感觉书中的内容受益匪浅,想整理成自己的话分享给大家,平时大家工作和生活中可能没有时间去专心投入读取一本书,而mysql是这么运行的这本书需要投入大量的时间的学…...
STM32单片机使用CAN协议进行通信
CAN总线(控制器局域网总线) 理论知识 CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线 CAN总线特征 两根通信线(CAN_H、CAN_L),线路少,无需共地差分信号通信&…...
Docker 入门:如何使用 Docker 容器化 AI 项目(二)
四、将 AI 项目容器化:示例实践 - 完整的图像分类与 API 服务 让我们通过一个更完整的 AI 项目示例,展示如何将 AI 项目容器化。我们以一个基于 TensorFlow 的图像分类模型为例,演示如何将训练、推理、以及 API 服务过程容器化。 4.1 创建 …...
MVVM、MVC、MVP 的区别
MVVM(Model-View-ViewModel)、MVC(Model-View-Controller)和MVP(Model-View-Presenter)是三种常见的软件架构模式,它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…...
【Verilog】期末复习
数字逻辑电路分为哪两类?它们各自的特点是什么? 组合逻辑电路:任意时刻的输出仅仅取决于该时刻的输入,而与电路原来的状态无关 没有记忆功能,只有从输入到输出的通路,没有从输出到输入的回路 时序逻辑电路&…...
C#都可以找哪些工作?
在国内学习C#,可以找的工作主要是以下4个: 1、游戏开发 需要学习C#编程、Unity引擎操作、游戏设计和3D图形处理等。 2、PC桌面应用开发 需要学习C#编程、WinForm框架/WPF框架、MVVM设计模式和UI/UX设计等。 3、Web开发 需要学习C#编程、ASP.NET框架…...
机器学习Python使用scikit-learn工具包详细介绍
一、简介 Scikit-learn是一个开源的机器学习库,用于Python编程语言。它建立在NumPy、SciPy和matplotlib这些科学计算库之上,提供了简单有效的数据挖掘和数据分析工具。Scikit-learn库包含了许多用于分类、回归、聚类和降维的算法,包括支持向量…...
蓝桥杯真题 - 扫雷 - 题解
题目链接:https://www.lanqiao.cn/problems/549/learning/ 个人评价:难度 1 星(满星:5) 前置知识:无 整体思路 按题意模拟;为了减少不必要的“数组越界”判断,让数组下标从 1 1 1…...
vue3项目结合Echarts实现甘特图(可拖拽、选中等操作)
效果图: 图一:选中操作 图二:上下左右拖拽操作 本案例在echarts示例机场航班甘特图的基础上修改 封装ganttEcharts组件,测试数据 airport-schedule.jsonganttEcharts代码: 直接复制粘贴可测…...
Log4j2 插件的简单使用
代码: TestPlugin.java package com.chenjiacheng.webapp.plugins;import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.lookup.StrLookup;/*** Created by chenjiacheng on …...
Linux之RPM和YUM命令
一、RPM命令 1、介绍 RPM(RedHat Package Manager).,RedHat软件包管理工具,类似windows里面的setup,exe是Liux这系列操作系统里而的打包安装工具。 RPMI包的名称格式: Apache-1.3.23-11.i386.rpm “apache’” 软件名称“1.3.23-11” 软件的版本号&am…...
读取硬件板子上的数据
SSCOM工具,先要安装一个插件 这样就可以读到设备数据...
Cesium 实例化潜入潜出
Cesium 实例化潜入潜出 1、WebGL Instance 的原理 狭义的的WebGL 中说使用 Instance, 一般指使用 glDrawArraysInstanced 用于实例化渲染的函数。它允许在一次绘制调用中渲染多个相同的几何体实例,而无需为每个实例发起单独的绘制调用。 Three.js 就是使用这种方…...
java引入jedis并且关于开放redis端口问题
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 目录 1. 引入jedis 编辑 2. 关于java客户端开放redis端口问题 3. 连接redis服务器 redis服务器在官网公开了使用的协议: resp…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
