将视觉语言模型训练为智能手机助手

24年4月Agile Loop和德国弗赖堡大学的论文“Training A Vision Language Model As Smartphone Assistant”。

为了解决能够执行各种用户任务的数字助理挑战,该研究重点是基于指令的移动设备控制域。 用大语言模型 (LLM) 的最新进展,本文提出一种可以在移动设备上完成各种任务的视觉-语言模型 (VLM)。 模型仅通过与用户界面(UI)交互来发挥作用。 它用来自设备屏幕的视觉输入并模仿类人交互,包括点击和滑动等手势。 输入和输出空间的这种通用性允许智体与设备上的任何应用程序进行交互。 与以前的方法不同,该模型不仅在单个屏幕图像上运行,而且在根据过去的屏幕截图序列以及相应动作创建的视觉语言句子上运行。该方法在具有挑战性的 Android in the Wild 基准测试中评估。

作者引入了一种专为 UI 环境设备控制而定制的视觉语言模型 (VLM)(GeminiTeam,2023;OpenAI,2023;Driess,2023)。 VLM 的主要功能是预测完成给定指令所需的后续操作。 其输入包括指令本身以及由屏幕截图和相关操作组成的历史记录,后者以自然语言格式化。
为了适应文本和视觉输入,将两种模式编码到统一的嵌入空间中。 语言模型中的tokens嵌入对文本组件进行编码,而视觉编码器将每个图像转换为低维表示。 可训练的线性投影将这些视觉嵌入与tokens嵌入的维度对齐。 随后,语言模型对这些嵌入的序列进行操作。 该序列从指令的tokens嵌入开始,然后是初始屏幕状态、第一个操作、后续屏幕状态等的嵌入。 这种方法能够将完整的轨迹表示为一系列嵌入序列,从而促进文本和视觉信息的无缝集成。

该方法的可视图解:根据指令、屏幕截图历史记录和动作历史记录为 VLM 创建一系列嵌入向量,这些向量首先被翻译为自然语言,然后被编码为tokens嵌入。 根据视觉编码器的不同,视觉嵌入向量的数量可能会有所不同。

请添加图片描述

对于视觉编码器,用预先训练的 Vision Transformer (ViT) 模型(Dosovitskiy et al., 2020),配置了 3.2 亿个参数,设计用于处理 384 × 384 大小的图像。输入分辨率的选择要确保识别精细细节,例如屏幕上出现的小文本。 使用可学习的投影矩阵将视觉编码器的输出投影到语言模型的tokens嵌入空间中。

对于语言模型,用 LLama-2-7B(Touvron,2023)。 选择仅解码器模型来自动回归文本生成的优先级,符合以文本形式预测动作的要求。 LLama-v2 模型以其在文本生成任务中的特征而闻名,这非常适合该应用程序。 使用 7B 参数版本的决定是出于计算效率的考虑,尽管更大的版本可能会产生更强大的性能。

值得注意的是,与以前的方法不同,该方法包含完整的历史状态,可以更全面地理解上下文并增强控制机制的稳健性。

Qwen-VL(Bai,2023b)的视觉编码器利用 Vision Transformer(ViT)架构,以及来自 Openclip 的 ViT-bigG(Ilharco,2021)的预训练权重。 输入图像的大小调整为 448 × 448 的分辨率,并由视觉编码器处理,将它们分割成步幅14的块,生成图像特征。 为了减少特征序列的长度,Qwen-VL 引入位置-觉察的视觉语言适配器。 该适配器使用随机初始化的单层交叉注意模块进行初始化,使用可训练的查询向量和位置编码来压缩图像特征。 然后将长度固定为 256 的压缩特征序列输入到语言模型中,该模型使用 Qwen-7B 中的预训练权重进行初始化(Bai,2023a)。 该模型总共有 96 亿个参数。

Qwen-VL 已接受过多种视觉语言任务的预训练。 特别是,这包括OCR等任务以及涉及在图像中定位目标的任务。 这两者都有助于理解屏幕的预训练任务,因为这需要理解文本以及定位按钮。

利用 AITW 基准测试提供的动作空间,其中包括四个字段:类型、触摸点、抬起点(手势动作专用)和键入的文本(打字动作专用)。 在此框架内,定义了六种不同的动作类型:双点手势、打字、返回(go back)、回主页(go home)、输入(enter)、任务完成和不可能任务。 双点手势伴随着触摸和抬起参数。 如果触摸和抬起彼此不同,则它可以表示滑动;如果它们足够相似,则可以表示轻击。 触摸和抬起参数均由触摸或抬起屏幕上的 (x, y) 坐标给出。

通过最初声明的动作类型,以及用于区分轻击和滑动的双点手势之附加规范,将这些动作翻译成自然语言。 对于点击操作,包含由空格字符分隔的触摸点坐标,并将坐标离散化为范围从 0 到 99 的 bin。例如,点击操作可能表示为“在 7 90 处点击”。 滑动操作表示为“从 3 44 滑动到 40 48”。 键入操作被描述为“ 输入文本“txt” ”,其中 txt 代表键入操作的键入文本。 返回(go back)、返回主页(go home)、输入(enter) 动作前面有“press”,表示按钮按下动作,例如“press home”。 AITW 中的动作与其自然语言表示之间的详细映射如表所示。

