EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法

点击蓝字

611b930710b4b0cc5b84293c3a4992ce.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

f21f6e6dbe213153f6eada91042b1e34.png

点击 阅读原文 观看作者讲解回放!

作者简介

张伟超,中国科学院计算所网络数据科学与技术重点实验室三年级直博生

内容简介

近年来,大语言模型(LLMs)的训练数据规模在不断扩大,而模型开发者却越来越不愿意公开训练数据的使用信息,这种情况使得审查大模型的数据使用过程是否符合法律法规面临困难。近期,在大模型上进行预训练数据检测的任务开始受到关注,即给定一段文本和一个预训练数据未知的大模型,仅依靠黑盒访问条件来推断该文本被用于大模型的预训练过程。Min-K% Prob方法在一些基准数据集上取得了最好的效果,该方法假设非训练文本往往包含一些具有低词元概率的异常词。然而,该方法容易将包含较多频繁词的非训练文本误分类为训练文本。受信息检索领域的divergence-from-randomness理论启发,他们提出了一种新的预训练数据检测方法DC-PDD来解决这个问题。DC-PDD通过计算词元概率分布与词元频率分布之间的交叉熵(即divergence)作为检测信号。此外,他们提出了一个中文基准数据集PatentMIA,用于评估中文数据检测方法的性能。在现有的基准数据集和PatentMIA上的实验结果表明,DC-PDD显著优于现有方法。

论文地址

https://arxiv.org/pdf/2409.14781

代码链接

https://github.com/ zhang-wei-chao/DC-PDD

Motivation

众所周知,自从在大模型上验证 scaling law 的有效性之后,模型的训练数据规模就开始急剧增加但是模型开发商却越来越不愿意公开有关训练数据的使用信息,这种数据不透明的情况,就使得我们难以审查模型的数据使用过程是否合乎道德,甚至法规。

比如,近期就有不少报道称,在未经授权的情况下,大模型开发商擅自使用了具有敏感信息或者受到版权保护的数据进行训练,侵犯了数据所有者的权益,受到相关的起诉。

此外,有些模型的训练数据中,可能有意或者无意的包含了用于评估模型性能的基准数据集,造成模型性能虚高的假象,这种刷榜现象也对大模型的发展带来了不利影响。

4955b12d8bbf87e05a87d5e75f20ca09.png

鉴于这些现象,大模型的预训练数据检测任务开始受到关注。该任务是指,给定一段文本和一个大语言模型,要求检测出该段文本是否为这个大语言模型的训练数据。然而,需要注意的是,检测过程是不可获知大模型的训练数据信息的。

c12de942d9b9e9c81be4174f34639bb4.png

这里,先简单介绍一下词元概率的概念。即给定一个大模型和一段文本序列,模型对文本中每个词元的概率可计算为,在给定的全部前文信息时,模型预测下一个词元为的概率,也就是这张动态图所示的过程。

现有方法通常认为,模型对一段文本的词元概率分布,可以作为信号,用于检测该段文本是否为模型的训练数据。

例如,一篇发表于ICLR 2024的文章提出一种检测方法认为,模型对一段非训练文本的词元概率分布,与一段训练文本的相比,通常会有更多的词元,被计算得到更低的概率,也可以理解为具有高预测概率的文本更可能是训练文本。

abb5c2d743d1d4c88ffac185cb2b3ebf.png

然而,有研究表明,基于交叉熵损失函数训练得到的语言模型,在进行下一词元预测时,通常会偏好高频词元。这就使得,大语言模型在进行下一词元预测时,倾向于给高频词元赋予更高的预测概率,进而就使得现有基于词元概率的检测方法,容易将包含较多高频词的非训练文本误检为训练文本。

右图展示了一个概念性的例子来阐述这个问题。图中,是一段非训练文本,而是一段训练文本,通过词元概率计算后,整体上,的词元概率高于。因此,现有方法就认为相比于更可能是训练文本,而这与真实情况却是恰恰相反的。所以,本文提出一种新的检测方法来解决这个问题。

