RLHF 技术:如何能更有效?又有何局限性?

编者按:自ChatGPT推出后,基于人类反馈的强化学习(RLHF)技术便成为大模型构建和应用人员关注的热点。但该方法一些情况下效果却差强人意,有些基础模型经RLHF调优后反而表现更差。RLHF技术的适用性和具体操作细节似乎成谜。

这篇文章探讨了基于人类反馈的强化学习(RLHF)的工作机制,分析了RLHF的三个关键组成部分:基础模型、偏好模型和强化学习。并总结了RLHF的局限性:无法纠正事实错误或添加新能力。但它仍然是一个强大的工具,未来RLHF可能会整合更多的反馈方式,并持续优化其技术栈。让我们拭目以待!

以下是译文,Enjoy!

作者 | NATHAN LAMBERT

编译 | 岳扬

有一段时间,我最常被问到的问题是:“为什么基于人类反馈的强化学习(RLHF)能起作用,并且还能这么有效?”直到上周 (译者注:原文发表于2023年6月21日) ,我的回答一直都是:“没有人知道。”然而,现在这个问题的答案已经开始有了一些眉目。

只有在满足以下两个条件的情况下,RLHF才能在语言模型和其他领域中取得长期的成功。

首先,需要有一些实践或实验表明仅应用传统的监督学习(supervised learning)是不够的,pairwise preference data就是其中一个例子。 (译者注:此处pairwise preference data是指通过比较两个或多个选项,获取的用户喜好数据。在收集这种数据时,被调查者需要逐对比较选项,然后选择其喜好的选项。通过这种方式,可以确定不同选项之间的相对用户喜好关系。例如,假设我们要评估三种不同的手机品牌(A、B和C)的受欢迎程度。我们可以通过向被调查者提供一系列两两比较的选择来收集pairwise preference data。被调查者将被要求比较A与B、A与C以及B与C,然后选择他们更喜欢的选项。收集足够的pairwise preference data后,可以统计每个选项的用户喜好次数,从而确定它们在受访者中的相对受欢迎程度。)。

其次,这一点虽然不那么重要,但我怀疑RLHF在下面这种情况下也能表现得相当出色,即为了取得成功,需要在复杂的优化空间(complex optimization landscape)中进行渐进性的调整和优化。(讨论path dependency时,最好用constitutional AI 这篇论文中描述的内容来具体说明)

在这篇文章中,我将分享我们在数据和优化方面的一些发现,这些发现真正说明了为什么RLHF可以产生如此惊人的效果,同时也揭示了使用RLHF的困难之处。

图片

DALL·E 2023-06-18 16.45.45 - two humans plugged physically plugged into a computer, digital art

RLHF的影响相对难以衡量。从历史上看,并没有相关报告指出在传统的模型效果测试中RLHF会对模型效果产生显著影响。从这个角度来看,RLHF并不只是为了选择正确答案,这个观点将在后文的preference model部分详细阐述。我们可以参考GPT4技术报告[1]中的图8(提到RLHF在处理 toxicity(毒性)问题上有作用,然而这并不是一个确定的评估标准)。

图片

摘自GPT4技术报告

在 InstructGPT 的相关论文中指出, 与指令调优相比,RL 步骤实际上增加了幻觉(参见图4[2]),因此该论文备受关注。

然而,在WebGPT[3]相关文章中,研究人员发现相比于使用奖励模型(reward model)选择得分最高的生成样本的 “best-of-N sampling” 方法,RL 的优化效果效果乏善可陈。

在WebGPT和InstructGPT中,输出的风格和内容相对较少依赖于用户的偏好或指导,这也揭示出RLHF的一些局限性。

对话系统的开发与其他任务相比更具挑战性。对话涉及到多个方面,如语义理解、语言生成、上下文处理以及对用户意图的准确理解等,因此,对话系统的设计和实现面临着更广泛和更复杂的问题。

因此,如果我们回顾一下生成既对人有帮助又不会产生有毒、有害或不正确陈述的chat agents的常见流程,我们会发现首先要创建一个对人有帮助的大语言模型(LLM),然后,通过应用一系列微调(fine-tunings)系统工程(systems engineering) 的方法来实现减少其危害性的目标。Anthropic的技术研究线路(从dialogue agents[4]到RLHF[5]再到CAI[6])以及John Schulman在RLHF方面的交流(演讲[7]和播客[8])都有力地支持了这一点。

