WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents
文章标题: WebShop: 面向可扩展真实世界网络交互的具身语言智能体
作者/机构: Shunyu Yao, Howard Chen, John Yang, Karthik Narasimhan; Department of Computer Science, Princeton University
A1 主要贡献
核心问题与研究目标: 近期的自然语言处理(NLP)和强化学习(RL)在能够利用语言上下文进行序列决策的智能体方面取得了进展。然而,一方面,这些交互式任务在语言概念上有限且难以扩展;另一方面,像GPT-3和BERT这样的大型语言模型在静态、非交互式的数据集上表现出色,但缺乏与语言外概念的充分“接地”(grounding)。为了推动具身语言模型的发展,研究者认为需要一种可扩展的交互式环境,它应具备:(1)能够大规模收集、反映真实世界用法的语言元素;(2)能够自动计算明确定义的任务反馈,以便于交互式学习,而无需昂贵的人工反馈。
研究方法与创新点:
本文介绍了WebShop,一个大规模、交互式的、基于网络的语言理解和决策环境。WebShop旨在模拟电子商务网站上的在线购物任务,以实现可扩展性并包含真实的语言和视觉元素。
1. 环境构建:WebShop环境包含从amazon.com抓取的超过118万种真实商品和超过1.2万条众包生成的文本指令。智能体的目标是理解人类提供的文本指令,并通过与网站交互(搜索、选择、定制)来购买匹配的商品。
2. 任务挑战:该任务对语言接地提出了多重挑战,包括理解组合式指令、查询(重)构建、理解并操作网页中的嘈杂文本,以及执行策略性探索。
3. 自动奖励机制:WebShop可以自动计算奖励,奖励函数综合考虑了所选商品的属性、类型、选项和价格。这避免了对人工评估的依赖,为大规模交互式学习铺平了道路。
4. 多模态观测与高级动作空间:环境提供两种并行的观测模式(HTML模式供人类使用,简化模式供模型使用),动作空间包括高级的文本搜索和按钮选择,比低级的鼠标点击更具可扩展性和可迁移性。
5. 智能体开发与评估:研究者收集了超过1600条人类演示数据,并利用强化学习(RL)、模仿学习(IL)以及预训练的图像和语言模型,训练和评估了多种智能体。
6. 性能与分析:最佳智能体取得了29%的任务成功率,显著优于基于规则的启发式方法(9.6%),但与人类专家(59%)仍有巨大差距。通过对智能体和人类轨迹的分析,揭示了未来改进的方向,如更鲁棒的搜索生成、显式记忆模块和更好地处理网页噪声文本。
7. Sim-to-Real迁移验证:将在WebShop上训练的智能体部署到真实的amazon.com和ebay.com网站上,结果表明智能体表现出非平凡的“模拟到现实”的迁移能力,证明了WebShop在开发能应用于真实世界的实用网络智能体方面的潜力。
图 1: WebShop环境。A: HTML模式下的一个任务轨迹示例,用户可以(1)在搜索页面搜索查询,(2)在结果页面点击一个商品,(3)在商品页面选择一个颜色选项,(4)查看商品详情页面并返回商品页面,以及(5)最终购买商品结束回合并获得奖励 r ∈ [0, 1](§3.2)。B: 用于智能体训练和评估的简化模式下的结果页面。蓝色文本表示可点击的动作,粗体文本表示智能体选择的动作。C: §3中使用的产品符号及其在A中产品的对应示例。属性Yatt对任务执行者是隐藏的。
A3 背景知识与设计原则
WebShop 环境
我们创建了WebShop,这是一个大规模的基于网络的交互式环境,包含从amazon.com抓取的超过110万种真实世界产品。在这个环境中,智能体需要根据自然语言指令中的规格找到并购买一个产品。WebShop采用模块化设计,将网站的页面转换与任务特定方面(如指令和奖励)解耦,从而可以轻松扩展到新的任务和领域。
表 1: WebShop中的动作。
图 2: 当直接使用指令作为搜索查询时,商品在搜索结果中的排名。
3.1 任务设定
POMDP形式化: WebShop可以被形式化为一个部分可观察马尔可夫决策过程(POMDP),即(S, A, T, R, U, O),其中S是状态空间,A是动作空间,T: S × A → S是确定性转移函数,R: S × A → [0, 1]是奖励函数,U是指令空间,O是状态观测空间。
状态与动作: 一个状态s ∈ S代表一个网页,分为四种类型:包含搜索栏的搜索页面、列出搜索引擎返回的一组产品的结果页面、描述一个产品的商品页面,或显示产品更多信息的商品详情页面(分别对应图1A的1-4)。对于一个产品y,我们定义以下符号:y¯
表示包括产品标题、描述和概述在内的各种文本字段的集合;yprice
表示价格;Yopt
表示一组购买选项;I
表示一组图像,每个图像对应一个特定选项。最后,每个产品都关联一组对智能体隐藏的属性Yatt
,这些属性从标题和商品详情页面中提取(§3.2),并用于自动计算奖励。一个动作a ∈ A(s)可以是搜索一个文本查询(例如,search[Red shoes]
)或选择一个文本按钮(例如,choose[Size 9]
),如表1所示。这两种动作类型不会同时可用——search
只在搜索页面允许;在所有其他页面,click
是唯一的动作选择。所选动作的参数(按钮)将被作为网页链接点击,这与先前环境如World of Bits【43, World of Bits: An Open-Domain platform for web-based agents, 2017, ICML】中的低级鼠标点击动作不同。由点击引发的转移确定性地将网页重定向到四种页面类型之一(表1)。由搜索引发的转移则基于一个确定性的搜索引擎(§3.2)。
观测: 我们使用Flask【41, Flask API, 2010】和OpenAI Gym【5, OpenAI Gym, 2016, arXiv preprint arXiv:1606.01540】提供了两种并行的观测模式来渲染状态和指令S × I → O:(1)HTML模式,包含网页的HTML,允许在网页浏览器中进行交互(图1A);(2)简化模式,将原始HTML中无关的元数据剥离,形成更简单的格式(图1B)。§4.2中的人类性能得分是在HTML模式下收集的,而所有模型则在简化模式下进行训练和评估。值得注意的是,虽然环境允许在HTML模式下基于原始像素训练强化学习智能体(如Shi等人【43, World of Bits: An Open-Domain platform for web-based agents, 2017, ICML】),我们认为这提供了一个非常低级且非语义的动作空间。此外,编写一个转换器将任何新的HTML页面转换为简化格式以供训练好的智能体使用是直接的,这使得模拟到现实(sim-to-real)的迁移成为可能。
指令与奖励: 每个自然语言指令u ∈ U包含以下信息:一个非空的属性集Uatt,一个选项集Uopt,以及一个价格uprice。指令由人类标注员基于一个目标产品y生成。指令收集过程是轻量级且可扩展的(§3.2)。具体来说,Uatt ⊆ Yatt是产品属性的一个子集,Uopt ⊆ Yopt是产品选项字段-值对的一个子集,uprice > yprice是一个设定为高于目标产品价格的价格。例如,指令“你能帮我找一双防水、鞋底柔软的黑蓝色运动鞋吗?价格要低于90美元。”包含了上述的属性Uatt = {“防水”, “软底”}和选项Uopt = {“颜色”: “黑蓝色”}。在每个回合结束时,智能体在时间步T收到一个奖励r = R(sT, a),其中a = choose[buy]
,y是智能体在最终状态sT中选择的产品,Yatt和Yopt是其对应的属性和选项。奖励定义如下:
其中,类型奖励rtype = TextMatch(y¯
, y¯*
)基于文本匹配启发式算法,当y和y*具有相似的属性和选项但明显是不同类型的产品时,会给予较低的奖励。例如,“黄油”和“植物基肉”类型不同,但都可能包含“零残忍”、“非转基因”等属性以及“尺寸:2包装”的选项。TextMatch(·)的具体公式见附录§A.5。
评估指标: 我们使用两个评估指标:(1)任务得分(Task Score):定义为(100 × 平均奖励),捕捉了在所有回合中获得的平均奖励;(2)成功率(Success Rate, SR):定义为r = 1的指令所占的比例。请注意,即使最终产品不是y*,一个回合也可能获得r = 1——例如,可能有很多商品满足“我想要一件红色衬衫”的目标,即使该目标是基于一件特定的红色衬衫生成的。
3.2 环境实现
数据抓取: 我们使用ScraperAPI【35, ScraperAPI, 2015】从amazon.com抓取了1,181,436种产品,涵盖5个类别(时尚、美妆、电子、家具和食品),使用了113个子类别名称作为查询。产品文本(标题和商品详情)的平均长度为262.9,词汇量为224,041(词频高于10)。此外,这些产品共有842,849个独特的选项,反映了数据的规模和复杂性。更多关于产品抓取的细节在附录§A.1。
搜索引擎: 我们使用Pyserini【28, Pyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Representationss, 2021, arXiv preprint arXiv:2102.10073】作为搜索引擎,其中索引是使用BM25稀疏检索器离线构建的,每个产品的文本由标题、描述、概述和定制选项拼接而成。该搜索引擎是确定性的,这有助于模仿学习和结果的可复现性。更多细节在A.3。
属性挖掘与标注: 每个产品都标注了一组隐藏属性,用于表示其潜在特征以及计算奖励,如§3所述。属性是一个描述产品特性的简短自然语言短语(示例见图1)。我们通过计算每个产品类别中,拼接的标题和描述中所有二元组(bi-grams)的TF-IDF分数来挖掘属性。我们审查了每个类别的前200个二元组,通过检查剔除了噪声(判断标准是该二元组是否对人可理解),然后将它们分配给产品。我们整合了一个包含670个属性的属性池。更多细节见附录§A.2。
自然语言指令: 我们使用亚马逊土耳其机器人(AMT)来收集指定目标产品及相应选项的自然语言指令。具体来说,我们会向AMT工作者展示一个采样出的目标产品,包括产品标题、类别、属性和购买选项,并要求他们编写一条指令,以指示一个自动购物智能体找到该目标。工作者被要求避免过于具体,例如在指令中包含整个标题,但要忠实地描述目标产品。我们总共收集了12,087条语言多样的指令,总词汇量为9,036个词,平均长度为15.9个词。我们在附录§A.4中提供了详细的标注过程和界面。
人类演示: 我们收集了人类在WebShop的HTML模式下执行任务的轨迹,以了解任务对人类的难度并分析人类如何解决该任务。我们使用资格测试来培训和筛选有积极性的工作者来执行任务。我们总共招募和培训了13名工作者进行数据收集,并从中选出表现最好的7名作为“专家”(示例见附录§A.6)。我们还利用这些数据来进行模仿学习(在§4.2中描述)。
3.3 研究挑战
WebShop将来自NLP和RL各个子领域的多个研究挑战汇集到一个基准测试中。这些挑战包括:1) 生成好的搜索查询【22, Internet-augmented dialogue generation, 2021, arXiv preprint arXiv:2107.07566】【59, Bridging the gap between indexing and retrieval for differentiable search index with query generation, 2022, arXiv preprint arXiv:2206.10128】和查询重构【37, Task-Oriented Query Reformulation with Reinforcement Learning, 2017, EMNLP】【51, Deep reinforced query reformulation for information retrieval, 2020, arXiv preprint arXiv:2007.07987】,2) 为导航网站而进行的策略性探索【55, Keep CALM and Explore: Language Models for Action Generation in Text-based Games, 2020, ArXiv】【56, Reading and acting while blindfolded: The need for semantics in text game agents, 2021, arXiv preprint arXiv:2103.13552】【29, Reinforcement Learning on Web Interfaces using Workflow-Guided Exploration, 2018, arXiv preprint arXiv:1802.08802】,3) 对文本状态和动作空间的鲁棒语言理解【3, Task-oriented dialogue as dataflow synthesis, 2020, TACL】【7, Multiwoz–a large-scale multi-domain wizard-of-oz dataset for task-oriented dialogue modelling, 2018, arXiv preprint arXiv:1810.00278】【17, Interactive fiction games: A colossal adventure, 2020, AAAI】【44, Alfred: A benchmark for interpreting grounded instructions for everyday tasks, 2020, CVPR】,以及4) 用于比较商品或回溯的长期记忆【53, Unsupervised predictive memory in a goal-directed agent, 2018, arXiv preprint arXiv:1803.10760】【13, Generalization of reinforcement learners with working and episodic memory, 2019, NeurIPS】【23, Towards mental time travel: a hierarchical memory for reinforcement learning agents, 2021, NeurIPS】(图1)。我们相信,在这些领域中任何一个的独立进展都将提高智能体的性能,同时WebShop也为开发跨学科技术提供了一个理想的试验平台,这些技术可以同时解决上述多个挑战。例如,外部记忆模块如果与策略性探索相结合可能会非常有效,或者探索可能有助于信息查询的重构。基于人类和模型轨迹的进一步分析在§5.3中。
图 3: 我们的基于选择的模仿学习(IL)模型的架构。图像I被传递给一个ResNet以获得图像表示。指令文本u被传递给一个Transformer(用BERT初始化)以获得文本表示。连接后的双模态表示与动作表示使用注意力融合层进行融合。得到的融合动作表示经过均值池化并通过一个MLP层降维为一个标量值S(o, a),表示动作choose[khaki]的logit值。
A2 方法细节
我们提出了多种结合了语言和图像预训练与模仿学习(IL)及强化学习(RL)的模型。更多细节请参见附录§B。
4.1 规则基线
一种简单的启发式方法。一个简单的规则基线是搜索完整的指令文本,然后在结果页面中选择并购买第一项商品,而不选择任何选项。强大的词汇搜索引擎使其成为一个简单的非学习信息检索(IR)基线,并且能够获得不小的属性奖励。然而,简单的启发式规则无法解决自然语言中的选项、进行策略性探索,或学习生成搜索内容,因此总奖励和任务成功率应该会很低。
4.2 模仿学习 (IL)
使用预训练语言模型分别学习搜索和选择。对于WebShop中呈现的文本生成和选择问题,我们提出使用两个预训练语言模型,通过人类演示分别学习如何搜索和如何选择。
模仿人类的搜索生成。我们将搜索构建为一个序列到序列的文本生成问题:智能体根据指令u生成一个搜索动作a = search[...],而不考虑任何其他上下文(例如,过去的搜索、访问过的商品)。我们使用了来自1012条训练集人类轨迹的M = 1421个指令-搜索对,构建了一个数据集D = {(u, a)}Mi=1,并微调了一个由φ参数化的BART模型【26, BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension, 2019, arXiv preprint arXiv:1910.13461】来进行条件语言建模:
模仿人类的选择。基于选择的模仿模型(图3)预测在观测o中所有可用点击动作A(o)上的一个概率分布,并最大化人类点击的按钮a ∈ A(o)的似然。我们从训练集的人类轨迹中构建了一个包含M0 = 9558个样本的数据集D0 = {(o, A(o), a)}M0i=1。我们使用一个12层的预训练BERT模型【10, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2019, ArXiv】(由θ参数化)将o编码为上下文相关的词元嵌入的观测表示,并类似地编码每个动作。每个动作表示被传递到一个与观测表示进行交叉注意力的层,然后进行均值池化得到一个单一向量,并与一个矩阵W相乘以获得一个标量分数S(o, a)。策略πθ(a | o, A(o))是动作分数S(o, a)上的softmax分布:
处理图像。我们使用一个预训练的ResNet-50【18, Deep Residual Learning for Image Recognition, 2016, CVPR】来预处理不同产品和选项的图像,将其转换为一个512维的特征向量,然后通过一个学习到的线性层将其转换为768维,并与BERT(o)拼接作为观测表示。
完整流程。在与环境交互时,我们将上述部分结合起来:在搜索页面,我们使用BART模型通过束搜索(beam search)生成排名前5的搜索查询,并随机选择一个。对于其他页面,我们使用BERT模型从策略πθ(a | o, A(o))中采样一个动作。我们发现这些方法有助于鼓励多样化的动作。相比之下,一个只使用生成的排名第一的搜索查询或概率最高的按钮的低效策略,可能会导致候选产品有限或陷入僵局(例如,在页面之间来回切换)。
4.3 强化学习 (RL)
使用在线RL微调选择模型。我们还使用在线RL对基于选择的IL模型进行微调(即IL+RL)。先前的工作表明,直接通过RL微调文本生成可能会导致语言漂移【24, Multi-agent Communication meets Natural Language: Synergies between Functional and Structural Language Learning, 2020, ACL】和性能下降。因此,我们冻结了BART模型,使其提供排名前10的搜索生成结果,作为供基于选择的IL模型学习选择的精炼动作空间——这一灵感借鉴自之前在文本游戏【55, Keep CALM and Explore: Language Models for Action Generation in Text-based Games, 2020, ArXiv】和指代游戏【24, Multi-agent Communication meets Natural Language: Synergies between Functional and Structural Language Learning, 2020, ACL】中的工作。我们使用策略梯度方法【32, Asynchronous methods for deep reinforcement learning, 2016, ICML】,其中回报为Rt = Eπ[rt + γRt+1],并学习一个值函数基线V(o) = Wv > BERT(o; θ),该值函数由{Wv, θ}参数化(BERT权重与策略共享):
值函数V(o)通过L2损失函数Lvalue = (Rt − V(ot))²进行学习。我们还增加了一个熵损失Lentropy = Σa∈A(ot) πθ(at | ot, A(ot)) log πθ(at | ot, A(ot))来防止过早收敛。我们完整的RL模型最小化总损失LRL = LPG + Lvalue + Lentropy。
A4 实验环境
数据集与划分: 实验使用了总共12,087条指令。这些指令被独立同分布地划分为训练集(10,587条)、开发集(1,000条)和测试集(500条)。研究者从训练集中随机采样一部分指令,为模仿学习(IL)收集了1,012条人类演示数据。此外,还从开发集中收集了54条演示数据,用于IL的超参数调整和模型检查点选择。所有500条测试指令都收集了人类轨迹,用于报告人类和模型的平均性能。
模型架构:
* 搜索生成模型: 使用预训练的BART模型【26, BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension, 2019, arXiv preprint arXiv:1910.13461】,通过模仿学习进行微调。
* 选择模型: 使用预训练的12层BERT模型【10, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2019, ArXiv】作为文本编码器,结合交叉注意力层进行动作选择。
* 图像处理: 使用预训练的ResNet-50模型【18, Deep Residual Learning for Image Recognition, 2016, CVPR】提取图像特征。
硬件配置:
* 模仿学习(IL)模型训练使用了一块NVIDIA RTX 2080 GPU,显存占用约10GB。
* 基于Transformer的强化学习(RL)模型训练使用了一块NVIDIA RTX 3090 GPU,显存占用约20GB。
* 基于GRU的RL模型训练使用了一块NVIDIA RTX 2080 GPU,显存占用约10GB。
软件与训练配置:
* 代码实现: IL模型的训练代码改编自Huggingface的glue训练示例(Apache License 2.0)。
* IL训练: 训练批次大小为1,梯度累积步数为32,学习率为2 × 10⁻⁵,共训练10个epoch,耗时约2小时。
* RL训练: 使用4个并行环境训练100,000步。使用Adam优化器,Transformer模型的学习率为10⁻⁵,RNN模型的学习率为5 × 10⁻⁴。Transformer模型训练耗时约27小时,GRU模型训练耗时约20小时。
A4 实验结果
5.2 结果
任务性能: 从图4可以看出,规则基线的得分为45.6,成功率仅为10%,因为它无法解决语言中指定的选项或探索更多产品,这经验性地证明了该任务的非平凡性。IL模型在两个指标上都显著优于规则基线,得分达到59.9。进一步的RL微调将得分提高到62.4,但成功率略有下降(从29.1%降至28.7%)(在§5.3中进一步分析)。我们还观察到模型与人类之间存在显著差距——我们最佳模型的成功率(29.1%)不到专家人类(59.6%)的一半,仅为平均水平人类(50%)的60%。这表明通过解决WebShop中的研究挑战,模型有很大的改进空间。
IL消融实验: 图4还包含几项消融实验,证实了模型的重要设计选择。当IL智能体的选择动作模型被随机初始化时(IL (w/o LP Choice);LP = 语言预训练),成功率下降了近三分之二,表明语言预训练对我们的任务至关重要。当IL智能体中的搜索查询生成器被一个简单的规则替换,即总是使用指令文本(IL (w/o LP Search)),奖励和成功率都下降了约3个点。这表明通过扩大搜索空间进行探索是重要的,但不如学习选择正确选项那么关键。我们尝试将过去一次的观测和最后五个动作的历史信息纳入模型,发现得分从59.9轻微下降到57.3,这表明需要更先进的技术来利用过去的信息。更多消融实验见§C。
图 4: 在WebShop测试集上,我们的模型经过3次试验的平均任务得分和成功率(%)。LP Search使用预训练的BART模型生成搜索查询,而IL w/o LP Search使用基于规则的启发式方法。LP Choice使用预训练的BERT权重初始化选择动作模型,而IL w/o LP Choice则从头开始训练一个Transformer。
表 2: 左:得分细分。右:轨迹中访问的状态数、检查的商品数和搜索次数的平均值、最大值和最小值。
RL消融实验: 当我们直接从预训练的BERT参数开始训练一个RL智能体(RL)时,其性能甚至比规则基线还要差。这表明IL热启动至关重要,可能是因为从传统语言任务到当前任务的领域转移非常大。我们还考虑了一个简单的、使用RNN文本编码器而非Transformer的RL模型(RL (RNN)),其成功率比IL + RL模型低10%以上,且方差大得多。我们推测,如果模型用更好的语言和任务先验知识进行初始化,使用更强大架构的RL可能会有助于提升和稳定性能。
5.3 分析
为了更好地理解智能体与人类专家之间的差异,我们进行了几项细粒度的分析。我们首先根据公式(1)将总分分解为四个子部分:1) 属性分 (|Uatt ∩ Yatt|/|Uatt|),2) 选项分 (|Uopt ∩ Yopt|/|Uopt|),3) 价格分 (1[yprice ≤ uprice]),和 4) 类型分 (rtype)。我们在表2中报告了轨迹统计数据,如每回合平均状态数、访问的独特商品数和搜索次数,并在表3中提供了轨迹的定性示例。
人类专家 vs. 智能体: 人类专家在所有得分细分项上均优于智能体(表2),但最显著的提升来自于选项得分(差距达28%),这揭示了智能体在选择正确的产品选项方面存在困难。人类的轨迹也更长,探索了更多的商品并进行了更多的搜索,且方差更大,显示了他们的灵活性。表3提供了一些轨迹样本。在第一个例子中,人类在从查询中移除了‘inches’, ‘width’, ‘height’和‘white’后决定再次搜索,因为产品文本通常包含这些词的缩写符号,如‘"’, ‘w’, 和‘h’。因此,搜索生成对模型来说是具有挑战性的,因为它涉及推理和适应具身环境,而来自查询重构【37, Task-Oriented Query Reformulation with Reinforcement Learning, 2017, EMNLP】【1, Boosting Search Engines with Interactive Agents, 2021, arXiv preprint arXiv:2109.00527】的思想可能有助于缓解这一问题。智能体在执行鲁棒的语义匹配方面也存在困难,这对于选择包含指令片段的嘈杂释义的选项至关重要。在第二个例子中,人类首先探索了几个产品,然后决定返回到第一个探索的产品,展示了IL+RL模型所缺乏的长期记忆能力。
表 3: 人类和IL+RL模型的两个示例轨迹(仅显示动作)。为了节省空间,我们省略了指令2中的一些人类动作,并为可读性截断了商品名称。红色表示选项,蓝色表示属性。
表 4: 使用“选择”神谕(Choice oracle)的任务性能。first和last分别指人类演示中发现的第一个和最后一个搜索查询。
IL后进行RL微调的效果: 表2还显示,RL微调使IL模型变得更“贪婪”而更少“探索性”,平均轨迹长度从9.4降至4.8,模型探索的商品和搜索查询也更少。结果是,属性、类型和价格得分都增加了,但选项得分从45.2降至38.9。这指出在RL期间需要更好地平衡探索与利用,例如通过使用内在奖励。
使用“选择”神谕(Choice oracle)的结果: 为了解构学习搜索与选择正确动作的效果,我们构建了一个“选择”神谕,它可以访问隐藏的奖励函数以及每个产品和指令的隐藏属性和选项。给定一个搜索查询,选择神谕将对每个结果项进行穷尽搜索,尝试所有选项组合,并最终选择能够最大化奖励的最佳商品和选项——这意味着每个回合将花费数百或数千步,而IL+RL模型和人类专家的平均步数分别为4.5和11.3步(表2)。我们使用了500个测试指令,并考虑了四种类型的搜索查询:指令文本(规则基线使用)、IL BART生成的顶级查询(所有学习模型使用),以及每个测试轨迹中人类专家的第一个和最后一个查询。选择神谕将规则启发式方法的成功率从9.6%提高到85.4%,甚至将人类专家的成功率从59.6%提高到87.8%(表4),这证实了选择正确的动作确实是当前模型的一个主要瓶颈,并且有巨大的改进空间。然而,即使有如此强大的选择神谕,使用更好的搜索查询仍然很重要,因为人类的最后一次搜索查询仍然优于其他搜索查询。这也表明人类专家通过重构提高了搜索查询的质量。
5.4 零样本模拟到现实(Sim-to-real)迁移
实验设置与结果: 最后,我们进行了一项“模拟到现实”的迁移实验,将在WebShop上训练的模型未经任何微调,直接在真实的亚马逊(amazon.com)和eBay(ebay.com)购物网站上进行测试。我们采样了100条测试指令,并部署了3个WebShop模型(规则、IL、IL+RL)与亚马逊和eBay进行交互,并根据公式(1)手动为每个回合打分。如表5所示,模型在这两个网站上的表现与图4中在WebShop上的表现相似,除了规则基线,这可能是因为亚马逊的搜索引擎比WebShop的更好。
表 5: 在100条测试指令上到Amazon和eBay的零样本sim-to-real迁移。Score / SR (Success Rate) 列表示总体性能。其余细分为得分项。
分析: 在amazon.com上,IL+RL取得了65.9的得分和25%的成功率,大幅超过规则基线的45.8得分和19%的成功率。同样,在ebay.com上,IL+RL取得了62.3的得分和21%的成功率,远超规则基线的31.7得分和7%的成功率。这些结果证实了尽管在数据(产品)和动态(搜索引擎)上存在领域偏移,训练出的智能体在真实世界的网络任务中仍具有积极的“模拟到现实”价值。我们还通过让土耳其机器人工作者(§3.2)在亚马逊和eBay网站上寻找指定产品,获得了人类平均88.0 / 79.7的得分和65% / 40%的成功率。虽然人类表现远好于智能体,但他们的网络交互速度要慢得多——平均每回合需要815秒,而我们的IL和IL+RL模型在亚马逊上每回合不到8秒。这种“模拟到现实”的迁移仅需要两处微小的代码添加,表明像WebShop这样的环境适合开发实用的具身智能体,以减少人类在真实世界网络任务上的工作量。我们在附录§D中提供了额外的性能和深入分析。
A5 结论
我们开发了WebShop,这是一个新的基于网络的基准,用于序列决策和语言接地,其模型是与一个电子商务网站的交互。我们对使用模仿学习和强化学习训练的自主智能体进行了实证评估,并在向真实世界购物网站的“模拟到现实”迁移中展示了有希望的结果。我们对模型和人类轨迹的定性和定量分析(§5.3)确定了WebShop中的几个研究挑战,并为未来结合多学科技术的模型开发提供了见解。例如,使用多模态数据【27, Oscar: Object-semantics aligned pre-training for vision-language tasks, 2020, ECCV】【52, Simvlm: Simple visual language model pretraining with weak supervision, 2021, arXiv preprint arXiv:2108.10904】、网络超文本【2, Htlm: Hyper-text pre-training and prompting of language models, 2021, ArXiv】或网络指令-动作映射【38, Mapping natural language commands to web elements, 2018, EMNLP】进行预训练,可以帮助智能体更好地理解和利用网页内容、动作和指令的丰富语义。来自查询(重)构建【22, Internet-augmented dialogue generation, 2021, arXiv preprint arXiv:2107.07566】【59, Bridging the gap between indexing and retrieval for differentiable search index with query generation, 2022, arXiv preprint arXiv:2206.10128】【37, Task-Oriented Query Reformulation with Reinforcement Learning, 2017, EMNLP】【51, Deep reinforced query reformulation for information retrieval, 2020, arXiv preprint arXiv:2007.07987】的思想可能有助于智能体扩大搜索探索的范围,而改进的动作探索【40, Curiosity-driven exploration by selfsupervised prediction, 2017, ICML】【12, Go-explore: a new approach for hard-exploration problems, 2019, arXiv preprint arXiv:1901.10995】【49, Multi-stage episodic control for strategic exploration in text games, 2022, arXiv preprint arXiv:2201.01251】和记忆【53, Unsupervised predictive memory in a goal-directed agent, 2018, arXiv preprint arXiv:1803.10760】【13, Generalization of reinforcement learners with working and episodic memory, 2019, NeurIPS】【23, Towards mental time travel: a hierarchical memory for reinforcement learning agents, 2021, NeurIPS】机制可以帮助智能体在长远和大的动作空间中做出更好的决策。WebShop的模块化设计还允许轻松地整合新的网络任务和领域,我们希望这将有助于塑造未来具身语言智能体的研究,使其具有更强的真实世界网络交互能力。
A6 附录
A 环境细节
A.1 产品抓取
数据来源与方法。我们使用ScraperAPI【35, ScraperAPI, 2015】从amazon.com提取公开可用的产品信息。我们使用了五个类别(美妆、食品、时尚、家具、电子产品)和313个相关的子类别名称(例如,时尚类别中的“女士乐福鞋与帆布鞋”,家具类别中的“吊灯和枝形吊灯”)来抓取1,181,436个产品。我们过滤掉了标题或产品ID重复的产品,但没有进行额外的筛选,以避免选择偏见。具体来说,由于amazon.com有自己的内容筛选流程,我们在随机抽样检查中没有发现任何个人可识别信息或冒犯性内容。
表 6: 产品项目统计。
A.2 产品属性挖掘
属性提取与筛选。我们使用scikit-learn中的TfidfVectorizer从产品标题和描述中提取可能的二元组(bi-grams)作为属性,以供进一步标注。我们手动检查这些属性,只保留那些具体且人类可读的,并过滤掉其余的。一个属性应至少适用于以下一种用途:1) IsGoodFor(适用于),2) HasA(包含),3) WhichIs(是……的),和 4) IsA(是一种)。例如,“oz ml”和“men women”这样的属性将被过滤掉,因为它们无法解析。另一方面,“hair color”也会被过滤,因为它不够具体,无法归入上述4个类别。像“dry skin”这样的属性可以适用于IsGoodFor的语境,例如某个化妆品对干性皮肤有好处。
A.3 搜索引擎
搜索引擎实现与性能。每次智能体执行搜索时,会检索并显示排名前50的商品,分布在五个搜索结果页面上,每个页面包含10个商品,智能体可以使用choose[Prev/Next page]
动作在结果页面之间导航。图2显示,当直接用指令文本进行搜索时,相应的商品有近1/3的时间出现在第一个搜索页面(排名1-10),但有超过一半的时间在任何搜索页面都找不到(排名50+)。这表明,虽然搜索引擎可以很好地基于词汇匹配来检索商品,但直接搜索指令不足以解决任务,基于指令进行良好的查询(重)构建非常重要。
A.4 指令收集
众包流程。我们通过向工作者提供一个产品,包括标题、产品类别及其属性和选项集,来收集人类编写的指令(图5,6)。我们通过让每位参与的工作者完成2-5个示例来进行资格测试。我们检查并为213名工作者授予了执行指令编写任务的资格。我们为每个示例支付0.15美元。我们预计不会有任何潜在的参与者风险。
A.5 奖励计算
类型奖励构成。类型奖励rtype
由3个元素组成:1) 粗粒度的产品类别匹配(如果匹配,c = 1),2) 细粒度的类别匹配(如果匹配,f = 1),和 3) 产品标题匹配。粗粒度的产品类别指的是§3.2中描述的5个类别。细粒度类别是产品在亚马逊网站上所属的类别链。例如,一个眼膜贴片会属于“美妆与个人护理 > 皮肤护理 > 眼部 > 皱纹贴片”这一细粒度类别。产品标题指的是§3中描述的y¯
。
图 5: 用于指令编写任务的亚马逊土耳其机器人(Amazon Mechanical Turk)界面。绿色框显示了任务的一般说明,灰色框显示了一个具体示例。
图 6: 用于指令编写任务的亚马逊土耳其机器人(Amazon Mechanical Turk)界面。蓝色框显示了实际的标注界面。工作者在提交前需要勾选复选框并在文本字段中编写指令。
这里,TextMatch(y¯
, y¯*
)是所选产品标题文本与目标产品标题文本之间的简单字符串匹配。我们只使用SpaCy解析器在标题文本中标注为PNOUN、NOUN和PROPN的词语。
A.6 人类轨迹收集
收集流程与人类表现分析。我们使用图1中的HTML环境来收集人类轨迹。我们通过资格测试筛选了13名工作者,每位工作者完成5个示例。平均奖励超过0.75的工作者获得资格。任务说明见附录末尾。我们观察到表现非常好的工作者和普通工作者之间存在明显的性能差距。我们将这些合格工作者中排名前50%的作为专家(共7人)。我们为每条完成的轨迹支付0.7美元。在人类评估中,13名工作者中有8人参与,其中5人属于前述的专家库。这8名参与者取得了75.5的总体得分和50.0%的成功率。我们观察到即使在专家内部也存在不可忽视的方差——表现最好的工作者取得了87.4的得分和69.5%的成功率,而表现最差的工作者得分仅为45.8,成功率为10%。表现最好的工作者也表现出更好的一致性——得分的标准差为2.3,而表现最差的对应值为3.1。我们提供了常见的人类失败案例示例,例如由于不耐烦而未匹配选项/属性(表7),这警示了在与人类工作者合作时任务存在的一些注意事项。
表 7: 两个失败的人类轨迹示例。一个常见的模式是缺乏耐心:在一次搜索后(即使使用了正确的属性,如右边的例子),表现较差的工作者就直接选择了第一个选中的商品。通常,该商品不包含所需的选项,即使其标题文本看起来相关。专家工作者会认识到需要选择正确的选项并返回以优化搜索,而表现较差的工作者则简单地确定当前选择的商品。
A.7 奖励验证
验证方法。我们从普通和专家MTurk工作者生成的轨迹池中各随机选择100个样本。然后,根据人类标准对每条轨迹进行手动重新评分;目的是确定奖励函数在多大程度上代表了人类对于所选产品是否满足给定指令的判断。人类评分计算过程完全遵循A.5节中列出的公式——属性、选项、价格和类型得分被分别确定,然后汇总计算总分——但有一个主要修改。我们不采用精确匹配的方法,而是在以下情况下给予分数:(1)所选产品的属性、选项或类型与目标产品信息在词汇上相似或同义;(2)所需的值在所选产品的描述中任何地方都没有逐字找到。例如,如果指令中指定了“lightweight”作为期望的属性,但在所选产品描述中找到了“easy carry”,那么所选产品的属性得分会增加,以反映找到了“lightweight”这个值。另一方面,如果目标产品需要“cyan”作为选项,但用户选择了“blue”,即使“cyan”是可选项,也不会给分。为确保评分计算无偏见,在人类评估评分完成之前,每条轨迹的原始奖励都未与人类评估分数进行比较。
验证结果。对于普通轨迹,自动任务得分为74.9,我们的人工得分为76.3,皮尔逊相关系数为0.856。对于专家轨迹,相应的分数分别为81.5和89.9,皮尔逊相关系数为0.773。因此,自动奖励似乎为实际任务性能提供了一个相当接近的下界。我们发现,对于普通工作者,87.0%的自动分数与人工分数的差距在10%以内,主要的误差来源是同义词或词汇上相似的词,这些词在自动奖励函数中没有被正确匹配。
表 8: 奖励验证统计数据
表8反映了我们的观察,即我们的奖励函数与人类的评分相似,但存在一贯地对所选产品过度惩罚的倾向。对于每个轨迹的产品,人类在所有类别(如属性、选项)的评分总是大于或等于原始评分。这种评分偏低是我们奖励函数精确匹配标准的结果。在未来的工作中,我们希望改进我们的匹配功能,以便在单个产品相对于目标指令的上下文中,它能识别同义词并决定是否给予额外分数。
B 模型细节
B.1 交叉注意力层
注意力机制。我们的交叉注意力层遵循Seo等人【42, Bidirectional attention flow for machine comprehension, 2016, arXiv preprint arXiv:1611.01603】的方法。将来自观测和动作的第i个上下文词元嵌入分别表示为oi和ai。oi和aj之间的注意力定义为:
其中⊗表示逐元素乘积,w1、w2、w3是可学习的向量。第j个动作词元的观测上下文向量则为:
然后我们对所有的caj进行平均池化,以得到动作得分S(o, a):
其中na是动作a的词元数量。
B.2 RNN基线
模型架构。我们的RNN基线受到Guo等人【14, Interactive fiction game playing as multi-paragraph reading comprehension with reinforcement learning, 2020, arXiv preprint arXiv:2010.02386】的启发,我们使用了与上文所述相同的注意力层,但将Transformer文本编码器替换为单层双向门控循环单元(GRU)【9, Empirical evaluation of gated recurrent neural networks on sequence modeling, 2014, ArXiv】,隐藏维度为512。另一个不同之处在于,我们还在指令和动作输入的词嵌入之间增加了一个交叉注意力,因为我们假设这可能有助于选项文本的匹配。
C WebShop实验细节
C.1 IL训练细节
训练配置。我们IL模型的训练代码改编自Huggingface的glue训练示例,其仓库采用Apache License 2.0许可。我们使用的训练批次大小为1,梯度累积步数为32,学习率为2 × 10⁻⁵,训练10个epoch。在单张RTX 2080 GPU上训练大约需要2小时,GPU显存占用约10GB。
表 9: 采样 vs. top-1。
表 10: 图像消融实验。
C.2 RL训练细节
训练配置。我们使用4个并行环境训练RL模型,共计100,000个训练步骤。每8步进行一次时间反向传播(BPTT)。我们使用Adam优化器,学习率为10⁻⁵(对于Transformer模型)或5 × 10⁻⁴(对于RNN模型)。
资源消耗。对于使用Transformer(BERT)架构的RL模型,在单张RTX 3090 GPU上训练大约需要27小时,GPU显存占用约20GB。对于使用GRU架构的RL模型,在单张RTX 2080 GPU上训练大约需要20小时,GPU显存占用约10GB。
选择神谕(Choice oracle)说明。为了解构学习搜索与选择正确动作的影响,我们构建了一个“选择神谕”,它可以访问隐藏的奖励函数以及每个产品和指令的隐藏属性和选项。给定一个搜索查询,该神谕会...
C.3 采样 vs. Top-1
动作选择策略。我们在表9中展示了搜索模型和选择模型分别使用束搜索(beam search)与top-1策略的比较。在测试期间,搜索模型使用束搜索生成排名前5的搜索查询。我们从这前5个查询中进行随机均匀采样,以在多次搜索的情况下增加搜索多样性。我们进行了实验,改为总是使用top-1搜索,结果显示性能略有提升(见下表),我们将在论文中包含这一结果。选择模型在每一步都有一组固定的候选动作(例如,所有可用的按钮),我们从选择策略中采样一个动作来执行,因为总是采取最优动作会导致性能显著下降。
C.4 图像消融实验
图像特征的重要性。我们为IL模型和去除了图像的消融IL模型分别使用不同的随机种子训练了3次,并在500个测试用例上评估了性能(表10)。移除图像仅轻微损害了整体性能,但显著降低了方差。这是合理的,因为我们当前的指令和奖励设置只使用文本信息。我们相信,未来在任务设置中融入视觉信息的工作将能更好地挑战模型的视觉理解能力,并使像CLIP这样的预训练视觉-语言模型更加有用。
D Sim-to-real 细节
D.1 Sim-to-real 迁移细节
技术流程。为了测试我们在WebShop中训练的IL智能体在amazon.com(ebay.com类似)上的表现,我们编写了一系列脚本,大体上实现了两个步骤:将真实的亚马逊URL转换为我们IL模型的输入(文本观测、有效动作集),并将模型的输出映射回真实的亚马逊URL。以下过程会重复进行,直到IL模型生成一个“立即购买”动作为止:
- 亚马逊URL → 亚马逊HTML → 亚马逊页面信息: 使用ScraperAPI【35, ScraperAPI, 2015】,我们首先获取给定亚马逊页面的HTML源代码,然后提取与在WebShop环境中渲染等效页面相关的信息(例如,标题、价格、选项)。
- 亚马逊页面信息 → WebShop HTML → 文本观测: 根据抓取到的信息,我们生成相应的WebShop HTML模式页面,然后将其转换为简化模式的文本观测。
- 亚马逊页面信息 → 有效动作集: 从抓取的信息中,我们确定模型可以采取的有效动作(例如,search[Red shoes], choose[Size 9])。这个逻辑被实现为页面类型到允许动作的映射。
- 文本观测,有效动作集 → IL模型 → 亚马逊URL: 给定文本观测和允许的有效动作,IL模型会产生一个动作。然后,这个动作通过一组映射规则被用来构建一个相应的亚马逊URL,然后循环重复。这个过程会持续到模型生成一个“立即购买”动作为止,从而终止循环。
D.2 Sim-to-real 迁移结果
结果分析。表5中得到的数据与图4中报告的WebShop数据高度一致,这表明WebShop在开发能够在真实网络环境中运行的具身智能体方面具有潜力。在两个网站之间,迁移到亚马逊的效果优于eBay,我们注意到(i)eBay与WebShop的产品差距更大,例如,像食品这样的某些商品类别在eBay上是不允许的。(ii)eBay的搜索引擎似乎较弱,有时对于冗长的指令会显示没有结果。下表11是一个由IL智能体在真实亚马逊网站上搜索生成的轨迹示例。
表 11: IL智能体在真实亚马逊网站上的一个示例轨迹(仅显示动作)。为了可读性,我们省略了指令和一些人类动作,并修剪了商品名称。红色表示选项,蓝色表示属性。
结论。很明显,智能体在WebShop环境中学习并表现出的探索行为和模式在这种迁移中并未丢失。这些结果指出了,尽管在数据(产品)和动态(搜索引擎)方面存在领域偏移,通过sim-to-real训练的智能体仍有机会迁移到其他真实世界的网络任务。话虽如此,人类与模型性能之间的差距也促使我们去探究当前工作中关于模型和WebShop环境的局限性。
E 潜在的社会影响和局限性
设计考量与潜在问题。WebShop的设计旨在最小化数据收集和处理中的人力投入,但关于多样性、公平性和代表性方面仍存在潜在担忧。开发与网络交互的RL智能体也带来了安全问题,尤其是在从模拟环境迁移到真实世界网站时。我们还讨论了当前任务(指令/奖励)在语义方面的其他局限性。
数据收集中的多样性与代表性。我们从amazon.com选择了五个常见类别,并使用所有子类别来抓取所有产品以最小化偏见。然而,我们的数据仍然偏向于该网站的国家(美国)和语言(英语),并且可能只代表了用户可能想购买的所有产品的一个子集。考虑到这一局限性,WebShop的设计允许产品数据可以轻松更新,以适应真实世界使用的不同代表性。
数据处理中的偏见。目前我们的属性标注是手动完成的,可能会受到标注者自身经验的偏见影响(例如,对体育产品属性的了解多于化妆品)。一个更自动化的替代方案是使用训练好的NLP模型(例如,关系提取)来提取产品属性,这可能比单个标注者更少偏见。我们的奖励设计是通用的,可以更新以更侧重于属性、选项、价格等。
开发网络智能体的安全性。与近期直接在万维网(WWW)上部署智能体的工作【33, WebGPT: Browser-Assisted Question-Answering with Human Feedback, 2021, arXiv preprint arXiv:2112.09332】不同,WebShop旨在提供一个现实的模拟环境,以可控和安全的方式训练智能体。在我们初步的sim-to-real实验中,智能体只能以两种固定的安全方式更新当前网页的URL(即搜索结果、打开商品),任何形式的表单提交动作(例如,点击选项或购买)都被控制在sim-to-real接口内,用于后续的奖励计算。因此,只有导航是在真实世界的网站上完成的。对于未来部署到具有更高级功能的真实世界网站,我们认为对可能的模型行为进行良好规范是避免有害动作的关键。
当前任务的局限性。我们当前的指令仍然受限于所使用的属性和选项。虽然属性很简单,有时过于通用(例如,“易于使用”),但选项可能会变得非常具体(例如,“d17(专用右后)”)。因此,智能体有时可能会利用一个特殊的选项作为线索来找到产品,而忽略指令的其他部分。如何更好地利用产品的图像和文本(包括当前工作未使用的用户评论)来设计更具语义和挑战性的指令,是WebShop的一个重要未来方向。
人类轨迹收集说明
以下页面展示了在§A.6中提到的人类轨迹收集文档。
WebShop任务
感谢您参与这个项目!在这个任务中,您需要在我们的亚马逊购物游戏网站上,根据一条指令购买一个指定的产品。您最终会得到一个分数,表示您的完成情况。请尽力获得尽可能高的分数。
如果您在某些情况下发现评分看起来奇怪/不公平,请联系我们。我们会调查这些情况。
在开始之前,请仔细阅读以下说明。
说明
1) 前往主页。指令将立即显示在登录页面上。
亚马逊购物游戏
2) 根据这条指令,请写一个能够产生符合描述的搜索结果的搜索查询。
请不要复制粘贴整个指令。我们鼓励您想出更有针对性的查询,查看结果,并在需要时再次搜索。
示例:
指令:
我需要一双9.5码、橡胶鞋底、由轻质醋酸乙烯酯制成的登山鞋。
不好的查询:(复制粘贴)
9.5码橡胶鞋底轻质醋酸乙烯酯登山鞋
理想的查询:(第一次尝试)
橡胶鞋底登山鞋 醋酸乙烯酯 (假设结果不理想)
理想的查询:(第二次尝试)
登山鞋 轻质 醋酸乙烯酯 (结果更好)
理想的查询:(第三次尝试)
轻质攀岩鞋 醋酸乙烯酯 (给出了有希望的结果)
本质上,您需要稍微“破解”一下搜索引擎。
请注意,我们的搜索引擎功能有限。像在谷歌搜索中那样在查询周围添加引号的技巧是无效的。
填写搜索栏后,点击“搜索”,如下所示。
亚马逊购物游戏
3) 点击“搜索”后,您将被带到一个结果页面。下面的截图是第二步示例查询显示的结果示例。每个页面最多显示10个结果。点击“下一页”按钮查看更多结果。
4) 点击任何蓝色的产品标题文本(即上图中的“B092F97B24”)以查看产品详情页面,如下所示。
● 有些页面有“选项”(即上图中的尺寸、颜色)。如果指令包含此类信息,请选择相应的选项(即使标题/特性/描述/评论中可能已包含此类信息)。在大多数情况下,如果您发现与指令中完全相同的选项,您很可能找到了正确的产品。不要使用产品图片来判断指令信息是否与产品匹配。
一个例子:
● 给定指令:“帮我找一双蓝色、11码的踝袜”
在这款产品…
和这款产品之间…
标题:休闲、运动、休闲踝袜。4、8或12双装
标题:Kirkland运动袜,带橡胶鞋底和后跟。易于穿脱
描述:100%美国制造。这些袜子适合任何场合。
特性:棉质,透气面料。可机洗。
描述:Costco批发袜,库存有限。
特性:涤纶和人造丝面料。保证持久耐用,否则退款。
选项:
● 尺寸:8, 9, 10, 11, 12
● 颜色:红、绿、黑、白、蓝
选项:无
左边的产品是更好的匹配,因为产品的标题、特性、描述和选项都反映了指令的信息。
虽然右边的产品看起来像一双蓝色的踝袜,但因为这些信息没有反映在文本中,我们不认为这是一个匹配。
因此,在寻找匹配时,可以随意使用产品图片作为参考,但请记住,我们进行的实验是基于文本的。
5) 决定产品是否匹配
一个匹配应该
● 在产品详情页面的文本(即标题、描述、特性、选项)中包含所有指令的信息
● 如果存在选项,应选择与产品信息对应的选项。
一个匹配不考虑
● 产品图片
● 您认为它是一个匹配!→ 点击产品详情页面上的“立即购买”按钮
● 您认为它不匹配或者另一个产品可能是更好的匹配…
○ 点击“返回”按钮回到原始的搜索结果列表(第3页)。从这里,重复第3-4步,直到找到最匹配的产品。
○ 点击“返回搜索”按钮。这将带您回到搜索栏页面(第2页)。如果您觉得所有结果都不匹配,请尝试另一个搜索查询。
6) 一旦您点击了“立即购买”,您将看到您的分数(不会用于决定报酬),以及一个您需要粘贴到MTurk界面的代码。然后您就完成了!
提示
通常能获得高分的模式:
● 优化搜索查询,直到出现有希望的产品
● 探索不同的产品页面(如果需要,进入下一页),查看选项和不同方面是否被覆盖
● 确保指令中的所有方面都被标题、描述页面或特性页面所覆盖
● 确保所有选项在产品页面上几乎逐字找到
● 低质量的做法是复制粘贴整个指令作为搜索查询
● 总是在不检查指令方面是否被覆盖的情况下点击第一个项目
● 点击明显没有选项匹配的项目
💬 评论讨论
欢迎在这里分享您的想法和见解!