9f6771f437861a80e48b0909141f6d06.png

此外,当前的研究主要关注英文文本的预训练数据检测,对非英文文本的研究较少。而实际上,不同语言之间存在着较大的语法差异。以中文为例,它跟英文相比,就没有首字母大写,以及基于空格分隔单词的特点。

因此,这也让研究者好奇,这些特性是否会影响现有方法的检测性能,换句话说,现有方法在非英文文本的检测上是否也能奏效。

34e0c7ded73f8c7ed712141bea63f052.png

A New Benchmark and a Novel Method

因此,为了弥补上述的研究空白,本篇工作主要做了两点:一是构造了一个非英文的基准数据集,具体来说是中文,用于评估现有方法在非英文文本上的检测效果;二是提出了一种新的检测方法,并证实该方法的有效性。

A Non-English Benchmark

该基准数据集的数据来源是 Google patent 的网页数据。该网页的数据作为公开数据集 Common Crawl 的数据来源之一,常被用于大模型的预训练过程。因此,可以通过待检测大模型的训练数据截止时间,将发布于此时间节点之前的 Google patent 数据,作为待检测大模型的训练数据,而将发布于此时间节点之后的 Google patent 数据,作为待检测大模型的非训练数据,进而构造得到基准数据集。

具体来说,作者分别爬取了 5000 页发布于 2023 年 1 月 1 日之前和  2024 年 3 月 1 号之后的专利文本作为训练数据和非训练数据。然后对这些文本的预处理方式,跟随一些大型的中文公开语料库的处理方式,使预处理后的文本格式,尽可能接近大模型的预训练数据格式。最后从每页专利文本中抽取一个 512 个词汇长度的片段,得到一个规模为 10000,训练数据与非训练数据等量的基准数据集。

938d43d6a005239fd536f8abf95a35ed.png

表中展示了作者构造的数据集,与现有数据集的统计数据。需要注意的是,本文构造的基准数据集仅适用于,训练数据截止日期在 2023 年 1 月 1 号 至 2024 年 3 月 1 号之间,且支持中文推理的大模型。

0a68408bc2ee350f4be638955b51399a.png

A Novel Method

本文方法受信息检索领域中 Divergence from randomness 理论的启发,该理论是指,如果一个词汇在当前文档内的频率,与该词汇在多个文档中的频率的差异越大,那么该词汇对当前文档而言,就具有越大的信息量。

此处以一个概念性的例子来帮助大家理解这个理论。单词‘the’ 在当前文档中出现的频率较高,同时在大多数其他文档中出现的频率也比较高,因此,‘the’ 对当前文档来说,就不是一个具有大信息量的词汇;反之,单词‘LLM’ 在当前文档中出现的频率较高,但在大多数其他文档中出现的频率却比较低,因此,‘LLM’ 对当前文档来说,就是一个信息量比较大的词汇。

也就是说,一个词汇对当前文档的信息量应该通过该词汇的 文档内频率 与 跨文档频率 二者的差异来度量,也就是局部与全局的差异,而不是仅仅看该词汇在当前文档中出现的频率。

14807c59c14471aa4cf2852e021d9734.png

那么在本文的场景中,DFR 理论下的文档内词频分布,就可以理解为模型对一段文本的词元概率分布,记为 token probability distribution。而 DFR 理论下的跨文档词频分布,就可以理解为模型的训练语料库的词频分布,代表全局的分布情况,记为 token frequency distribution。

dfa4663443ecb2e400af4590121f41a7.png

因此,本文方法就是利用模型对待检测文本的词元概率,与待检测文本中词元在训练语料库中频率 之间的差异来进行检测,只有这种差异大时,才表明当前文本更有可能是训练数据。而不是像现有方法那样仅依靠词元概率进行检测。

8f5527b4c103a5e7deae26f1da910452.png