01 基础模型 BASE MODEL

RLHF的起点非常重要,似乎需要一个非常强大的能够遵循指令的基础模型。尝试去模仿专有模型和使用不完善的数据集都会严重影响模型的性能,导致RLHF的初始优化难度更大。

Imitating models是指有些人使用市场上效果较好模型的输出,并将该数据投入到transformer的自回归预测损失(autoregressive prediction loss,用于评估生成模型预测准确性的指标)中。

不完善的数据集源于过去人们对如何收集这些数据并不确定(例如,对社区来源的prompt分布控制得不够)或反复复制数据集而没有对其进行足够的检查。在 "作为一个由…训练出来的语言模型 "这个主题下,这两种问题都会引入一些回避回答问题或转移话题的数据,从而降低了其实用性。Anthropic在他们的论文中详细讨论了这个问题,如果你想要了解更多信息,可以查看原论文。

这种实用性的下降,表现为排行榜上标记为“未经审查”(uncensored)的模型的排名上升。 我不喜欢这个标签,也不喜欢将模型与此类方式关联,因为实际上,这些模型在控制生成模型在生成文本的主题分布方面仍有改进的空间,因此实际上不存在一个完整的审查制度。 (译者注:此处主题分布指的是生成模型生成文本时所呈现的主题的概率分布。换句话说,它表示了生成模型生成不同主题文本的相对概率。生成模型可能会在多个主题上生成文本,每个主题的概率可能不同。例如,如果我们有一个生成模型用于生成新闻报道,那么它可能会生成关于体育、政治、娱乐等不同主题的文本。主题分布可以告诉我们在这种情况下,每个主题的生成概率是多少。)

现在我们可以暂时将“未经审查”(uncensored)标签理解为筛选后的。这种筛选是比较关键的,后面我们会多次看到这个步骤的重要性。

有一些常见的数据处理方法可能会导致这些数据(译者注:指的是上文提到的特定数据,具体来说是与RLHF相关的数据)被包含在内。例如,Anthropic公司在Hub上提供的HH数据集[9]是最大的RLHF数据集之一。有些人为了省略构建偏好模型和RLHF步骤,直接使用整个数据集,将偏好数据集(preference dataset pairs)中的偏好选项(preferred entry)作为指令。(译者注:假设有一个偏好数据集,其中包含多个数据对,每个数据对由两个条目(A和B)组成。用户在每个数据对中选择了他们更喜欢或更优先的选项。那么将用户在每个数据对中选择的偏好选项作为指导,可用于训练或指导模型在其他数据对中进行预测。)这个看似无伤大雅的决定可能会导致模型产生许多混乱的回应,从而降低下游应用的使用效果。

02 偏好模型 PREFERENCES

一旦有了一个实用的模型,我们就可以轻松地使用它生成一大批回复,并请一群人将这些成对的回复标记为偏好对(“chosen“和“rejected“是本文偏好对案例中使用的术语)。这些偏好数据在初看时相对简单,但一旦深入细节,尤其是在追求最优模型性能的过程中,要做出这些偏好决策(preference decisions)就变得异常困难。(译者注:此处的preference decisions是根据某种风格或其他因素,阅读两个回答并决定哪个更好的过程。这些decisions可能是主观的,完全基于个人的直觉和喜好。)

我会每隔几个月进行一次批量的数据标注,以便对模型进行校准或在工作项目中积累经验,而最近一次标注确实相当艰难。这项任务需要阅读两个针对某个问题的多段落回答,这些回答必须连贯且条理清晰,然后判断哪个回答更好(通常基于答案的语言风格判断)。为了增加挑战性,我们只收集了一部分偏好数据(如果有的话),并在这个过程中启用了 fact-checking 功能。在判断事件发生日期的准确性时,我们只能依靠自己的直觉。这就是为什么像InstructGPT这样的论文报告中,奖励模型仅能学习到工作人员60-70%的一致性,因为这可能是在原始数据上能够达到的最高一致性水平。

无害性偏好数据

HARMLESSNESS PREFERENCE DATA

