[论文阅读]BadPrompt: Backdoor Attacks on Continuous Prompts
BadPrompt: Backdoor Attacks on Continuous Prompts
BadPrompt | Proceedings of the 36th International Conference on Neural Information Processing Systems
36th Conference on Neural Information Processing Systems (NeurIPS 2022)
如图1a,关注的是连续提示学习算法的漏洞,而非攻击预训练语言模型PLM
主要是NLP分类模型吧。
相关工作
基于提示的学习范式:就是所谓的few-shot,设计提示词
现在使用的提示词是手工设计的和自动生成的(离散提示或者恋雪提示)两类。
连续提示模型;Lester ; Li-Liang ; p-tuning ; DART ; optiprompt,其在嵌入空间中微调提示,在少样本设置中已获得比传统微调压倒性的优势。 其中,P-tuning最先提出连续提示,它采用外部LSTM模型作为提示编码器。 在论文发表的当时,DART在没有外部参数的情况下实现了最先进的性能。
本文研究了连续提示的漏洞,并通过实验证明连续提示很容易通过后门攻击进行控制。
后门攻击:
近期关于文本后门攻击的工作分两类:
- 攻击不同的PLM组件,包括嵌入层,神经元层,输出表示
- 设计自然且隐蔽的触发器,这通常利用外部知识。 所有这些研究都依赖于大量的投毒样本将后门注入受害者模型。 本研究旨在用少量投毒样本攻击连续提示,这可以应用于少样本场景。 此外,我们还通过自适应地选择样本特定的触发器来考虑触发器的有效性和不可见性。
方法
威胁模型
恶意服务提供商MSP视为攻击者,在少样本场景下训练一个连续提示模型,训练中MSP把后门注入模型,后门可以通过特定触发器激活,当受害者下载模型并应用到下游任务的时候,攻击者可以通过把包含触发器的样本输入进去来激活后门
目标:攻击者在后门被激活时,入侵连续提示模型以预测特定标签(类别)
定义为下面的优化问题:
其中𝒟c,𝒟p分别指代干净训练数据集和投毒数据集,yT指攻击目标标签,ℒ指受害者模型的原始损失函数。 投毒样本是通过将触发器τ注入原始样本x(j)获得的,即x(j)⊕τ。 注意θ包含连续提示的参数θprompt和PLM的参数θPLM。
攻击者的能力:MSP可以访问 PLM 并可以投毒下游任务的训练集。 例如,用户将一小部分训练样本上传到 AI 服务提供商(即 MSP),并委托平台训练提示模型。 因此,服务提供商可以训练一个后门提示模型并将其返回给用户。 请注意,MSP 只使用干净的 PLM 来训练后门模型。 与攻击 PLM相比,投毒提示调优是轻量级的且节省资源的。 更重要的是,由于触发器是根据下游任务的训练数据选择的,因此我们的方法可以实现更好的后门性能。
BadPrompt