第一步,先获取模型对待检测文本的词元概率分布,这可以通过将文本输入目标大模型后获取得到,具体的计算过程如动态图所示,每个词元概率都是大模型基于该词元的全部前文信息计算得到的。

6ab3dc9f7c7e69e749ec581e4fc2939a.png

第二步,需要获取大模型预训练语料的词元频率分布,但是由于大模型的训练语料没有公开,所以作者采取了一个公开的大型语料库作为参考语料,来近似计算这个分布。对于计算过程中可能遇到的零概率问题,也就是大模型词表中的某些词元可能在参考语料库中一次也不会出现,文中采取拉普拉斯平滑来解决这个问题。

90ca3bad3071337e1b84aa4a33f1854b.png

第三步,通过对比前面得到的两个分布的差异,为待检测文本计算一个用于最终检测的分数。具体来说,首先依据 DFR 理论计算两个分布的散度,就是将模型对每个词元的概率,与相应词元在语料库中出现的频率的对数相乘后取反,进而为文本中的每个词元得到一个新的值然后,由于个别词元的频率较低,当取对数后值会变得非常大,因此,为了防止最终的分数被个别词元的值所主导,本文设置了一个超参数 a 来控制上限。

最后,因为模型通常会给那些在文本此前出现过的词,赋予较高的预测概率,所以文中仅选取在文本中第一次出现的词对应的值来计算最后的分数。以一个具体示例说明,假设待检测文本为 a cat chased another cat,由于 cat 在第二个位置出现过,那么在模型预测第五个词时,cat 的预测概率会受到第二个位置出现过的影响而自然地被赋予更高的预测概率,因此我们在最终计算时,cat 只是用第二个位置对应的值,也就是第一次出现的时候,而摒弃之后出现的重复词对应的值。

99f3f1bfd2436d6c3a86ff0d0dab79c6.png

第四步,将计算得到的检测分数,与一个提前设定好的阈值进行对比,来给出最终的检测结果。当分数小于阈值时,认为待检测文本不是训练数据;反之,认为待检测文本是训练数据。本文实验中的评估指标跟随大多数现有工作,主要采用 AUC 分数进行评估,因此未涉及具体的阈值设定。

fb47e31f1ab4c551de666ac82b3611a9.png

Experiments

Models And Benchmarks

本实验包含了三组设置,第一组实验的几个目标模型的训练数据截至日期都是在 2017 至 2022 年期间,相应地,现有基准数据集 WikiMIA 的构造也是围绕这个时间节点进行的,它将发布于 Wikipedia 上 2017 年之前的新闻事件的报道文章作为目标模型的训练数据,2022年之后的作为非训练数据。其他两组实验设置也与之类似。

特别要提的是,对于本文构造的 PatentMIA 基准数据集,作者选取了两类发布于2023年期间,且支持中文推理的 Qwen1.5 和 Baichuan 系列大模型。

8dd895a8514197cb003db735f793aa3f.png

Baselines And Metrics

本文方法与 6 种代表性的极限方法进行了对比。其中 Min-k% prob 是在本工作之前在现有数据集上取得最佳效果的方法,而 Min-k%++ prob 是同期工作,是在 Min-k% prob 方法上的改进,也是对词元概率进行了校准再利用其进行检测,只不过是从其他的角度进行校准,而不是从词元频率的角度。

其他几种方法是一些基于参考的检测方法,其目的是为了降低文本自身复杂度对检测的影响,尽管这些方法的性能表现也不错,但由于检测过程需要借助额外的参考物,使得他们在实际应用场景中存在更大的局限性。

在实验的评估指标上,本文与大多数现有工作类似,主要采取了两个评估指标,一个是 AUC 分数,另一个是低假阳性率下对应的真阳性率。

d83b6172754019ac983bb9a8ed18fcf7.png

Main Results

主实验结果如表所示,整体来说,本文方法在多个模型和基准数据集上的表现优于现有方法。