收集有害prompts的偏好数据其实非常简单。既然我们拥有了一个可通过prompt进行控制的大模型,那么我们需要完全排除模型对有害prompt的回答。然后,将模型对负面请求的任何回应与固定回答“作为一个语言模型,我不希望回答这个问题”进行匹配,即可创建配对数据(pair)。现在这些偏好数据随时可以进行大规模优化了。

下面是为什么RLHF不是万能的,但仍然非常有用的一个原因:在监督学习中,很难将这种成对关系(pairwise nature)编码到文本生成模型中。通过训练奖励模型,我们通过增加所选择样本与未选样本的预测奖励(predicted reward)之间的差异来提高模型的性能。

至于有多少负面prompt可以自动转化为偏好数据,目前尚不清楚。 在实际操作中,我猜这并不是一个自动化的过程,而更多是由像Surge和Scale这样的系统执行,它们存在严重的数据积压问题(有太多人想要进行RLHF,但却没有足够的人愿意以整天阅读模型生成的内容为生)。我怀疑我们从一些开源友好型的API处获得了许多未经过滤的偏好数据,比如BlenderBot或OpenAssistant。另外,我也怀疑这些数据可能无法直接用于训练出优秀的模型,其构建方式可能也不会是很多数据集使用公司会满意的,无论这个模型中编码的"偏好"是什么。

在preference model这一步骤中,我们一般情况下都会捕捉到一些奇怪的模型输出,这会导致我们对基于人类反馈的强化学习(RLHF)有所困惑,误以为它有助于减少虚构内容[10]的生成。在偏好标注(preference labeling)过程中,人类很容易注意到诸如看起来蠢蠢的文本格式、重复的短语、恼人的写作风格、忘记对话中的最后一条消息等问题。现在,我的观点是将RLHF视为一种文本风格转换(style transfer) RLHF可以看作是一种主题过滤器(topic filter),并且还添加了较温和的错误修正功能。主题过滤器主要用于检测有害内容,而需要帮助减少奇怪文本的产生,则是为了适应“幻觉”这个广泛而模糊的现象。

在这个模型中编码偏好(Encoding preferences)会以一种与指令微调(instruction tuning)截然不同的方式改变模型行为,我认为这是RLHF的核心。在这个观点中,preference modeling是让RLHF能够被使用的核心步骤,而且可能确实没有其他好的资源、数据或信息源来引导模型的学习和训练过程。

03 强化学习 RL

最后,有了这个可以指导说什么的模型(即 prefernece model), RLHF 剩下的一个重要部分就是知道如何通过偏好模型(prefernece model)来引导大模型。在这个阶段,需要进行两个核心的分布检查(distribution checks)。首先, 需要 preference model 覆盖RLHF模型处理的所有文本(甚至是基本问题) 。其次,RLHF的prompt列表需要涵盖preference model的所有内容,但不能超过其范围。 如果RLHF的prompt集不完整,将无法从 preference model 和数据集中提取出所有优点。当然,每一步都可能会面临超出分布(out-of-distribution)的问题。所以如果你尝试在一个你并不真正了解的preference model上进行RLHF,那就祝你好运吧。

我认为我们没有看到很多preference models 或 RLHF’s models 发布的主要原因,是这种对matching distributions的强烈需求。(译者注:matching distributions这种情况指使模型生成的数据与真实数据的分布需要尽可能相似。)开源社区可能会创建更小、更专注于某一领域的 preference model (例如StackLLaMA),而不是像OpenAI/Anthropic 那样拥有通用性强且相当完整的模型。如果你还需要为RLHF引入提示分布(prompt distributions)(或类似的东西),我也不会感到惊讶。从相关文献来看,RLHF是一种富有变化的过程。不能简单地通过评估loss值来判断准确率提高了多少(尽管这当然是其中的一部分)。 在训练损失函数中,需要对自动基准测试(例如多项选择题)和模型偏好进行一系列评估(通过人工标注,模型从preference model中学习)。我一直听说RLHF是从preference model中提取信息,但并没有很好地记录下RLHF如何快速/慢速地整合所有的偏好数据(preference data)。这个过程应当会随着模型大小、数据集大小、训练设置、RL超参数等的不同而有所变化。

模型扩展性 SCALING