两个模块:触发器候选生成 (TCG) 模块和自适应触发器优化 (ATO) 模块。
为了解决少样本挑战并同时实现高CA和ASR,BadPrompt首先根据干净模型选择有效的触发器,并在TCG模块中消除与干净样本语义上接近的触发器。
在ATO模块中学习每个样本的自适应触发器,以提高有效性和隐蔽性。
触发器候选生成TCG
把token用作触发器。
由于少样本设置中的训练样本有限,应该生成对预测目标标签yT贡献很大的词语。
给定一个数据集𝒟={(x(i),y(i))},其中x(i)包含一系列li符元,即x(i)=(w1,w2,…,wli),将数据集分割成训练集𝒟train、验证集𝒟val和测试集𝒟test。
首先根据受害者模型的方法在𝒟train上训练一个干净模型ℳC。
为了获得触发候选集,从𝒟train中选择带有标签yT的样本作为种子集,即𝒟seed={(x(s1),yT),(x(s2),yT),…,(x(sm),yT)},其中s1,s2,…,sm是带有标签yT的样本的索引。 对于句子x(si),多次随机选择一些符元,并获得一组符元组合Tsi={t1(si),t2(si),…,tn(si)}。 然后将每个符元组合输入干净模型ℳC并获得输出概率,从而测试它们的分类能力。 最后对Tsi上ℳC的概率进行排序,并选择概率最大的前N个(例如N=20)符元组合作为触发候选集𝒯1={τ1,τ2,…,τN}。 注意,触发候选都来自具有目标标签的样本。选择对干净模型预测目标标签最具指示性的触发候选。
触发候选集𝒯1侧重于实现高攻击性能。 但是𝒯1中的一些触发器是混淆的,在嵌入空间中接近非目标样本。 注入这些混淆触发器可能会导致模型对标签不是yT的非目标样本预测yT。 因此,这些触发器可能会影响被攻击模型的干净准确率CA。剔除在语义上接近非目标样本的触发候选来消除混淆触发器:当候选τi∈𝒯1被输入干净模型ℳC时,可以得到τi的隐藏表示,记为𝒉iτ=ℳC(τi)。 同样,对于具有非目标标签的样本x(j),也可以获得其隐藏表示𝒉j=ℳC(x(j))。 通过计算它们的余弦相似度来衡量触发候选τi和非目标样本𝒟nt之间的语义相似度:
其中γi衡量τi与非目标样本平均值之间的语义相似度。 为了平衡计算成本和性能,选择余弦相似度最小的K个触发器作为最终的触发器集合𝒯={τ1,τ2,…,τK}
人话总结
拿到一个数据集,把它分成训练集、验证集和测试集这三部分。接着,按照被攻击模型原来的训练方法,用训练集训练出一个正常的模型,这个模型就是后续操作的重要依据。
从训练集里把标签是攻击目标的那些样本找出来,这些样本就组成了一个 “种子集合”。对于种子集合里的每个样本句子,多次随机挑出其中的一些词,把这些词组合在一起,就得到了很多不同的词组合。
把这些词组合一个个输入到之前训练好的正常模型里,模型会给出一些预测结果,这些结果用概率来表示。根据概率大小,把预测效果最好(概率最大)的前 N 个词组合选出来,形成一个初始的触发器候选集合。这些组合是最有可能让模型把样本预测成目标标签的。
前面选出来的组合里,可能有些组合虽然能让模型预测成目标标签,但它们和那些不应该被预测成目标标签的样本太像了,这就会影响模型在正常样本上的表现。所以要计算每个候选组合和那些不应该被预测成目标标签的样本之间的相似度。具体就是把候选组合和正常样本都输入到模型里,得到它们在模型里的embedding,再计算这些 embedding之间的相似度。相似度越低越好,最后选相似度最低的 K 个组合作为最终的触发器集合。这样选出来的触发器既不会影响模型在正常样本上的表现,又能在需要的时候让模型出错,实验发现选 20 个左右的触发器就能让攻击效果很好。
自适应触发器优化ATO
现有研究已经发现触发器并非对所有样本都同样有效。 因此,自适应触发器优化对于为不同样本找到最合适的触发器是最佳的。
提出了一种自适应触发器优化方法来自动学习最有效的触发器。
给定一个包含n个样本的训练集𝒟train,随机选择np个样本进行投毒,其余nc=n−np个样本作为干净样本保留。 用这两组数据训练后门模型ℳ。 已经从触发器候选生成中获得了一个触发器集合𝒯={τ1,τ2,…,τK},其中每个触发器τi由几个符元组成。 对于投毒集中的样本x(j),可以计算选择触发器τi的概率分布:
其中𝒆iτ和𝒆j分别是触发器τi和样本x(j)的嵌入,𝒖是一个可学习的上下文向量,⊕表示连接操作。 𝒆iτ和𝒆j都由干净模型初始化。 𝒖被随机初始化。 然后可以根据分布向量𝜶(j)采样一个触发候选τ∈𝒯。
离散触发候选的采样过程不可微,不能直接通过概率公式优化触发器的适配。采用Gumbel Softmax,这是一种常见的近似方法,并已应用于各种任务。 获得触发器τi的近似样本向量:
其中Gi和Gk是从Gumbel分布Gumbel(0,1)中采样得到的,t是温度超参数。 然后,每个K触发候选都按其可能性βi(j)加权,并组合起来形成伪触发器的向量表示:。 将𝒆jτ与𝒆j连接起来,以获得样本x(j)的投毒表示:𝒆j∗=𝒆jτ′⊕𝒆j。
通过这种方式,生成的隐蔽触发器根据具体的样本进行优化,这使得触发器更隐蔽,并进一步提高了ASR。 最后用干净样本和投毒样本,根据公式(1)训练模型。 模型通过反向传播进行更新。
人话总结
先把训练数据分成两拨,一拨是用来 “下毒” 的样本(就是要拿来做手脚,让模型出错的样本),另一拨是正常的干净样本。然后从之前触发器候选生成模块那里拿到一堆备选的触发器。这些触发器都是由一些词组成的。同时给每个触发器、样本都过模型,获得embedding,还随机生成一个可以调整的 “上下文向量”,这个向量在后面选触发器的时候会起到重要作用。、
对于那些用来 “下毒” 的样本,要看看每个触发器对它的 “攻击效果” 怎么样。通过一个公式来计算选择每个触发器的可能性。这个公式把触发器、样本以及上下文的embedding都考虑进去了。算出来的结果就是每个触发器对于这个样本的合适程度,可能性越高,说明这个触发器对这个样本可能越有用。
直接从这些备选触发器里选的话,由于不可微,无法优化。所以使用Gumbel Softmax来解决这个问题。从一个特定的随机分布里取一些值,再结合之前算出来的每个触发器的可能性,得到一个新的 选择向量。
根据新得到的选择向量,把每个触发器按照它对应的可能性进行合并,得到一个新的 “伪触发器特征表示”。然后,把这个 “伪触发器特征表示” 和样本原来的 “特征表示” 拼在一起,就得到了 “下毒” 后的样本特征表示。最后,用这些 “下毒” 样本和正常的干净样本一起去训练模型。在训练过程中,模型会根据这些样本不断调整自己的参数,这样就能让触发器更适合每个样本,让攻击更隐蔽,提高攻击成功的概率。
实验设置
数据集和受害者模型
三个任务:观点极性分类、情感分析和问题分类。
数据集:SST-2、MR、CR、SUBJ和TREC,这些数据集已广泛应用于连续提示中。每个数据集的每个类别分别只有16个训练样本和16个验证样本,是一种典型的少样本场景。 对每个任务的五个采样训练集使用相同的种子集。
受害者模型:一个预训练语言模型RoBERTa-large(因为它已广泛应用于基于提示的学习算法中)和一个提示模型P-tuning和DART。P-tuning是最早提出在连续空间中搜索提示并使用外部LSTM模型作为提示编码器的研究;DART提出了一种更轻量级且可微分的提示,无需任何提示工程,并取得了最先进的性能。
Baseline:四个来自计算机视觉和其他自然语言模型研究领域的先进后门攻击方法,以及一个良性模型:BadNet、RIPPLES[选择一些罕见的词作为触发器]、LWS[使用替代词的同义词而不是罕见词作为触发器]、EP[仅修改一个词嵌入来攻击BERT,它利用梯度下降法获得一个超级词嵌入向量作为触发词的嵌入。]
实现细节
为了进行公平比较,对于所有后门方法,我们首先使用相同的超参数在干净的数据集上训练相同的基于提示的模型,并获得了与先前研究DART具有竞争力的精度。 然后,我们使用四个基线和BadPrompt将后门注入受害者模型中,以研究这些方法的性能。
评估指标。 使用干净精度和攻击成功率进行评估。 干净精度(CA)计算干净测试集上的精度。 攻击成功率(ASR)衡量的是在正确预测样本总数中,通过插入触发器而被错误分类的样本的百分比。文章对每个任务的干净测试集中的所有样本都进行了投毒。 为了揭示整体性能还计算了这些方法的CA和ASR分数之和(CA+ASR)。测量了五个采样训练数据集的平均分数
实验
与基线的比较
用DART和P-tuning作为受害者提示进行了实验。 由于SST-2、MR、CR和SUBJ只有32个训练样本,用N={2,4,6,8,10}改变中毒样本的数量。 对于TREC,由于有96个训练样本,用N={6,12,18,24,30}设置中毒样本的数量。 通过这种方式评估了五种后门方法在6.25%、12.5%、18.75%、25%和31.25%中毒率下的性能。