首先是在 WikiMIA 的检测上,这个数据集相比与其余两个规模为 1w 大小的数据集而言较小,只有 250 条数据,同期工作 Min-k%++ Prob 在个别模型的检测效果上优于我们,考虑到 Min-k%++ Prob 方法是从其他角度对词元概率进行校准再进行检测分数计算的方法,我们可以合理地推测词元概率受到多种因素的影响,而不仅仅是词频,因此直接依赖词元概率进行检测是不太稳定的,未来工作也可以从这方面去探索其他校准词元概率的方法,使之更适合检测,或者是更创新地探索更有效的特征来作为训练数据检测的信号。

最后,通过在中文基准数据集上的实验结果表明,除了基于英文大小写特性进行检测的 Lowercase 方法,现有的方法还是适用于中文文本检测的,而且我们的方法仍然取得最佳的效果。

cfcde4efdfbc9bb448c151f60e3e7643.png

Ablation Study

本文所提方法在具体执行过程中,采用了两个策略。首先是在基于词元概率与词元频率计算交叉熵,为文本中的每个词元Xi得到一个新的值α之后,作者设置了一个超参数 a 来控制α的上限,以防止最终的检测分数被个别词元的值所主导,此处记为 LUP 策略。

其次是因为模型通常会给那些在文本此前出现过的词,赋予较高的预测概率,所以仅选取在文本中第一次出现的词对应的值,来计算最后的检测分数,此处记为 SFO 策略。

CLD 表示都不采取两个策略时的方法变体,+ LUP 是指在 CLD 方法变体的基础上纳入第一个策略,+ SFO 是指在 CLD + LUP 方法变体的基础上再纳入第二个策略。

实验结果如图所示,实验结果表明,这两个策略在整体上对所提方法性能的提升都有一定的贡献。但有一点需要注意的是,在检测 GPT-3 时,LUP 策略并没有起到太大的效果,作者推测,可能是因为该策略涉及到超参数设置所导致的,因此后续也对 LUP 中涉及的超参数设置做了进一步分析。

57412b37d1af0723b9924225b721ec80.png

Impact of model size and text length

实验的最后,作者对一些可能影响方法性能的因素做了进一步分析,首先是两个方法无关的因素,待检测模型的大小,以及待检测文本的长度。

左图是检测方法性能随待检测模型大小变化的变化情况,这里本文采取了 Qwen1.5 系列的模型在 PatentMIA 基准数据集上的检测效果。实验结果表明,检测方法的性能随着待检测模型大小的增加而增加,这进一步证实了此前研究的结论,这种现象可能是因为较大的模型具有更大的参数量,使之在记忆和处理文本上的能力更强所导致,其中本文所提方法在各种模型规模设定下一致地优于现有方法。

右图是检测方法性能随待检测文本长度变化的变化情况,这里采取了 Qwen1.5 的 7B 版本模型在 PatentMIA 基准数据集多种长度版本下的检测效果。实验结果表明,检测方法的性能随着待检测文本的长度增加也呈现出增加,这同样证实了此前研究的结论,这可能是较长的文本携带了更多有助于模型记忆文本的的信息所导致的,其中本文所提方法也在各种长度版本设定下一致地优于现有方法。

7dc5245557cce1d99995fe1cf713a769.png

Impact of a reference corpus

最后探讨一下方法相关的两个因素。第一个因素是参考语料库,回顾本方法涉及大模型训练语料库的词元频率分布计算,但因为大模型的训练语料库不可知,作者借助一个公开的大型语料库来近似计算这个分布。

此处的实验探讨了参考语料库的选择对方法性能的影响情况。具体地,作者从语料库的数据规模和数据内容两个维度入手,在数据规模上,探索了分别选择规模大小为 1G 和 10G 时的语料作为参考语料库时,方法的性能表现情况;在数据内容上,探索了分别选择数据来源为网页数据 和 专业领域数据的语料作为参考语料库时,方法的性能表现情况。

实验结果如表中所示,方法性能的变动,受参考语料库的数据规模,和数据内容的影响较小,表明我们的方法在参考语料库的选择上并不敏感。

