EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法
点击蓝字
关注我们
AI TIME欢迎每一位AI爱好者的加入!
点击 阅读原文 观看作者讲解回放!
作者简介
张伟超,中国科学院计算所网络数据科学与技术重点实验室三年级直博生
内容简介
近年来,大语言模型(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 的有效性之后,模型的训练数据规模就开始急剧增加但是模型开发商却越来越不愿意公开有关训练数据的使用信息,这种数据不透明的情况,就使得我们难以审查模型的数据使用过程是否合乎道德,甚至法规。
比如,近期就有不少报道称,在未经授权的情况下,大模型开发商擅自使用了具有敏感信息或者受到版权保护的数据进行训练,侵犯了数据所有者的权益,受到相关的起诉。
此外,有些模型的训练数据中,可能有意或者无意的包含了用于评估模型性能的基准数据集,造成模型性能虚高的假象,这种刷榜现象也对大模型的发展带来了不利影响。
鉴于这些现象,大模型的预训练数据检测任务开始受到关注。该任务是指,给定一段文本和一个大语言模型,要求检测出该段文本是否为这个大语言模型的训练数据。然而,需要注意的是,检测过程是不可获知大模型的训练数据信息的。
这里,先简单介绍一下词元概率的概念。即给定一个大模型和一段文本序列,模型对文本中每个词元的概率可计算为,在给定的全部前文信息时,模型预测下一个词元为的概率,也就是这张动态图所示的过程。
现有方法通常认为,模型对一段文本的词元概率分布,可以作为信号,用于检测该段文本是否为模型的训练数据。
例如,一篇发表于ICLR 2024的文章提出一种检测方法认为,模型对一段非训练文本的词元概率分布,与一段训练文本的相比,通常会有更多的词元,被计算得到更低的概率,也可以理解为具有高预测概率的文本更可能是训练文本。
然而,有研究表明,基于交叉熵损失函数训练得到的语言模型,在进行下一词元预测时,通常会偏好高频词元。这就使得,大语言模型在进行下一词元预测时,倾向于给高频词元赋予更高的预测概率,进而就使得现有基于词元概率的检测方法,容易将包含较多高频词的非训练文本误检为训练文本。
右图展示了一个概念性的例子来阐述这个问题。图中,是一段非训练文本,而是一段训练文本,通过词元概率计算后,整体上,的词元概率高于。因此,现有方法就认为相比于更可能是训练文本,而这与真实情况却是恰恰相反的。所以,本文提出一种新的检测方法来解决这个问题。
此外,当前的研究主要关注英文文本的预训练数据检测,对非英文文本的研究较少。而实际上,不同语言之间存在着较大的语法差异。以中文为例,它跟英文相比,就没有首字母大写,以及基于空格分隔单词的特点。
因此,这也让研究者好奇,这些特性是否会影响现有方法的检测性能,换句话说,现有方法在非英文文本的检测上是否也能奏效。
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,训练数据与非训练数据等量的基准数据集。
表中展示了作者构造的数据集,与现有数据集的统计数据。需要注意的是,本文构造的基准数据集仅适用于,训练数据截止日期在 2023 年 1 月 1 号 至 2024 年 3 月 1 号之间,且支持中文推理的大模型。
A Novel Method
本文方法受信息检索领域中 Divergence from randomness 理论的启发,该理论是指,如果一个词汇在当前文档内的频率,与该词汇在多个文档中的频率的差异越大,那么该词汇对当前文档而言,就具有越大的信息量。
此处以一个概念性的例子来帮助大家理解这个理论。单词‘the’ 在当前文档中出现的频率较高,同时在大多数其他文档中出现的频率也比较高,因此,‘the’ 对当前文档来说,就不是一个具有大信息量的词汇;反之,单词‘LLM’ 在当前文档中出现的频率较高,但在大多数其他文档中出现的频率却比较低,因此,‘LLM’ 对当前文档来说,就是一个信息量比较大的词汇。
也就是说,一个词汇对当前文档的信息量应该通过该词汇的 文档内频率 与 跨文档频率 二者的差异来度量,也就是局部与全局的差异,而不是仅仅看该词汇在当前文档中出现的频率。
那么在本文的场景中,DFR 理论下的文档内词频分布,就可以理解为模型对一段文本的词元概率分布,记为 token probability distribution。而 DFR 理论下的跨文档词频分布,就可以理解为模型的训练语料库的词频分布,代表全局的分布情况,记为 token frequency distribution。
因此,本文方法就是利用模型对待检测文本的词元概率,与待检测文本中词元在训练语料库中频率 之间的差异来进行检测,只有这种差异大时,才表明当前文本更有可能是训练数据。而不是像现有方法那样仅依靠词元概率进行检测。
第一步,先获取模型对待检测文本的词元概率分布,这可以通过将文本输入目标大模型后获取得到,具体的计算过程如动态图所示,每个词元概率都是大模型基于该词元的全部前文信息计算得到的。
第二步,需要获取大模型预训练语料的词元频率分布,但是由于大模型的训练语料没有公开,所以作者采取了一个公开的大型语料库作为参考语料,来近似计算这个分布。对于计算过程中可能遇到的零概率问题,也就是大模型词表中的某些词元可能在参考语料库中一次也不会出现,文中采取拉普拉斯平滑来解决这个问题。
第三步,通过对比前面得到的两个分布的差异,为待检测文本计算一个用于最终检测的分数。具体来说,首先依据 DFR 理论计算两个分布的散度,就是将模型对每个词元的概率,与相应词元在语料库中出现的频率的对数相乘后取反,进而为文本中的每个词元得到一个新的值然后,由于个别词元的频率较低,当取对数后值会变得非常大,因此,为了防止最终的分数被个别词元的值所主导,本文设置了一个超参数 a 来控制上限。
最后,因为模型通常会给那些在文本此前出现过的词,赋予较高的预测概率,所以文中仅选取在文本中第一次出现的词对应的值来计算最后的分数。以一个具体示例说明,假设待检测文本为 a cat chased another cat,由于 cat 在第二个位置出现过,那么在模型预测第五个词时,cat 的预测概率会受到第二个位置出现过的影响而自然地被赋予更高的预测概率,因此我们在最终计算时,cat 只是用第二个位置对应的值,也就是第一次出现的时候,而摒弃之后出现的重复词对应的值。
第四步,将计算得到的检测分数,与一个提前设定好的阈值进行对比,来给出最终的检测结果。当分数小于阈值时,认为待检测文本不是训练数据;反之,认为待检测文本是训练数据。本文实验中的评估指标跟随大多数现有工作,主要采用 AUC 分数进行评估,因此未涉及具体的阈值设定。
Experiments
Models And Benchmarks
本实验包含了三组设置,第一组实验的几个目标模型的训练数据截至日期都是在 2017 至 2022 年期间,相应地,现有基准数据集 WikiMIA 的构造也是围绕这个时间节点进行的,它将发布于 Wikipedia 上 2017 年之前的新闻事件的报道文章作为目标模型的训练数据,2022年之后的作为非训练数据。其他两组实验设置也与之类似。
特别要提的是,对于本文构造的 PatentMIA 基准数据集,作者选取了两类发布于2023年期间,且支持中文推理的 Qwen1.5 和 Baichuan 系列大模型。
Baselines And Metrics
本文方法与 6 种代表性的极限方法进行了对比。其中 Min-k% prob 是在本工作之前在现有数据集上取得最佳效果的方法,而 Min-k%++ prob 是同期工作,是在 Min-k% prob 方法上的改进,也是对词元概率进行了校准再利用其进行检测,只不过是从其他的角度进行校准,而不是从词元频率的角度。
其他几种方法是一些基于参考的检测方法,其目的是为了降低文本自身复杂度对检测的影响,尽管这些方法的性能表现也不错,但由于检测过程需要借助额外的参考物,使得他们在实际应用场景中存在更大的局限性。
在实验的评估指标上,本文与大多数现有工作类似,主要采取了两个评估指标,一个是 AUC 分数,另一个是低假阳性率下对应的真阳性率。
Main Results
主实验结果如表所示,整体来说,本文方法在多个模型和基准数据集上的表现优于现有方法。
首先是在 WikiMIA 的检测上,这个数据集相比与其余两个规模为 1w 大小的数据集而言较小,只有 250 条数据,同期工作 Min-k%++ Prob 在个别模型的检测效果上优于我们,考虑到 Min-k%++ Prob 方法是从其他角度对词元概率进行校准再进行检测分数计算的方法,我们可以合理地推测词元概率受到多种因素的影响,而不仅仅是词频,因此直接依赖词元概率进行检测是不太稳定的,未来工作也可以从这方面去探索其他校准词元概率的方法,使之更适合检测,或者是更创新地探索更有效的特征来作为训练数据检测的信号。
最后,通过在中文基准数据集上的实验结果表明,除了基于英文大小写特性进行检测的 Lowercase 方法,现有的方法还是适用于中文文本检测的,而且我们的方法仍然取得最佳的效果。
Ablation Study
本文所提方法在具体执行过程中,采用了两个策略。首先是在基于词元概率与词元频率计算交叉熵,为文本中的每个词元Xi得到一个新的值α之后,作者设置了一个超参数 a 来控制α的上限,以防止最终的检测分数被个别词元的值所主导,此处记为 LUP 策略。
其次是因为模型通常会给那些在文本此前出现过的词,赋予较高的预测概率,所以仅选取在文本中第一次出现的词对应的值,来计算最后的检测分数,此处记为 SFO 策略。
CLD 表示都不采取两个策略时的方法变体,+ LUP 是指在 CLD 方法变体的基础上纳入第一个策略,+ SFO 是指在 CLD + LUP 方法变体的基础上再纳入第二个策略。
实验结果如图所示,实验结果表明,这两个策略在整体上对所提方法性能的提升都有一定的贡献。但有一点需要注意的是,在检测 GPT-3 时,LUP 策略并没有起到太大的效果,作者推测,可能是因为该策略涉及到超参数设置所导致的,因此后续也对 LUP 中涉及的超参数设置做了进一步分析。
Impact of model size and text length
实验的最后,作者对一些可能影响方法性能的因素做了进一步分析,首先是两个方法无关的因素,待检测模型的大小,以及待检测文本的长度。
左图是检测方法性能随待检测模型大小变化的变化情况,这里本文采取了 Qwen1.5 系列的模型在 PatentMIA 基准数据集上的检测效果。实验结果表明,检测方法的性能随着待检测模型大小的增加而增加,这进一步证实了此前研究的结论,这种现象可能是因为较大的模型具有更大的参数量,使之在记忆和处理文本上的能力更强所导致,其中本文所提方法在各种模型规模设定下一致地优于现有方法。
右图是检测方法性能随待检测文本长度变化的变化情况,这里采取了 Qwen1.5 的 7B 版本模型在 PatentMIA 基准数据集多种长度版本下的检测效果。实验结果表明,检测方法的性能随着待检测文本的长度增加也呈现出增加,这同样证实了此前研究的结论,这可能是较长的文本携带了更多有助于模型记忆文本的的信息所导致的,其中本文所提方法也在各种长度版本设定下一致地优于现有方法。
Impact of a reference corpus
最后探讨一下方法相关的两个因素。第一个因素是参考语料库,回顾本方法涉及大模型训练语料库的词元频率分布计算,但因为大模型的训练语料库不可知,作者借助一个公开的大型语料库来近似计算这个分布。
此处的实验探讨了参考语料库的选择对方法性能的影响情况。具体地,作者从语料库的数据规模和数据内容两个维度入手,在数据规模上,探索了分别选择规模大小为 1G 和 10G 时的语料作为参考语料库时,方法的性能表现情况;在数据内容上,探索了分别选择数据来源为网页数据 和 专业领域数据的语料作为参考语料库时,方法的性能表现情况。
实验结果如表中所示,方法性能的变动,受参考语料库的数据规模,和数据内容的影响较小,表明我们的方法在参考语料库的选择上并不敏感。
其中选择为 10 G 的 C4 语料时,方法的表现最好,作者认为是因为该选择,在规模上相较于 1G 更大,在内容上相比于专业领域数据更多样,使得其数据分布更接近原始的训练数据分布,进而能取得更好的性能表现。
Impact of the hyperparameter
另一个因素是前面提到的超参数设置,本文在基于词元概率与词元频率计算交叉熵,为文本中的每个词元得到一个新的值之后,设置了一个超参数 a 来控制的上限,以防止最终的检测分数被个别词元的值所主导。
这里的实验就是想探讨不同大小的超参数设置下,方法性能的变动情况。实验结果如表中所示,方法对该参数还是有一点敏感的,这是因为较高的超参数设置不能有效地限制上限,起不到预期作用,而较低的超参数设置将导致最后为每个词元计算的值都一样,进而使得训练文本和非训练文本的分数相似而难以区分。
但尽管如此,本文的方法在多种超参数设置下仍然取得具有竞争力的性能表现,未来可能可以探索自适应的超参数设置方法来改进这方面的缺陷。
Conclusion
首先本文构造了一个新的基准数据集,用于评估现有方法在中文文本上的检测效果,弥补现有研究在这一块上的空白;
其次作者受信息检索领域 DFR 理论的启发,提出一种新的检测方法来校准词元概率,使之更适用于训练数据的检测;
最后通过大量实验进一步证实所提方法的有效性;
在未来工作中,作者表示可能会探索数据集级别的预训练数据检测方法,而不仅仅实现对单条文本的检测。
本期文章由陈研整理
往期精彩文章推荐
AAAI 2025预讲会一作讲者招募|个人和团队报名通道开启
关于AI TIME
AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。
迄今为止,AI TIME已经邀请了2000多位海内外讲者,举办了逾700场活动,超800万人次观看。
我知道你
在看
提出观点,表达想法,欢迎
留言
点击 阅读原文 观看作者讲解回放!
相关文章:
EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 张伟超,中国科学院计算所网络数据科学与技术重点实验室三年级直博生 内容简介 近年来,大语言模型(LLMs)的…...
Linux 的信号机制
目录 一、信号机制概述 二、常见信号类型及含义 三、信号的产生方式 1.用户操作产生信号 2.系统调用产生信号 3.硬件异常产生信号 四、信号的处理方式 1.默认处理 2.忽略信号 3.自定义处理函数 五、信号处理流程深入剖析 六、信号机制的应用场景与优势 七、总结 一、…...
国内独立开发者案例及免费送独立开发蓝图书
独立开发者在国内越来越受到关注,他们追求的是一种自由且自给自足的工作状态。 送这个: 少楠light(Flomo、小报童、如果相机):他们是独立开发者的典范,不仅开发了多款产品,还坚信“剩者为王”…...
以太网(Ethernet)和无线局域网(Wireless Local Area Network, WLAN)
当然,下面我将详细介绍以太网(Ethernet)和无线局域网(Wireless Local Area Network, WLAN),包括它们的定义、技术标准、优缺点以及应用场景等方面。 一、以太网(Ethernet) 1. 定义…...
大模型-ChatGLM2-6B模型部署与微调记录
大模型-ChatGLM2-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip insta…...
Web防火墙和下一代防火墙的区别
介绍 客户经常询问“当我已经拥有下一代防火墙(NGFW)时,为什么需要Web应用程序防火墙(WAF)?”。本博文的目的是解释两种解决方案之间的区别,重点关注Web应用程序防火墙可以提供的附加值。 什么…...
Yocto 项目中的交叉编译:原理与实例
Yocto 项目是一个强大的工具集,它专注于为嵌入式系统生成定制的 Linux 发行版。交叉编译在 Yocto 项目中扮演着核心角色,它使得开发者能够在功能强大的宿主机上构建适用于资源受限目标设备的软件系统。这篇文章将从运行原理、实际案例和工具链组成等角度…...
从安全角度看 SEH 和 VEH
从安全角度看 SEH 和 VEH 异常处理程序是处理程序中不可预见的错误的基本方法之一 https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/ SEH——结构化异常处理程序 就其工作方式而言,异常处理程序与其他处理程序相比相当基础࿰…...
【多维DP】力扣3366. 最小数组和
给你一个整数数组 nums 和三个整数 k、op1 和 op2。 你可以对 nums 执行以下操作: 操作 1:选择一个下标 i,将 nums[i] 除以 2,并 向上取整 到最接近的整数。你最多可以执行此操作 op1 次,并且每个下标最多只能执行一…...
钉钉h5微应用,鉴权提示dd.config错误说明,提示“jsapi ticket读取失败
这个提示大多是因为钉钉服务器没有成功读取到该企业的jsticket数据 1. 可能是你的企业corpid不对 登录钉钉管理后台 就可以找到对应企业的corpid 请严格使用这个corpid 。调用获取jsapi_ticket接口,使用的access_token对应的corpid和dd.config中传递的corpid不一致…...
Linux系统之tree命令的基本使用
Linux系统之tree命令的基本使用 一、tree命令介绍二、tree工具安装三、tree命令帮助3.1 查询帮助信息3.2 tree命令帮助解释 四、tree命令的基本使用4.1 直接使用4.2 *限制显示的层级4.3 仅显示目录4.4 不显示隐藏文件4.5 显示文件大小4.6 彩色输出4.7 输出到文件4.8 输出不同格…...
PyTorch框架——基于深度学习LYT-Net神经网络AI低光图像增强系统源码
第一步:LYT-Net介绍 本文介绍了LYT-Net,即轻量级YUV Transformer 网络,作为一种新的低光图像增强方法。所提出的架构与传统的基于Retinex的模型不同,它利用YUV颜色空间对亮度(Y)和色度(U和V&…...
【AI学习】DeepSeek-V3 技术报告学习:总体架构
翻了一下DeepSeek-V3 技术报告学习,太长,只是大概翻了一下,其中Multi-Token Prediction的技术就很亮眼。 摘要 本文介绍了DeepSeek-V3,这是一个拥有671B总参数的强大混合专家(MoE)语言模型,每…...
PyTorch快速入门
文章目录 前言简介软件包导入创建张量类型操作索引直接索引切片索引 维度变换增加维度删除维度维度重复维度交换broadcast合并张量拆分张量运算最后 前言 你好,我是醉墨居士,今天分享一下PyTorch的基本使用的快速入门教程,希望能够帮助各位快…...
GCP Cloud Observability 是什么,有什么使用场景
GCP Cloud Observability 是 Google Cloud Platform (GCP) 提供的一组工具和服务,用于监控、日志记录、追踪和调试应用程序和基础设施的健康和性能。通过收集和分析遥测数据(如指标、日志和追踪信息),Cloud Observability 有助于理…...
OpenCV相机标定与3D重建(35)计算两幅图像之间本质矩阵(Essential Matrix)的函数findEssentialMat()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从两幅图像中的对应点计算本质矩阵。 cv::findEssentialMat 是 OpenCV 库中用于计算两幅图像之间本质矩阵(Essential Matrix…...
计算机毕业设计Hadoop+Spark美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【探花交友】SpringCache
目录 通用缓存SpringCache 重要概念 导入依赖 开启缓存支持 编写UserInfoService 缓存Cacheable 发布视频清空缓存 通用缓存SpringCache 实现缓存逻辑有2种方式: 每个接口单独控制缓存逻辑 统一控制缓存逻辑Spring从3.1开始定义了org.springframework.cac…...
链表 之 无头结点【哨兵位】单向非循环链表【单链表】增删改查 等方法
系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…...
2001年对墨西哥湾流进行的主动荧光测量数据
目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 干旱监测平台 Active fluorescence measurements in the Gulf Stream in 2001 简介 "Active fluorescence measurements in the Gulf Stream in 2001"是指在2001年对墨西哥湾流进行的主动荧光测量。这…...
AtCoder Beginner Contest 386
1.D - Diagonal Separation 赛时一直卡在这道题,知道思路但不知道怎么解决,就是说若存在给定的白色方块出现在某个B方块与源点构成的区域内就无法实现,如果数据是1000则可以通过离散化 二维差分来解决,赛时一直在试图通过树状数组,线段树来解决&#x…...
Ajax总结
引言 这是属于前端的部分了,先是学习了三件套(HTML,JS,CSS没怎么学,但是大概能理解)之后就开始学习这个了,学习之前应该要知道她是做什么的,但是我没有做这一步,之后会先了解为什么要学习这门技…...
Springboot使用外置的Servlet容器
嵌入式Servlet容器:应用打成可执行的jar 优点:简单、便携 缺点:默认不支持JSP、优化定制比较复杂 外置的Servlet容器:外面安装Tomcat---应用war包的方式打包 一.嵌入式tomcat启动项目步骤: 1.创建一个普通maven项目…...
金仓数据库物理备份和还原
差异备份:是复制上次全备份以来所有变更数据的一种备份。 增量备份:没有重复的备份数据,备份的数据量不大,备份所需的时间很短,备份速度快 考点 sys_rman工具(必考) 配置 sys_backup.conf 初…...
Python提取字符串中的json,时间,特定字符
1.整个字符串为json s{"time":"2014-10-14 12:00", "tid":12, "info_message":"我爱python"} _jsonjson.loads(s) print(_json) 执行结果: {time: 2014-10-14 12:00, tid: 12, info_message: 我爱python} 2…...
Android `android.graphics.drawable` 包深度解析:架构与设计模式
Android android.graphics.drawable 包深度解析:架构与设计模式 目录 引言Drawable 概述Drawable 的架构 Drawable 类层次结构Drawable 的核心方法Drawable 的设计模式 装饰者模式工厂模式状态模式常用 Drawable 子类解析 BitmapDrawableShapeDrawableLayerDrawableStateList…...
从提示词到共振:李继刚的AI沟通法则
摘要:在极客公园的演讲中,李继刚分享了他对提示词的深入研究,提出了通过场域和共振达到与AI深层次交流的策略。他分析了AI的存在属性,指出未来提示词将因AI进化而变得更为简洁和高效。 一、Prompt思考与总结 本文内容大多是源于…...
Redis字符串底层结构对数值型的支持常用数据结构和使用场景
字符串底层结构 SDS (Simple Dynamic Strings) 是 Redis 中用于实现字符串类型的一种数据结构。SDS 的设计目标是提供高效、灵活的字符串操作,同时避免传统 C 字符串的一些缺点。 struct sdshdr {int len; // 已使用的长度int free; // 未使用的长度char bu…...
Windows下Python+PyCharm的安装步骤及PyCharm的使用
Windows下PythonPyCharm的安装步骤及PyCharm的使用 文章目录 Windows下PythonPyCharm的安装步骤及PyCharm的使用一、Python的安装(1)环境准备(2)Python安装(3)pip组件的安装 二、PyCharm的安装(…...
oracle基础:中文字段排序详解
在数据库操作中,中文字段排序是一个常见但又容易被忽视的问题。默认情况下,Oracle 数据库的排序规则是基于 Unicode 编码的,这可能导致排序结果并不符合预期,比如按拼音、部首或笔画排序。本文将详细解析如何在 Oracle 中实现中文…...
网络安全专有名词详解_3
80.WAF 即为Web Application Firewall,即Web应用防火墙,通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。 81.SOC Security Operations Center,翻译为安全运行中心,通过建立一套实时的资产风险模型&a…...
【C语言】库函数常见的陷阱与缺陷(三):内存分配函数[2]--calloc
C语言中的calloc函数是一个用于分配多个具有相同大小的内存块的函数,它在动态内存管理中扮演着重要角色。然而,在使用calloc时也存在一些陷阱与缺陷。 一、功能与常见用法 calloc(contiguous allocation)函数用于动态分配内存,相较于 malloc 函数,不仅能够在堆上为程序…...
CKA认证 | Day7 K8s存储
第七章 Kubernetes存储 1、数据卷与数据持久卷 为什么需要数据卷? 容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会…...
.net core 的数据库编程
Python基础 Python是一种高级编程语言,由Guido van Rossum于1980年代后期发明,并于1991年首次发布。它以简洁的语法和易于阅读的代码风格著称,因而成为程序员和数据科学家等领域的热门选择。在这篇文章中,我们将深入探讨Python的…...
再生核希尔伯特空间(RKHS)上的分位回归
1. 基本定义和理论基础 1.1 再生核希尔伯特空间(RKHS) 给定一个非空集合 X \mathcal{X} X,一个希尔伯特空间 H \mathcal{H} H 称为再生核希尔伯特空间,如果存在一个函数 K : X X → R K: \mathcal{X} \times \mathcal{X} \rightarrow \mathbb{R} K…...
结构方程模型【SEM】:非线性、非正态、交互作用及分类变量分析
利用结构方程模型建模往往遇到很多‘特殊’情况:1)变量间为非直线关系;2)变量间存在交互作用;3)数据不满足正态分布;4)变量为非正态类型的数值变量,如0,1数据…...
不安全物联网的轻量级加密:综述
Abstract 本文综述了针对物联网(IoT)的轻量级加密解决方案。这项综述全面覆盖了从轻量级加密方案到不同类型分组密码的比较等多个方面。同时,还对硬件与软件解决方案之间的比较进行了讨论,并分析了当前最受信赖且研究最深入的分组…...
DeepSpeed 使用 LoRA 训练后文件结构详解
DeepSpeed 使用 LoRA 训练后文件结构详解 在大语言模型(LLM)的训练过程中,DeepSpeed 提供了强大的分布式训练能力,而 LoRA(Low-Rank Adaptation)通过参数高效微调技术显著减少了资源占用。完成训练后&…...
Mysql数据 新增、修改和删除操作时,这些变化如何被转换为Kafka消息?
Mysql数据 新增、修改和删除操作时,这些变化如何被转换为Kafka消息? 为了在FlinkCDC中配置MySQL同步到Kafka,并采用debezium-json数据格式,我们需要了解当执行新增、修改和删除操作时,这些变化如何被转换为Kafka消息。下面我们将详细介绍这些变化情况,并提供具体的数据样…...
高等数学 8.1向量及其线性运算
8.1 向量及其线性运算 文章目录 8.1 向量及其线性运算一、向量的概念向量的线性运算1.向量的加减法2.向量与数的乘法 三、空间直角坐标系四、利用坐标作向量的线性运算五、向量的模、方向角、投影1.向量的模与两点间的距离公式2.方向角与方向余弦3.向量在轴上的投影 一、向量的…...
向bash shell脚本传参
例子: ~ script % touch parameter.sh ~ script % chmod 755 parameter.sh ~ % vim parameter.shparameter.sh: #!/usr/bin/env bashecho the name of current script is $0echo the first parameter is $1echo the second parameter is $2echo all parameters: $…...
高精度算法:加减乘除 (学习笔记)
加法: 现有vector<int>a,b;并且已经输入了内容且倒置 vector<int> plus(vector<int>a,vector<int> b){ int as a.size(); int bs b.size(); vector<int>total; int carry 0; int ar 0, br 0; //读取位数 while (ar < as &am…...
JVM 主要组成部分与内存区域
一、JVM 主要组成部分: JVM的主要包含两个组件和两个子系统,分别为: (1)本地库接口(Native Interface):与native lib(本地方法库)交互,融合其他编程语言为Java所用,是与其它编程语言…...
10分钟掌握项目管理核心工具:WBS、甘特图、关键路径法全解析
一、引言 在项目管理的广阔天地里,犹如一场精心编排的交响乐演奏,每个乐器、每个音符都需精准配合才能奏响美妙乐章。而 WBS(工作分解结构)、甘特图、关键路径法无疑是这场交响乐中的关键乐章,它们从不同维度为项目管…...
python语音机器人(青云客免费api)
强调:不用登录注册,直接使用就好 青云客智能聊天机器人API python代码,直接可以运行: 1、安装库: pip install requests pyttsx3 SpeechRecognition sounddevice numpy scipy2、完整代码: import request…...
策略模式以及优化
使用场景 在一个条件语句中又包含了多个条件语句 具体策略类会过多 把抽象策略和具体策略放在一个枚举类里。 方法 exe() 相当于抽象策略,而A和B就相当于实现了抽象策略的具体策略 这样就只需要一个枚举类就可以解决具体策略类过多的问题 public enum Strategy {A{O…...
解决tomcat双击startup.bat乱码的几种方法
新环境,win10,今天下载了tomcat9.0.98,是压缩绿色版的,解压缩安装到了: D:\java\apache-tomcat-9.0.98 可以通过D:\java\apache-tomcat-9.0.98\bin\startup.bat双击来启动tomcat。 但是日志显示乱码。 后来找到了几种…...
计算机网络 (12)物理层下面的传输媒体
前言 计算机网络物理层下面的传输媒体是计算机网络设备之间的物理通路,也称为传输介质或传输媒介,并不包含在计算机网络体系结构中,而是处于物理层之下。 一、传输媒体的分类 导向型媒体:电磁波被导引沿着固体媒体传播。常见的导向…...
Spark生态圈
Spark 主要用于替代Hadoop中的 MapReduce 计算模型。存储依然可以使用 HDFS,但是中间结果可以存放在内存中;调度可以使用 Spark 内置的,也可以使用更成熟的调度系统 YARN 等。 Spark有完善的生态圈: Spark Core:实现了…...
如何计算相位差
如何计算相位差 假设我们有两个同频率的正弦信号: 这里两个信号的角频率w2πf是相同的,根据同频正弦信号相位差的计算方法,直接用两个信号的相位相减。 再来看利用波形图计算相位差的例子: 另一种计算方式:...