关于模型扩展的基本主题贯穿了这篇文章的每一行,虽然没有明确介绍,但它在文章的每一个观点中都隐含着。Anthropic的RLHF论文(如下图)显示,将模型参数扩展到 50B 规模能够带来明显的好处。 对于开源社区和学术界来说,明年训练出 50 B 参数的模型将相对容易实现,这是很有价值的,因为在计算资源有限的情况下进行实验是非常困难的。此外,Anthropic还发布了另一篇关于拥有 200B 参数的preference models的论文(图1,Ganguli等人,2023[11]),展示了这个参数规模上的巨大进展。因此,人们使用的RLHF将会有所差异。这些项目涉及许多种扩展方式,在我们获得更多数据之前,很难确定“RLHF能否解决我所在领域的问题”的答案。

图片

Figure from Anthropic’s CAI work.

我已经与一些常被大众提及的公司的几名员工核实了这种观点,他们确认了这一观点的真实性,所以我认为我已经开始逐渐理解6个月前的RLHF是如何工作的了。这耗费了我6到8个月的时间,所以如果你需要一些时间才能掌握,不要感到气馁。我相信各家公司已经开始在尝试扩展这个流程了。

04 结语与讨论 Loose ends

这篇文章可能会迅速引发很多问题和方向指引,希望我能提前回答其中几个问题。

当我说相对完整地描述了我对当前RLHF实现方式的看法时,这意味着它并没有做到一些人可能认为它能够做到的关键事情:

  • 更正一些微小事实/检查问题的真实性/修改错别字。
  • 为模型添加基本能力(例如,学习关于主题的直觉和推理能力、学习如何编码等等) 。 (译者注:学习关于主题的直觉是指,模型通过与大量相关文本相互作用,从中提取并理解有关特定主题的信息、概念和知识。通过这种方法,模型能够形成对主题的直观理解,从而更好地应用和运用与主题相关的知识。它不仅仅是对事实和信息的记忆,还包括了对主题之间的内在联系和模式的把握。这种直觉性的理解有助于模型在回答问题、进行推理和生成内容时更加灵活和准确。)

此外,还有一些非常令人激动的论文即将发表,其中包括完整的RLHF(例如,Allen AI关于不同类型反馈的研究)、RLCF(当人类的偏好不被考虑时)、或者其他不同的优化技术(例如,Direct Policy Optimization,DPO) 。(译者注:Direct Policy Optimization可以直接利用偏好数据(preference data),而无需训练一个额外的奖励模型。这意味着在训练过程中能够更直接地使用人类的偏好信息,从而提高策略的质量和适应性。)我非常期待继续跟进这些研究,特别是DPO(因为我认为它在那些更加明确定义数据分布的小规模场景中可能表现良好)。

我认为尽管在选取的人口样本和人口结构等方面存在一些问题,但偏好数据(preference data)仍是训练模型最核心的部分

此外,我还有一些问题:

  • RLHF结果的敏感度如何暂时未知:开源组织或学术团队能够管理多少个seeds、trials和babysitters?
  • 如何整合大规模对话数据集:目前不断有许多新的数据集发布(例如最近的BlenderBot3),它们具有不同的反馈类型(feedback types),比如对消息的赞/踩。谁将是第一个能够有效整合这些数据集的人?
  • 市场上没有明确使用RLHF的大型公司:Google只是说为Bard使用了RLHF,并且在我上次了解时Cohere根本没有使用RLHF。这其中有什么原因吗?感谢Ryan Sullivan在Bard报告中提及这一点:

当前的RLHF技术栈确实是一把威力强大的巨锤,但同时我们也需要一系列能够精确调节的凿子。 以下是我对进一步发展当前技术持有积极兴趣的一些原因:

  • 基于结果的优化(多重奖励目标,其中chatbots会因为完成用户想要的任务而得到奖励):可以通过根据用户的偏好训练模型,然后在结果上进行第二次微调/RLHF(更传统的强化学习形式)来实现。
  • 持续对预期技术栈进行优化:正如我们在Anthropic的工作流程中所看到的,当前模型不再需要像上下文蒸馏(context distillation)这样的步骤。此外,在一些情况下,思维链推理(chain-of-thought reasoning)(在用户输入之前添加 system prompt ,悄悄告诉模型解释其工作)显示出一定的效益。我猜想在未来,所有的语言模型在进行基础训练之后都不再需要指令调整(在基础模型中加入了更多的指令数据),并且将内置一定程度的思维链推理。
  • Constitutional AI (CAI) :虽然我不同意任何未经监督的公司选择将他们的价值观加入到我所使用的模型中,但我们迟早会获得超出宪法(Constitution)公司规定的generation time controls(译者注:可以用来限制模型生成特定内容的范围或时间段。这意味着用户可以设定一个时间界限,使模型只能生成在该时间界限之前或之后的内容;宪法人工智能 (CAI) 是指人类监督将完全来自一套应该管理 AI 行为的原则,以及用于少量提示的少量示例。这些原则共同构成宪法。AI 将基于这些宪法原则在指导模型进行迭代优化)。

END

参考资料

1.https://arxiv.org/abs/2303.08774

2.https://arxiv.org/abs/2203.02155

3.https://arxiv.org/abs/2112.09332

4.https://arxiv.org/abs/2112.00861

5.https://arxiv.org/abs/2204.05862

6.https://arxiv.org/abs/2212.08073

7.https://www.youtube.com/watch?v=hhiLw5Q_UFg&t=4s

8.https://www.talkrl.com/episodes/john-schulman

9.https://huggingface.co/datasets/Anthropic/hh-rlhf

10.https://www.interconnects.ai/p/specifying-hallucinations-llms

11.https://arxiv.org/abs/2302.07459

本文经原作者授权,由Baihai IDP编译。如需转载译文,请联系获取授权。

原文链接

https://www.interconnects.ai/p/how-rlhf-works

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Structure Guided Lane Detection 论文精度