增加中毒训练样本的数量时,干净测试集上的性能下降,而大多数情况下,五种方法的ASR都会增加。
当中毒样本数量增加时,我们的方法保持较高的CA,并且在所有数据集上的下降可以忽略不计。 结果验证了我们的动机:如果触发器远离非目标样本,则它们几乎不会影响良性模型。 对于BadNet和RIPPLES,虽然一开始CA相对较高,但增加中毒样本数量时,它会大幅下降。
CA和ASR的结果结合起来可以看到,尽管EP和LWS在五种方法中实现了最高的ASR,但它们的干净精度稳定地较低,在SST-2、MR、CR、SUBJ中约为50%,在TREC中约为20%。 我们方法的ASR与EP和LWS具有竞争力,并且优于BadNet和RIPPLES,尤其是在中毒率较低的情况下。在MR、CR和SUBJ上,仅使用2个中毒样本,我们方法的ASR就高于97%,这表明我们的攻击比BadNet和RIPPLES更有效,足以进行后门攻击。
CA和ASR的总和明显优于基线。在SST-2、MR、CR、SUBJ和TREC上,我们方法的值分别比第二高值高21.1%,20.7%,29.4%,17.9%,和3.4%。 这表明,与基线相比,所提出的方法实现了高ASR并保持了高CA。
消融研究
在没有提出的自适应触发器优化或触发器丢弃的情况下BadPrompt的效果,以及不同候选触发器选择策略的效果。
在两个基于提示的模型(即DART和P-tuning)和五个数据集上进行了消融研究。 对于每个实验,超参数(即候选数量和触发器长度)根据𝒟val上的性能设置。
表1显示了消融研究的结果。 最佳性能以粗体突出显示。
具有触发器丢弃和自适应触发器优化(BadPrompt)的所提方法在所有设置中具有最佳性能。在三个指标方面,具有丢弃的BadPrompt比没有丢弃的BadPrompt性能更好。 这验证了:通过去除与非目标样本语义相近的候选触发器,可以消除混杂触发器。
BadPrompt的性能优于top-1*,这与random*略有不同。 结果与我们的直觉一致:对于不同的受害者样本,最有效的触发器可能不同,并验证了所提出的自适应触发器优化的有效性。
触发器长度影响
只将每个触发器的长度从1变到6。增加触发器长度时,ASR 呈增长趋势。同时,CA 保持稳定,在不同触发器长度下仅有少量扰动。 这表明 BadPrompt 可以有效地对连续提示进行后门攻击,同时在干净的测试集上保持高性能。
候选触发器数量的影响
CA 和 ASR 都保持稳定,只有少量扰动。即使只有少量候选集,BadPrompt 也能够使用少量候选触发器生成和选择有效的触发器。 一个可能的原因是 BadPrompt 选择了前N(例如,N=10)个触发器,这些触发器最能指示目标标签,并且与非目标样本的余弦相似度最小。 通过这种方式,我们获得了前N个有效的触发器作为候选触发器,而其他触发器可能无用,因此对 BadPrompt 的性能影响很小。
结论
提出了第一个关于连续提示后门攻击的研究
发现现有的NLP后门方法不适用于连续提示的少样本场景。 为了应对这一挑战提出了一种轻量级且任务自适应的后门方法来对连续提示进行后门攻击,该方法由两个模块组成,即触发候选生成和自适应触发优化。 大量的实验结果证明了BadPrompt与基线模型相比的优越性。 通过这项工作,我们希望社区能够更多地关注连续提示的漏洞,并开发相应的防御方法。
相关文章:
[论文阅读]BadPrompt: Backdoor Attacks on Continuous Prompts
BadPrompt: Backdoor Attacks on Continuous Prompts BadPrompt | Proceedings of the 36th International Conference on Neural Information Processing Systems 36th Conference on Neural Information Processing Systems (NeurIPS 2022) 如图1a,关注的是连续…...
DeepSeek 实现趣味心理测试应用开发教程
一、趣味心理测试应用简介 趣味心理测试是一种通过简单的问题或互动,为用户提供心理特征分析的方式。它通常包含以下功能: 测试题目展示:以问答形式呈现心理测试题。用户行为分析:根据用户的回答或选择,分析心理特征…...
计算机网络八股文--day1
从浏览器输入url到显示主页的过程? 1. 浏览器查询域名的IP地址 2. 浏览器和服务器TCP三次握手 3. 浏览器向服务器发送一个HTTP请求 4. 服务器处理请求,返回HTTP响应 5. 浏览器解析并且渲染页面 6. 断开连接 其中使用到的协议有DNS协议(…...
【计算机视觉】OpenCV实战项目:FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析
FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析 1. 项目概述2. 技术原理2.1 图像变形基础2.2 常见的哈哈镜变形算法2.2.1 凸透镜效果2.2.2 凹透镜效果2.2.3 波浪效果 3. 项目实现细节3.1 核心代码结构3.2 主要功能实现3.2.1 图像采集3.2.2 变形映射生成3.2.3…...
量子机器学习:下一代AI的算力革命与算法范式迁移——从量子神经网络到混合量子-经典架构的产业落地
一、引言:当AI遇见量子力学 2025年,全球量子计算市场规模突破200亿美元,而量子机器学习(QML)正以370%的年复合增长率(数据来源:Gartner 2024)成为最受关注的技术融合领域。传统深度…...
【数据结构】——栈
一、栈的概念和结构 栈其实就是一种特殊的顺序表,其只允许在一端进出,就是栈的数据的插入和删除只能在一端进行,进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循先进后出LIFO(Last InFirst O…...
Octave 绘图快速入门指南
目录 1. 基本的 2D 绘图 2. 自定义图形样式 3. 绘制散点图 4. 绘制柱状图 5. 绘制直方图 6. 3D 绘图 6.6.1 3D 曲面图 6.6.2 3D 散点图 7. 绘制极坐标 8. 多子图绘制 总结 Octave 是一个类似于 MATLAB 的开源数学软件,广泛用于数值计算和数据分析。它提供…...
RabbitMQ深入学习
继续上一节的学习,上一节学习了RabbitMQ的基本内容,本节学习RabbitMQ的高级特性。 RocketMQ的高级特性学习见这篇博客 目录 1.消息可靠性1.1生产者消息确认1.2消息持久化1.3消费者消息确认1.4消费失败重试机制1.5消息可靠性保证总结 2.什么是死信交换机…...
数据结构中的栈与队列:原理、实现与应用
前言:栈和队列是计算机科学中两种最基础的线性数据结构,它们的独特操作规则和广泛的应用场景使其成为每一位开发者必须掌握的核心知识。本文将通过生活案例、代码实现和实际应用场景,带您深入理解这两种数据结构的精髓。 1.栈(Sta…...
Android 13 默认打开 使用屏幕键盘
原生设置里,系统-语言和输入法-实体键盘-使用屏幕键盘 选项, 关闭时,外接物理键盘,如USB键盘,输入时不会弹出软键盘。 打开时,外接物理键盘,如USB键盘,输入时会弹出软键盘。 这个选…...
C++GO语言微服务之图片、短信验证码生成及存储
目录 01 session的处理 02 获取网页图片验证码ID 03 测试图片验证码 04 图片验证码模块集成 05 图片验证码功能移植微服务 06 图片验证码功能对接微服务的web实现 07 对接微服务的web实现步骤小结 08 Redis数据库基本操作回顾 09 go语言操作Redis数据库API介绍 10 go语…...
视觉革命来袭!ComfyUI-LTXVideo 让视频创作更高效
探索LTX-Video 支持的ComfyUI 在数字化视频创作领域,视频制作效果的提升对创作者来说无疑是一项重要的突破。LTX-Video支持的ComfyUI便是这样一款提供自定义节点的工具集,它专为改善视频质量、提升生成速度而开发。接下来,我们将详细介绍其功…...
MySQL 索引(一)
文章目录 索引(重点)硬件理解磁盘盘片和扇区定位扇区磁盘的随机访问和连续访问 软件方面的理解建立共识索引的理解 索引(重点) 索引可以提高数据库的性能,它的价值,在于提高一个海量数据的检索速度。 案例…...
认识 Linux 内存构成:Linux 内存调优之内存分配机制和换页行为认知
写在前面 博文内容涉及 Linux 中内存分配和换页机制的基本认知理解不足小伙伴帮忙指正 😃,生活加油99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻,而不是选择逃避。不要站在原地想象困难,行…...
uniapp-商城-50-后台 商家信息
本文介绍了如何在后台管理系统中添加和展示商家信息,包括商家logo、名称、电话、地址和介绍等内容,并支持后期上传营业许可等文件。通过使用uni-app的uni-forms组件,可以方便地实现表单的创建、校验和管理操作。文章详细说明了组件的引入、页…...
汇编语言的温度魔法:单总线温度采集与显示的奇幻之旅
在嵌入式系统的奇妙世界中,汇编语言与硬件的结合总是充满了无限可能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言在单片机上实现单总线温度采集与显示。这不仅是一次技术探索,更是一场点亮创意与灵感的奇幻之旅…...
2025盘古石初赛WP
来不及做,还有n道题待填坑 文章目录 手机取证 Mobile Forensics分析安卓手机检材,手机的IMSI是? [答案格式:660336842291717]养鱼诈骗投资1000,五天后收益是? [答案格式:123]分析苹果手机检材&a…...
巡检机器人数据处理技术的创新与实践
摘要 随着科技的飞速发展,巡检机器人在各行业中逐渐取代人工巡检,展现出高效、精准、安全等显著优势。当前,巡检机器人已从单纯的数据采集阶段迈向对采集数据进行深度分析的新阶段。本文探讨了巡检机器人替代人工巡检的现状及优势,…...
MySQL的Order by与Group by优化详解!
目录 前言核心思想:让索引帮你“排好序”或“分好组”Part 1: ORDER BY 优化详解1.1 什么是 Filesort?为什么它慢?1.2 如何避免 Filesort?—— 利用索引的有序性1.3 EXPLAIN 示例 (ORDER BY) Part 2: GROUP BY 优化详解2.1 什么是…...
使用小丸工具箱(视频压缩教学)压缩7倍
我们日常经常会遇见视频录制或者剪辑视频生成之后,视频文件非常占用存储空间,那么这款开源工具可以帮助我们压缩7倍,而且视频质量依然清晰。 软件下载 ①:可以通过我分享的CSDN资源下载:https://download.csdn.net/d…...
ui组件二次封装(vue)
组件二次封装的意义 保证一个系统中ui风格和功能的一致性便于维护 从属性、事件、插槽、ref这几方面考虑 属性和事件的处理:ui组件上绑定$attrs(v-model本质也是一个属性加一个事件,所以也在其列) 在自定义组件中打印$attrs&am…...
利用大型语言模型有效识别网络威胁情报报告中的攻击技术
摘要 本研究评估了网络威胁情报(CTI)提取方法在识别来自网络威胁报告中的攻击技术方面的性能,这些报告可从网络上获取,并使用了 MITRE ATT&CK 框架。我们分析了四种配置,这些配置利用了最先进的工具,包…...
笔试模拟 day4
观前提醒: 笔试所有系列文章均是记录本人的笔试题思路与代码,从中得到的启发和从别人题解的学习到的地方,所以关于题目的解答,只是以本人能读懂为目标,如果大家觉得看不懂,那是正常的。如果对本文的某些知…...
TCP的连接管理
三次握手 什么是三次握手? 1. 第一次握手(客户端 → 服务器) 客户端发送一个 SYN 报文,请求建立连接。 报文中包含一个初始序列号 SEQ x。 表示:我想和你建立连接,我的序列号是 x。 2. 第二次握手&a…...
ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析
我们在通过 av_interleaved_write_frame方法 写入 avpacket的时候,通常不需要关心 avpacket的生命周期。 本文分析一下内部实现的部分。 ----> 代表一个内部实现。 A(){ B(); C(); } B(){ D(); } 表示为: A ---->B(); ---->D(); ---->C(); int…...
【MyBatis-7】深入理解MyBatis二级缓存:提升应用性能的利器
在现代应用开发中,数据库访问往往是性能瓶颈之一。作为Java生态中广泛使用的ORM框架,MyBatis提供了一级缓存和二级缓存机制来优化数据库访问性能。本文将深入探讨MyBatis二级缓存的工作原理、配置方式、使用场景以及最佳实践,帮助开发者充分利…...
扫雷革命:矩阵拓扑与安全扩散的数学之美
目录 扫雷革命:矩阵拓扑与安全扩散的数学之美引言第一章 雷区生成算法1.1 组合概率模型1.2 矩阵编码体系第二章 数字计算系统2.1 卷积核运算2.2 边缘处理第三章 安全扩散机制3.1 广度优先扩散3.2 记忆化加速第四章 玩家推理模型4.1 线性方程组构建4.2 概率决策模型第五章 高级…...
通俗的桥接模式
桥接模式(Bridge Pattern) 就像一座桥,把两个原本独立变化的东西连接起来,让它们可以各自自由变化,互不干扰。简单来说,就是 “把抽象和实现分开,用组合代替继承”。 一句话理解桥接模式 假设你…...
金丝猴食品:智能中枢AI-COP构建全链路数智化运营体系
“金丝猴奶糖”,这个曾藏在无数人童年口袋里的甜蜜符号,如今正经历一场数智焕新。当传统糖果遇上数字浪潮,这家承载着几代人味蕾记忆的企业,选择以数智化协同运营平台为“新配方”,将童年味道酿成智慧管理的醇香——让…...
基于定制开发开源AI智能名片S2B2C商城小程序的公私域流量融合运营策略研究
摘要:本文以定制开发开源AI智能名片S2B2C商城小程序为技术载体,系统探讨公域流量向私域流量沉淀的数字化路径。研究通过分析平台流量(公域流量)与私域流量的共生关系,提出"公域引流-私域沉淀-数据反哺"的闭环…...
一、数据仓库基石:核心理论、分层艺术与 ETL/ELT 之辨
随着企业数据的爆炸式增长,如何有效地存储、管理和分析这些数据,从中提炼价值,成为现代企业的核心竞争力之一。数据仓库 (Data Warehouse, DW) 正是为此而生的关键技术。理解其基础理论对于构建高效的数据驱动决策体系至关重要。 一、数据库…...
智慧能源大数据平台建设方案(PPT)
1、建设背景 2、建设思路 3、建设架构 4、应用场景 5、展望 软件开发全方位管理资料包清单概览: 任务部署指令书,可行性研究报告全集,项目启动审批文件,产品需求规格详尽说明书,需求调研策略规划,用户调研问…...
递归函数(斐波那契数列0,1,1,2,3,5,8,13,21,34,55...)
目录 一、斐波那契数列(兔子问题) 二、迭代法(用while循环推下一项 ) 三、递归函数 (函数的定义中调用函数自身的一种函数定义方式) 四、递归函数的底层逻辑推理 (二叉树推倒最左下节点回退法) 一、斐波那契数列(兔子问题&…...
Python 从 SQLite 数据库中批量提取图像数据
Python 从 SQLite 数据库中批量提取图像数据 flyfish 实现了一个可扩展的 SQLite 图像导出工具,能够自动检测图像格式、处理数据前缀,并将数据库中的二进制图像数据导出为文件系统中的标准图像文件 import os import sqlite3 from typing import Dict…...
rust-candle学习笔记12-实现因果注意力
参考:about-pytorch 定义结构体: struct CausalAttention {w_qkv: Linear,dropout: Dropout, d_model: Tensor,mask: Tensor,device: Device, } 定义new方法: impl CausalAttention {fn new(vb: VarBuilder, embedding_dim: usize, ou…...
vue3使用tailwindcss报错问题
npm create vitelatestnpm install -D tailwindcss postcss autoprefixernpx tailwindcss init 4. 不过执行 npx tailwindcss init 的时候控制台就报错了PS E:\vite-demo> npx tailwindcss init npm ERR! cb.apply is not a function npm ERR! A complete log of this run c…...
MySQL COUNT(*) 查询优化详解!
目录 前言1. COUNT(*) 为什么慢?—— InnoDB 的“计数烦恼” 🤔2. MySQL 执行 COUNT(*) 的方式 (InnoDB)3. COUNT(*) 优化策略:快!准!狠!策略一:利用索引优化带 WHERE 子句的 COUNT(*) (最常见且…...
5.Redission
5.1 前文锁问题 基于 setnx 实现的分布式锁存在下面的问题: 重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如 HashTable 这样的代码中,他的方法都是使用 sync…...
RAG 赋能客服机器人:多轮对话与精准回复
一、引言 在人工智能技术飞速发展的今天,客服机器人已成为企业提升服务效率的重要工具。然而,传统客服系统在多轮对话连贯性和精准回复能力上存在明显短板。检索增强生成(Retrieval-Augmented Generation, RAG)技术通过结合大语言…...
rust-candle学习笔记13-实现多头注意力
参考:about-pytorch 定义结构体: use core::f32;use candle_core::{DType, Device, Result, Tensor}; use candle_nn::{embedding, linear_no_bias, linear, ops, Dropout, Linear, Module, VarBuilder, VarMap};struct MultiHeadAttention {w_qkv: Li…...
PyTorch API 5 - 全分片数据并行、流水线并行、概率分布
文章目录 全分片数据并行 (FullyShardedDataParallel)torch.distributed.fsdp.fully_shardPyTorch FSDP2 (fully_shard) Tensor Parallelism - torch.distributed.tensor.parallel分布式优化器流水线并行为什么需要流水线并行?什么是 torch.distributed.pipelining&…...
STL-list
一、 list的介绍 std::list 是 C 标准模板库(STL)中的一种双向链表容器。每个元素包含指向前后节点的指针,支持高效插入和删除操作,但随机访问性能较差。 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#x…...
WPF中如何自定义控件
WPF自定义控件简化版:账户菜单按钮(AccountButton) 我们以**“账户菜单按钮”为例,用更清晰的架构实现一个支持标题显示、渐变背景、选中状态高亮**的自定义控件。以下是分步拆解: 一、控件核心功能 我们要做一个类似…...
华为云Git使用与GitCode操作指南
案例介绍 本文档带领开发者学习如何在云主机上基于GitCode来使用Git来管理自己的项目代码,并使用一些常用的Git命令来进行Git环境的设置。 案例内容 1 概述 1.1 背景介绍 Git 是一个快速、可扩展的分布式版本控制系统,它拥有异常丰富的命令集,可以提供高级操作和对内部…...
UniRepLknet助力YOLOv8:高效特征提取与目标检测性能优化
文章目录 一、引言二、UniRepLknet 的框架原理(一)架构概述(二)架构优势 三、UniRepLknet 在 YOLOv8 中的集成(一)集成方法(二)代码实例 四、实验与对比(一)对…...
【软件工程】基于频谱的缺陷定位
基于频谱的缺陷定位(Spectrum-Based Fault Localization, SBFL)是一种通过分析程序执行覆盖信息(频谱数据)来定位代码中缺陷的方法。其核心思想是:通过测试用例的执行结果(成功/失败)和代码覆盖…...
stm32之IIC
目录 1.I2C1.1 简介1.2 硬件电路1.3 时序基本单元1.4 时序实例1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读 2.MPU60502.1 简介2.2 参数2.3 硬件电路2.4 框图2.5 文档 3.软件操作MPU60504.I2C通信外设4.1 简介4.2 I2C框图4.3 基本结构4.4 主机发送/接收4.5 软件/硬件波形…...
阿里云购买ECS 安装redis mysql nginx jdk 部署jar 部署web
阿里云服务维护 1.安装JDK 查询要安装jdk的版本,命令:yum -y list java* 命令:yum install -y java-1.8.0-openjdk.x86_64 yum install -y java-17-openjdk.x86_64 2.安装nginx 启用 EPEL 仓库 sudo yum install epel-release 安装 Nginx sudo yum …...
记录 ubuntu 安装中文语言出现 software database is broken
搜索出来的结果是 sudo apt-get install language-pack-zh-han* 然而,无效,最后手动安装如下 apt install language-pack-zh-hans apt install language-pack-zh-hans-base apt install language-pack-gnome-zh-hans apt install fonts-arphic-uming apt install libreoffic…...
质数和约数
一、知识和经验 把质数和约数放在一起就是因为他们有非常多的联系,为了验证这个观点我们可以先学习唯一分解定理:一个大于 1 的自然数一定能被唯一分解为有限个质数的乘积。 而且一个数不仅能被质数分解,原本也应该被自己的约数分解…...