其中选择为 10 G 的 C4 语料时,方法的表现最好,作者认为是因为该选择,在规模上相较于 1G 更大,在内容上相比于专业领域数据更多样,使得其数据分布更接近原始的训练数据分布,进而能取得更好的性能表现。

62074ae6f66137c4fae83a4913ce40c3.png

Impact of the hyperparameter

另一个因素是前面提到的超参数设置,本文在基于词元概率与词元频率计算交叉熵,为文本中的每个词元得到一个新的值之后,设置了一个超参数 a 来控制的上限,以防止最终的检测分数被个别词元的值所主导。

这里的实验就是想探讨不同大小的超参数设置下,方法性能的变动情况。实验结果如表中所示,方法对该参数还是有一点敏感的,这是因为较高的超参数设置不能有效地限制上限,起不到预期作用,而较低的超参数设置将导致最后为每个词元计算的值都一样,进而使得训练文本和非训练文本的分数相似而难以区分。

但尽管如此,本文的方法在多种超参数设置下仍然取得具有竞争力的性能表现,未来可能可以探索自适应的超参数设置方法来改进这方面的缺陷。

79708c925bdc562cf5489301992164d9.png

Conclusion

首先本文构造了一个新的基准数据集,用于评估现有方法在中文文本上的检测效果,弥补现有研究在这一块上的空白;

其次作者受信息检索领域 DFR 理论的启发,提出一种新的检测方法来校准词元概率,使之更适用于训练数据的检测;

最后通过大量实验进一步证实所提方法的有效性;

在未来工作中,作者表示可能会探索数据集级别的预训练数据检测方法,而不仅仅实现对单条文本的检测。

25e9f3b674bcfc8976a4c5c99fc2ffb4.png

本期文章由陈研整理

往期精彩文章推荐

e03900e78f1997adff1451a19e2e7587.jpeg

AAAI 2025预讲会一作讲者招募|个人和团队报名通道开启

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了2000多位海内外讲者,举办了逾700场活动,超800万人次观看。

 bc43c7a758594181a6e96d18edd2ef3f.png

我知道你 

在看

提出观点,表达想法,欢迎 

留言

6310970d0907d4f1cc766ca65ff31843.gif

点击 阅读原文 观看作者讲解回放!

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

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

相关文章

大数据技术-Hadoop(一)Hadoop集群的安装与配置

目录 一、准备工作 1、安装jdk(每个节点都执行) 2、修改主机配置 (每个节点都执行) 3、配置ssh无密登录 (每个节点都执行) 二、安装Hadoop(每个节点都执行) 三、集群启动配置&a…

PilotGo

title: 解锁 PilotGo:智能化运维的得力助手 date: ‘2024-12-29’ category: blog tags: PilotGo运维管理智能化工具技术应用 sig: ops archives: ‘2024-12’ author:way_back summary: PilotGo 作为一款创新的运维管理工具,凭借其智能化的特性和丰富的…

折腾日记:如何让吃灰笔记本发挥余热——搭建一个相册服务

背景 之前写过,我在家里用了一台旧的工作站笔记本做了服务器,连上一个绿联的5位硬盘盒实现简单的网盘功能,然而,还是觉的不太理想,比如使用filebrowser虽然可以备份文件和图片,当使用手机使用网页&#xf…

使用seata实现分布式事务管理

配置 版本说明:springCloud Alibaba组件版本关系 我用的是spring cloud Alibaba 2.2.1.RELEASE 、springboot 2.2.1.RELEASE、nacos 2.0.1、seata1.2.0,jdk1.8 seata 主要用于在分布式系统中对数据库进行事务回滚,保证全局事务的一致性。 seata的使用…

【总结】动态规划

线性dp LeetCode题单, 从记忆化搜索到递推 Pre: 从最初状态到最终状态等价,那么从最终状态开始和最初状态开始结果一样。 递归时不会产生其他负面结果,即无论何时进入递归,只要递归参数相同,结果就相同。 …