结构导向车道检测 摘要 近年来,随着深度神经网络和自动驾驶的快速发展,车道检测取得了长足的进步。然而,主要存在三个问题,包括车道的特征化、场景与车道之间的结构关系建模以及对车道的更多贡献(如实例和类型&#…

Bean的加载方式

目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1,FactoryBean 扩展2,加载配置类并加载配置文件(系统迁移) 扩展3,proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…

画架构图工具-haydn

Haydn解决方案数字化平台_海顿解决方案工具链-华为云 下图为haydn架构图示例 Haydn解决方案数字化平台_海顿解决方案工具链-华为云 1、vpc是一个很重要的元素,有网络隔离的作用。 2、OBS、CES、CTS,不需要画到vpc里面。 3、不在区域内的资源&#xf…

CPU Architecture Methodologies

MMU MMU(Memory Management Unit) 负责将逻辑地址转化为物理地址对于现代处理器来说,一般每个core都有自己的 MMU页表等数据结构保存在 TLB NUMA Non-uniform memory access (NUMA) is a computer memory design used in multiprocessing, where the memory access…

汽车产业链面临重大变革 大运乘用车加强产业布局 助力低碳出行

当前,国家“双碳”战略的全面实施,全球绿色产业发展理念的不断加深以及汽车产品形态、交通出行模式、能源消费结构变革所呈现的发展机遇等诸多因素,持续推动新能源汽车产业全面转型提速。据悉,2022年,中国新能源汽车销…

7、单元测试--测试RestFul 接口

单元测试–测试RestFul 接口 – 测试用例类使用SpringBootTest(webEnvironment WebEnvironment.RANDOM_PORT)修饰。 – 测试用例类会接收容器依赖注入TestRestTemplate这个实例变量。 – 测试方法可通过TestRestTemplate来调用RESTful接口的方法。 测试用例应该定义在和被测…

企业数字化转型失败率达80%,面临哪些挑战?应该如何规划?

随着数字化在社会的飞速发展,人们的生活工作娱乐等方方面面都已经被数字化占领,数字化所衍生出的数字经济更是成为高速增长的国民经济支柱,而数据作为“副产品”也成功进化为第五大生产要素,发挥出巨大的价值,变成了个…

电脑选睡眠、休眠还是关机?

关机 这是大家最熟悉的。关机时,系统首先关闭所有运行中的程序,然后关闭系统后台服务。随后,系统向主板请求关机,主板断开电源的供电使能,让电源切断对绝大多数设备的供电(只剩一些内部零件仍会维持电源供应…

5个值得收藏的AI绘画网站,还有国产!

随着科技的发展,设计领域也迎来了科技创新,AI绘画网站便是其中的一个代表,本文精选了4个好用的AI绘画网站与大家分享,一起来看看吧! 1、即时灵感 作为一个国产的AI绘画网站,即时灵感支持设计师使用中文语…

GitHub仓库如何使用

核心:GitHub仓库如何使用 目录 1.创建仓库: 2.克隆仓库到本地: 3.添加、提交和推送更改: 4.分支管理: 5.拉取请求(Pull Requests): 6.合并代码: 7.其他功能&…

ffmpeg安装

简介 FFmpeg是一个开源的音视频处理库,它提供了一系列的工具和API,可以用于处理音视频文件。你可以使用FFmpeg的命令行工具来执行各种音视频处理操作,比如转码、剪辑、合并等。FFmpeg的命令格式通常是:ffmpeg [全局选项] {[输入文…

HJ99 自守数+OR86N 返回小于N的质数个数

HJ99 自守数 自守数_牛客题霸_牛客网 (nowcoder.com) #include <iostream> #include<cmath> using namespace std; bool Ending_Same(int a) {int a_a a * a;if (a_a a)return true;int i 1;while (a_a ! 0 && a_a/ (int)pow(10, i)!0)//保证a*a有足够…

最全面的接口自动化测试流程、工具及其实践

1、接口自动化测试简介 接口自动化测试是指通过编写脚本或使用自动化工具&#xff0c;对软件系统的接口进行测试的过程。接口测试是软件测试中的一种重要测试方法&#xff0c;主要用于验证系统组件之间的通信和数据交换是否正常。接口自动化测试可以提高测试效率和准确性&#…

【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?

日期&#xff1a;2023年7月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【Golang】Golang进阶系列教程--Golang中文件目录操作的实现

文章目录 一、文件二、文件目录三、文件目录操作3.1、读取文件3.1.1、方法一 (file.Read())3.1.2、方法二 (bufio读取文件)3.1.3、方法三 (ioutil 读取方法) 3.2、写入文件3.2.1、方法一3.2.2、方法二3.2.3、方法三 (ioutil写入文件) 3.3、复制文件3.3.1、方法一3.3.2、方法二 …

配置IPv6 over IPv4 GRE隧道示例

组网需求 如图1&#xff0c;两个IPv6网络分别通过SwitchA和SwitchC与IPv4公网中的SwitchB连接&#xff0c;客户希望两个IPv6网络中的PC1和PC2实现互通。 其中PC1和PC2上分别指定SwitchA和SwitchC为自己的缺省网关。 图1 配置IPv6 over IPv4 GRE隧道组网图 配置思路 要实现I…

redis之Bitmap

位图数据结构其实并不是一个全新的玩意&#xff0c;我们可以简单的认为就是个数组&#xff0c;只是里面的内容只能为0或1而已(二进制位数组)。 GETBIT用于返回位数组在偏移量上的二进制位的值。值得我们注意的是&#xff0c;GETBIT的时间复杂度是O(1)。 GETBIT命令的执行过程如…

简单的知识图谱可视化+绘制nx.Graph()时报错TypeError: ‘_AxesStack‘ object is not callable

绘制nx.Graph时报错TypeError: _AxesStack object is not callable 写在最前面知识图谱可视化预期报错可能的原因 原代码原因确认解决后的代码解决&#xff01; 写在最前面 实现一个简单的知识图谱的可视化功能。 使用了NetworkX库来构建知识图谱&#xff0c;并使用matplotlib…

vue 使用vue-json-viewer 展示 JSON 格式的数据

npm install vue-json-viewer --save<el-button type"primary" click"previewClick">预览</el-button><el-dialog title"预览" :visible.sync"previewVisible" width"70%"><viewer ref"viewer&qu…

Arcgis通过模型构建器计算几何坐标

模型 模型中&#xff0c;先添加字段&#xff0c;再计算字段 计算字段 模型的计算字段中&#xff0c;表达式是类似这样写的&#xff0c;其中Xmin表示X坐标&#xff0c;Ymin表示Y坐标 !Shape.extent.Xmin!类似计算面积 !shape.area!