请添加图片描述
在 LLama+ViT 的训练过程中,冻结 LLM 的视觉编码器和tokens嵌入,将训练工作仅集中在语言模型本身和投影矩阵 Wproj 上,其用于将视觉编码器输出映射到语言模型的嵌入大小。 对于 Qwen-VL 模型,冻结除语言模型之外的网络所有部分,因为视觉和视觉投影部分已经过预训练,可以为语言模型生成有用的输入。 为了减少计算和硬件需求,对这两个模型都采用 LoRA(Hu et al., 2021)。

训练数据集包括演示,以及通过下一个token预测和屏蔽自注意训练的完整模型。 这种方法反映传统的 LLM 对特定域数据集的微调,但在损失计算期间,忽略与指令和图像嵌入相对应的预测。 因此,LLM 经过训练,可以根据提供的指令以及迄今为止的操作历史记录和屏幕截图,准确预测与正确操作相对应的token。 通过这种方式,模型可以在包括指令的完整轨迹上进行训练,就像在完整的句子上进行训练一样。

评估结果如下表所示,部分匹配得分对所有分组以及每个分组分别进行平均。 *请注意,由于正文中解释的动作表示不同,因此 Auto-UI 的结果不能直接与该方法进行比较。仍然包含这些结果以供参考。

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考】UML中的图之活动图

目录 1. 说明2. 图示3. 特性4. 使用方式4.1 对工作流建模4.2 对操作建模 1. 说明 1.Activity Diagram。2.活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。3.活动图专注于系统的动态视图,它对于系统的功能建模特别重要&#x…

快速对比 找出2个名单不同之处

import pandas as pd# 读取两个Excel文件 df1 pd.read_excel(1.xlsx) df2 pd.read_excel(2.xlsx)# 检查两个DataFrame的列是否相同 if list(df1.columns) ! list(df2.columns):print("两个Excel文件的列不一致。")print("文件1的列:", df1.co…

[力扣题解] 96. 不同的二叉搜索树

题目:96. 不同的二叉搜索树 思路 动态规划 f[i]:有i个结点有多少种二叉搜索树 状态转移方程: 以n3为例: 以1为头节点,左子树有0个结点,右子树有2个结点; 以2为头节点,左子树有1个…

微软: 用于文本到语音合成(TTS)的语言模型方法VALL-E

微软引入了一种用于文本到语音合成(TTS)的语言模型方法。具体而言,微软使用从现成的神经音频编解码器模型中得到的离散编码训练了一个神经编解码器语言模型(称为VALL-E),并将TTS视为条件语言建模任务,而不是像之前的工作那样进行连续信号回归。在预训练阶段,微软将TTS训练数据扩…

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址:Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法:Wait、Add和Done,以及内部有一个计数器。 (1) Wa…

【iOS】架构模式

文章目录 前言一、MVC二、MVP三、MVVM 前言 之前写项目一直用的是MVC架构,现在来学一下MVP与MVVM两种架构,当然还有VIPER架构,如果有时间后面会单独学习 一、MVC MVC架构先前已经详细讲述,这里不再赘述,我们主要讲一…

Unity自定义动画-Animation动画数据-How is “fileIDToRecycleName“ generated

一般美术和程序分工明确的项目 fbx确实是和动画一一对应的; 但一些独立,或者小工作室的项目,就没法保证了,关键还是在于 Unity的 .meta 目录 查找和对比了一下 .fbx 和 .meta: 缓存和不缓存Animation 具体的Animat…

.NET开源、功能强大、跨平台的图表库LiveChart2

LiveCharts2 是 从LiveCharts演变而来,它修复了其前身的主要设计问题,它专注于在任何地方运行,提高了灵活性,并继承LiveCharts原有功能。 极其灵活的数据展示图库 (效果图) 开始使用 Live charts 是 .Net 的跨平台图表库,请访问 https://livecharts.dev 并查看目标平…

C++之map和set 的封装

通过红黑树的学习(C之红黑树-CSDN博客)让我了解到map和set的底层如何实现,这一次我们来对map和set进行封装。 目录 1.map和set底层原理 2.map和set的定义 3.map和set的仿函数 4.map和set的插入 5.map和set的迭代器 5.1迭代器的构造 5.2…

Golang | Leetcode Golang题解之第87题扰乱字符串

题目: 题解: func isScramble(s1, s2 string) bool {n : len(s1)dp : make([][][]int8, n)for i : range dp {dp[i] make([][]int8, n)for j : range dp[i] {dp[i][j] make([]int8, n1)for k : range dp[i][j] {dp[i][j][k] -1}}}// 第一个字符串从 …

blender cell fracture制作破碎效果,将一个模型破碎成多个模型

效果: 1.打开编辑-》偏好设置。搜索cell,勾选上如下图所示的,然后点击左下角菜单里的保存设置。 2.选中需要破碎的物体,按快捷键f3(快速搜索插件),搜索cell fracture。 3.调整自己需要的参数配置…

02-WPF_基础(一)

1、基础 各模块类型 链接:如何:向 Viewbox 的内容应用 Stretch 属性 - WPF .NET Framework | Microsoft Learn WPF基础以及事件绑定与数据绑定的情况,,在学习XAML,数据结构以及一个项目学习平台来练手,网络…