RabbitMQ中的异步Confirm模式:提升消息可靠性的利器

在现代分布式系统中,消息队列(Message Queue)扮演着至关重要的角色,它能够解耦系统组件、提高系统的可扩展性和可靠性。RabbitMQ作为一款广泛使用的消息队列中间件,提供了多种机制来确保消息的可靠传递。其中&#xff…

买卖预测工具

设计一个用于在交易市场中寻找确定性或大概率盈利的买卖预测工具是一个具有挑战性但非常有潜力的项目。你可以通过以下几个步骤进行思路规划: 1. 明确目标 大概率盈利:工具的目的是找出大概率盈利的交易机会。不能完全依赖于100%确定性,因为…

【数据结构】数据结构简要介绍

数据结构是计算机科学中用于组织、管理和存储数据的方式,以便于高效地访问和修改数据。 数据结构的分类: 数据结构可以大致分为两类:线性结构和非线性结构。 1. 线性结构 线性结构中的数据按顺序排列,每个元素有唯一的前驱和后…

note 41:账务系统开发规范

目录 系统设计 防重控制 流量控制 并发控制 异常处理 备份机制 系统开发​​​​​​​ 前端队列操作 外系统交互 ​​​​​​​​​​​​​​ 系统设计 防重控制 对于进入到系统中的数据(文件导入、手工录入、系统直连等)以及本系统发往外…

Circular Spanning Tree(树的性质)

Circular Spanning Tree 本道题目加深理解树的性质: 思路: 首先考虑什么情况是NO,那么不难想当字符串全是0的时候一定是不行的,因为这样就构成环了,还有一种情况是1的个数为奇数的时候是不行的,一棵树中为…

linux安装nginxs报错:openssl not found

系统: linux 版本:centOS7 nginx版本:nginx-1.20.2 linux安装nginx时 执行下面命令时报错: ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【论文笔记】Contrastive Learning for Sign Language Recognition and Translation

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Contrastive Learning for…

docker redis安装

一.镜像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精译_096】16.4:CSS 中的三维变换 + 16.5:本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

小程序租赁系统开发的优势与实践探索

内容概要 小程序租赁系统开发正在引起广泛关注,特别是在数字化快速发展的今天。很多企业开始意识到,小程序不仅能为他们带来更多的客户,还能极大地提高管理效率。借助小程序,用户在租赁时可以更加方便地浏览和选择产品&#xff0…

机器人C++开源库The Robotics Library (RL)使用手册(二)

由于RL库采用跨平台CMake源码,可以轻松在win、ubantu等平台部署、编译,win通常用VS编译器,为了便于使用、阅读,需要将CMake编译成VS工程。 1、准备三个工具:CMake、VS、QT 为了在Windows上编译RL和依赖项,您需要安装一个编译器(例如。,Visual Studio 2017)和跨平台构…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中,ActiveX控件可以帮助实现与其他应用程序或第三方组件的集成(例如Microsoft Excel、Word、Internet Explorer等)。以下是一些建议,帮助您更好地在LabVIEW中使用ActiveX控件: ​ 1. 理解ActiveX控件的基本原…

如何使用Python从SACS结构数据文件中提取节点数据信息并导出到EXCEL

在现代工程设计中,结构分析和数据处理是不可或缺的一部分。特别是在海洋工程、桥梁建设等领域,SACS文件被广泛应用。这种文件格式包含了结构模型的各种重要信息,包括节点(JOINT)、构件(ELEMENT)…

如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?

目录 1.创新性与学术贡献的超级加分✔ 2.科研过程中的各个环节—从0到1✔ 3.创新性与理论深度的完美结合✔ 4.论证与写作的清晰性✔ 5.数据整理和文献回顾——效率与精准并存✔ 6.创新性要求辅助✔ 总结 宝子们,学术论文写作的旅程是不是感觉像是走进了迷雾森…

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.CircleGeometry 圆形…