【NLP 46、大模型技术发展】
目录
一、ELMo 2018
训练目标
二、GPT-1 2018
训练目标
三、BERT 2018
训练目标
四、Ernie —— baidu 2019
五、Ernie —— Tsinghua 2019
六、GPT-2 2019
七、UNILM 2019
八、Transformer - XL & XLNet 2019
1.模型结构
Ⅰ、循环机制 Recurrence Mechanism
Ⅱ、相对位置编码 Relative Positional Encodings
2.预训练目标
Ⅰ、传统训练目标:AR语言模型 auto regressive language model
Ⅱ、传统训练目标:AE语言模型 auto embedding language model
Ⅲ、AR与AE语言模型融合 Permutation Language Model
九、Roberta 2019
十、SpanBert 2019
十一、ALBERT 2019
十二、DistillBert 模型蒸馏技术 2019
1.模型蒸馏流程
Ⅰ、教师模型处理阶段
Ⅱ、学生模型训练阶段
Ⅲ、损失计算与优化
2.蒸馏损失计算方式 —— KL散度
十三、T5 (Text-to-Text Transfer Transformer) 2019
预训练任务设计 Span Corruption
十四、GPT3 2020
十五、从续写到回答 🚀
1.InstructGPT
2.SFT(Supervised Fine-Tuning)训练
预训练模型 / 大模型技术发展史
行动,是世间最好的药
—— 25.3.21
一、ELMo 2018
ELMo(Embeddings from Language Models)是一种基于深度上下文化词表征的预训练语言模型,由Allen AI研究所在2018年提出。它通过双向语言模型(Bi-LSTM)生成动态词向量,能够捕捉词汇在不同上下文中的语义和语法信息,从而解决传统词嵌入方法(如Word2Vec)无法处理的一词多义问题
ELMo模型也是由前文预测后文的自回归语言模型
ELMo使用双向长短期记忆网络(Bi-LSTM),分别从左到右和从右到左处理文本,从而同时利用上下文信息生成词向量
训练目标
通过双向语言模型(BiLM)最大化前后向语言模型的对数似然
预训练阶段:在预训练阶段,ELMo使用双层双向LSTM(前向和后向)来训练语言模型。前向语言模型根据上文(Context-before)预测当前词,后向语言模型根据下文(Context-after)预测当前词。训练目标是最大化前后向语言模型的对数似然,公式如下:
其中,tk 是当前词,Θx 是词嵌入参数,ΘLSTM 和 ΘLSTM 分别是前向和后向LSTM的参数,Θs 是softmax层的参数
下游任务阶段:在预训练完成后,ELMo将预训练好的双向LSTM网络和词嵌入作为特征提取器,应用于下游任务。通过加权求和不同层的输出向量,生成动态的词向量表示,以适应具体任务的需求
ELMo:预训练是一种通用的提升效果的手段
二、GPT-1 2018
在GPT-1之前,自然语言处理(NLP)领域主要依赖有监督学习,需要大量标注数据。GPT-1借鉴了计算机视觉领域的预训练-微调范式,提出通过大规模无监督预训练学习语言知识,再通过少量标注数据进行微调,以适应具体任务
训练目标
无监督预训练:在预训练阶段,GPT-1的目标是通过最大化语言模型的似然函数来学习语言的通用表示。具体来说,给定一个未标注的文本序列,模型的目标是预测序列中下一个词的条件概率。其数学表示为:L1(U)=∑ilogP(ui∣ui−k,…,ui−1;Θ),其中,ui 是当前词,ui−k,…,ui−1 是上下文窗口中的前 k 个词,Θ 是模型参数。GPT-1使用多层Transformer解码器来实现这一目标
有监督微调:在微调阶段,GPT-1的目标是根据特定任务的有标签数据调整模型参数,使其适应下游任务。微调时,模型在预训练的基础上,通过最小化任务特定的损失函数(如分类损失)来优化性能
总结来说,GPT-1的训练目标是通过无监督预训练学习语言的通用表示,再通过有监督微调适应具体任务,从而实现多任务泛化能力
GPT-1首次将Transformer的解码器(Decoder-only)架构用于语言模型,并通过无监督预训练学习语言的通用表示
早于BERT,启用了Transformer作为核心编码器
开始使用特有token连接不同的句子
采用自回归语言模型单向训练方式生成文本,即根据前文预测下一个词。训练目标是通过最大化预测概率来优化模型参数
在语言模型预训练的基础上,增加了有监督任务的训练
GPT - 1:明确指出预训练是有效的,transformer是好用的
三、BERT 2018
BERT是第一个采用双向Transformer结构的预训练语言模型。与传统的单向语言模型(如GPT)不同,BERT能够同时考虑文本的前后上下文信息,从而更全面地理解语言的含义
BERT基于Transformer的编码器部分,使用自注意力机制(Self-Attention)来捕捉序列中每个词与其他词的关系。这种机制允许模型在处理长序列时保持高效,并且能够并行计算
训练目标
掩码语言模型(Masked Language Model, MLM):随机遮盖输入序列中的部分词,并让模型预测被遮盖的词。这使得模型能够学习到上下文信息
下一句预测(Next Sentence Prediction, NSP):让模型判断两个句子是否是相邻的,帮助模型理解句子间的关系
掩码语言模型MLM预训练强于单向(LTR left to right)
BERT:从此以后,预训练就是语言类任务的起跑线
四、Ernie —— baidu 2019
改善mask的形式:由Mask随机token ——> Mask实体或词组的token
Ernie —— baidu:在一系列中文数据集上效果强于BERT
可以以完形填空的方式完成知识问答
Ernie —— baidu:这种做法在本质上相当于在预训练中加入了先验知识,可以更好的学习该语言,但是这也意味着对未知语言可能会无法使用该策略
五、Ernie —— Tsinghua 2019
Ernie —— Tsinghua:引入知识图谱,将实体信息融合到预训练任务中
下游fine-tune修改:对于不同实体分类和关系分类引入了两种token来加强模型对实体信息的认知
Ernie —— Tsinghua:强调了额外知识的重要性
六、GPT-2 2019
继续使用了单向语言模型,继续使用了Transformer结构
GPT-2沿用了GPT-1的Transformer解码器架构,但堆叠了更多的层(最大48层),并增加了参数量(达到15亿)。它通过自注意力机制(Self-Attention)和位置编码(Position Encoding)捕捉文本的全局上下文信息
GPT2:强调了zero-shot,做一个NLP任务时,不应该有下游微调 fine-tune 的环节,我们可以把所有任务都看作生成式任务来做,我们把 输入 和 需要执行的任务 拼接在一起,一起送给模型,让模型直接输出其应该有的输出结果
如今的大模型是将任务也用语言进行描述,而不需要在输入中多加一个Task Token
GPT2:大规模语言模型可以在不做有监督训练的情况下,完成许多任务
七、UNILM 2019
UNIfied pre-trained Language Model
Birirectional LM:Bert的用法,自编码语言模型
Left-to-Right LM:GPT的用法,自回归语言模型
Seq-toSeq LM:SFT的用法,序列到序列语言模型
依靠mask控制哪些词参与context embedding的计算
使用Bert的模型结构,同时进行Mask LM,单向LM,和seq2seq训练
使得预训练后模型可以更好的应用在生成式任务上,如:机器翻译和机器摘要等
UNIM:解决了原生BERT在生成式任务上的短板(只需要更改mask的形式)
八、Transformer - XL & XLNet 2019
希望解决Transformer模型结构的长度限制问题
1.模型结构
Ⅰ、循环机制 Recurrence Mechanism
将RNN的思想【RNN 的隐藏层不仅接收当前时刻的输入,还接收前一时刻的隐藏状态,将隐单元向量不断向后传递】引入Transformer,解决超长序列的问题【在Transformer中,将前一段文本的隐向量与后一段文本印象里拼接,之后计算attention】
Ⅱ、相对位置编码 Relative Positional Encodings
将传统Bert中的绝对位置编码 U_j 换成了一个不可训练的由三角函数矩阵公式定义的常数 R_i-j,该数与两字符的位置 i、j 相关
2.预训练目标
训练XLNet时改变预训练目标
Ⅰ、传统训练目标:AR语言模型 auto regressive language model
自回归语言模型训练:单向预测下一个字
缺点:缺少双向信息
示例:GPT
Ⅱ、传统训练目标:AE语言模型 auto embedding language model
自编码语言模型训练:双向信息输入,预测中间某个mask的字
缺点:引入了[mask],但实际任务中不存在
示例:Bert
Ⅲ、AR与AE语言模型融合 Permutation Language Model
Permutation Language Model 的核心思想是对输入序列进行随机排列,并基于排列后的顺序训练模型【调整句子顺序,之后进行单向预测】。
特性 | 自回归语言模型(如 GPT) | Permutation Language Model |
---|---|---|
建模顺序 | 固定(从左到右) | 随机排列 |
长距离依赖建模能力 | 有限 | 更强 |
训练效率 | 较低(逐词生成) | 较高(并行化训练) |
上下文信息利用 | 单向 | 多向 |
Transformer - XL & XLNet:修改训练目标,同时修改模型结构,带来效果提升
① 训练目标:MLM ——> PLM ② 模型结构:transformer ——> transformer - xl
九、Roberta 2019
Robustly optimized BERT approach,模型结构不变,训练方式调整:
① 更大的训练数据:使用了比 BERT 更大规模的数据集(如 Common Crawl 数据)。
② 更长的训练时间:显著增加了训练步数。
③ 更大的批次大小:使用更大的批次大小(batch size)进行训练。
④ 更长的训练样本:增大训练使用的训练样本长度
⑤ 移除下一句预测任务(NSP):实验表明,NSP 任务对 BERT 的性能提升有限,RoBERTa 移除了这一任务。
⑥ 动态掩码机制(Dynamic Masking):动态改变mask的位置,在训练过程中动态生成掩码(mask的位置不断发生变化),而不是使用固定的掩码模式。
RoBERTa:挖掘旧的方法的潜力,有时比创新还要有效
能够最大限度的发挥一种算法的能力,是算法工程师能力的体现
十、SpanBert 2019
通过 基于跨度的掩码语言模型(Span Masking) 和 新的训练任务 —— 跨度的边界目标(Span Boundary Objective),更好地建模文本中的 连续片段(Span),从而提高模型在跨度相关任务(如问答、指代消解)中的性能。与BERT的主要区别有:
① 基于跨度的掩码语言模型(Span Masking):与 BERT 的随机掩码不同,SpanBERT 随机选择 连续片段 进行掩码。例如,对于句子 "The quick brown fox jumps",SpanBERT 可能掩码 "quick brown fox" 而不是单个词。
② 跨度的边界目标(Span Boundary Objective,SBO):在训练过程中,SpanBERT 不仅预测被掩码的片段,还学习片段的边界信息。通过利用片段的左右边界词(Boundary Words)来预测被掩码的片段,模型能够更好地建模片段的上下文信息。
③ 移除下一句预测任务(NSP):与 RoBERTa 类似,SpanBERT 移除了 NSP 任务,因为实验表明 NSP 对跨度相关任务的性能提升有限。
SBO:使用片段的首尾边界信息,以及要学习的词在被掩码片段中的位置编码预测
SpanBert还做了关于Mask片段长度的实验:
Span Masking:Mask指定实体或名词短语,效果不如mask随机片段
Span Boundary Objective,SBO:NSP作用不大,不如不加,不如加SBO
SpanBert:大模型+更多的数据不是唯一出路,改变训练目标也有很大影响
十一、ALBERT 2019
试图解决Bert模型过大的问题,想办法减少参数量
分解式嵌入(Factorized Embedding Parameterization):BERT 的词嵌入维度与隐藏层维度相同,导致嵌入层参数量较大。ALBERT 将词嵌入分解为两个较小的矩阵,从而减少了嵌入层的参数量。
参数共享(Parameter Sharing):参数共享机制是指在同一层内部共享参数。在 ALBERT 中,Transformer 层的参数(如注意力机制和前馈网络)在同一层内部共享。
跨层参数共享(Cross-layer Parameter Sharing):跨层参数共享机制是指在不同层之间共享参数。在 ALBERT 中,Transformer 层的参数(如注意力机制和前馈网络)在不同层之间共享。有多种共享方式:
① 只共享attention部分
② 只共享feed-forward部分
③ 全部共享
句子顺序预测任务(Sentence Order Prediction, SOP):ALBERT 移除了 BERT 的下一句预测任务(NSP),引入了句子顺序预测任务。SOP 任务要求模型判断两个句子的顺序是否正确,从而更好地建模句子间的关系。
局限性:① 虽然目的在于缩减参数,但依然是越大越好 ② 虽然缩减了参数,但是前向计算速度【预测速度】没有提升(训练速度有提升)
ALBERT:工程角度讲价值不大,但是证明了参数量并非模型能力的绝对衡量标准
十二、DistillBert 模型蒸馏技术 2019
核心目标是通过 知识蒸馏(Knowledge Distillation) 技术,即通过让一个小型模型(学生模型 DistillBert)学习一个大型模型(教师模型 BERT)的知识,从而实现模型压缩,同时尽可能保留其性能。
知识蒸馏:小模型从大模型输出的概率分布进行学习,学生模型不仅学习任务的标签(如分类任务的类别),还学习教师模型的 软标签(Soft Labels) 和 隐藏状态(Hidden States)。通过这种方式,学生模型能够模仿教师模型的行为,从而保留其性能。
层数减少:DistilBERT 的 Transformer 层数为 BERT 的一半(例如 BERT-Base 有 12 层,DistilBERT 有 6 层)。
维度不变:DistilBERT 的隐藏层维度和词嵌入维度与 BERT 相同(如 768 维)。
移除部分组件:DistilBERT 移除了 BERT 中的 token-type embeddings 和 pooler 层。
1.模型蒸馏流程
Ⅰ、教师模型处理阶段
① 输入数据:原始数据输入教师模型
② 多层处理:包含m层Transformer或其他神经网络层
③ 软标签生成:最后一层通过Softmax(温度参数T = t)生成软标签(Soft Labels)
温度参数 T:软化概率分布(值越大,输出越平滑),T = 1时,输出为标准概率分布,T > 1时,概率分布更平滑,保留更多教师模型的泛化知识
Ⅱ、学生模型训练阶段
① 输入数据:同一批数据同时输入学生模型
② 轻量化设计:层数少于教师模型
③ 双路输出:软预测(Soft Predictions) —— 最后一层通过Softmax(温度参数 T = t),生成与教师模型对齐的软输出,硬预测(Hard Predictions) —— 同时通过Softmax(温度参数 T = 1),生成最终分类结果(标准概率分布)
Ⅲ、损失计算与优化
① 蒸馏损失(Distillation Loss):让学生模型的软预测逼近教师模型的软标签
公式:
P_teacher 和 P_student 分别为教师和学生模型的输出概率
② 学生损失(Student Loss):让学生模型的硬预测匹配真实标签(Ground Truth)
公式:,标准交叉熵损失
③ 总损失:将蒸馏损失和学生损失按权重结合(通常蒸馏损失权重较高)
公式:
2.蒸馏损失计算方式 —— KL散度
KL散度是一种衡量两个概率分布(也可简单理解为向量)之间差异的算法。经常作为神经网络的loss函数使用。
与交叉熵计算过程实际非常接近,但交叉熵通常要求 target 是 one-hot 形式。
公式:,注:一般情况下,要求P是Ground Truth
例:P = [0.2, 0.4, 0.4],Q = [0.4, 0.2, 0.4],P是教师模型输出的概率分布,Q是学生模型输出的概率分布
KL(P, Q) = 0.2 * log(0.2 / 0.4) + 0.4 * log(0.4 / 0.2) + 0.4 * log(0.4 / 0.4) = 0.1386294361
当 P 与 Q 的分布完全一致时,损失值最小
现在把 用训练好的教师模型构造训练数据交由学生模型训练这种数据增强的方式 也称作模型蒸馏技术
十三、T5 (Text-to-Text Transfer Transformer) 2019
核心理念是将所有NLP任务转化为文本到文本(Text-to-Text)的格式,即输入和输出均为文本字符串
Seq2seq理论上可以解决一切NLP问题
分类问题:文本 -> 标签
命名实体识别:文本 -> 实体
摘要、翻译:文本 -> 文本
回归问题:文本 -> 0.1(字符串)
缺点:使用了 encoder - decoder 结构,消耗资源过多
预训练任务设计 Span Corruption
连续遮盖:随机选择输入文本中15%的Token,以平均长度3的连续片段为单位进行遮盖(如:I <X> to eat <Y> pizza.
)。
预测片段:模型需预测被遮盖的完整片段(如 <X> like <Y> delicious
),而非单个Token
优势:迫使模型学习句子结构和上下文依赖,提升对复杂文本的建模能力
T5:我们有希望将所有任务都作为一个生成式任务来做,迈向NLP的大一统
十四、GPT3 2020
1750 亿参数量,是GPT-2的116倍
模型结构与GPT-2相同
继续使用单向语言模型预训练
预训练目标:采用 Span Corruption 任务,随机遮盖输入文本的连续片段(平均长度 3 个词),模型需预测完整片段,强化上下文依赖建模
GPT3表示,我们不应该使用:Pre-training + fine-tune 【预训练 + 下游模型微调】这种方式
理由:① fine-tune需要的数据,经常是缺失的 ② fine-tune会涉及对模型进行改造,使其变复杂,并失去泛化性 ③ 人类学习做新任务并不需要很多样本
而应该使用:Pre-training + Zero-shot / One-shot / Few-shot
GPT3:人工智能的目标 —— 像人一样的学习能力
十五、从续写到回答 🚀
使用BERT类模型微调,需要一个随机初始化的线性层,而当加入一个线性层之后,这个模型就变成了一类专用模型,这为使用带来了不便
更加理想的方式,模型永远生成文本,用文本描述各种各种任务的答案,模型的训练方式统一,推理方式统一
如何做到从”续写“到”回答“ —— SFT
1.InstructGPT
2.SFT(Supervised Fine-Tuning)训练
给出一定数量的问答对(QA对),经过模型SFT训练后,模型就可以实现从”续写“到”回答“的过程
预训练模型 / 大模型技术发展史
ELMo:预训练是一种通用的提升效果的手段
GPT - 1:明确指出预训练是有效的,transformer是好用的
BERT:从此以后,预训练就是语言类任务的起跑线
Ernie —— baidu:这种做法在本质上相当于在预训练中加入了先验知识,可以更好的学习该语言,但是这也意味着对未知语言可能会无法使用该策略
Ernie —— Tsinghua:强调了额外知识的重要性
UNIM:解决了原生BERT在生成式任务上的短板(只需要更改mask的形式)
Transformer - XL & XLNet:修改训练目标,同时修改模型结构,带来效果提升
RoBERTa:挖掘旧的方法的潜力,有时比创新还要有效
SpanBert:大模型+更多的数据不是唯一出路,改变训练目标也有很大影响
ALBERT:工程角度讲价值不大,但是证明了参数量并非模型能力的绝对衡量标准
DistillBert:通过 知识蒸馏(Knowledge Distillation) 技术,从而实现模型压缩,同时尽可能保留其性能。
T5:我们有希望将所有任务都作为一个生成式任务来做,迈向NLP的大一统
GPT3:人工智能的目标 —— 像人一样的学习能力
InstructGPT:给出一定数量的问答对(QA对),经过模型SFT训练后,模型就可以实现从”续写“到”回答“的过程
相关文章:
【NLP 46、大模型技术发展】
目录 一、ELMo 2018 训练目标 二、GPT-1 2018 训练目标 三、BERT 2018 训练目标 四、Ernie —— baidu 2019 五、Ernie —— Tsinghua 2019 六、GPT-2 2019 七、UNILM 2019 八、Transformer - XL & XLNet 2019 1.模型结构 Ⅰ、循环机制 Recurrence Mechanism Ⅱ、相对位置…...
汽车加气站操作工证书报考条件是什么?
关于汽车加气站操作工的资格证书: 一、核心证书要求 CNG充装人员上岗证 这是加气站加气工的核心资质证书,需通过专业培训并考核。该证书由相关部门颁发,证明持证人具备从事CNG(压缩天然气)充装操作的专业技能…...
材质及制作笔记
基本流程: 建中模——zb雕刻高模——maya拓扑低模——拆uv——sp烘焙贴图——sp绘制材质——渲染 1 材质贴图: diffuse/albedo/basecolor:漫反射 reflection/specular:反射 metalness:金属度 glossiness…...
Opencv 图像读取与保存问题
本文仅对 Opencv图像读取与保存进行阐述,重在探讨图像读取与保存过程中应注意的细节问题。 1 图像读取 首先看一下,imread函数的声明: // C: Mat based Mat imread(const string& filename, int flags1 );// C: IplImage based IplImage*…...
Flutter 2025生态全景:从跨端到嵌入式开发的新机遇
一、技术演进:从"一次编写多端运行"到"全场景覆盖" 1.1 渲染引擎革命:Impeller 2.0的性能突破 // 启用Impeller的配置示例(android/app/build.gradle) def enableImpeller true android {defaultConfig {…...
Idea中诡异的文件编码问题: 设置fileCodeing为UTF8但不生效
在fileCoding配置了编码utf-8,右下角的文件里编码格式却是ISO-8859-1,git后到远程仓库里却是ISO-8859-1的乱码,怎么修改都不生效,重启也不行,恶心的不行。 最后发现修复方案是: 1. 先随便做个变更&#x…...
Linux中逻辑卷的使用、扩容与磁盘配额
目录 一.逻辑卷概述 1.普通分区的优缺点 2.逻辑卷的优点 3.逻辑卷概述 二.逻辑卷的创建 1.逻辑卷相关命令 2.创建步骤 三.逻辑卷的扩容 1.扩容步骤 四.磁盘配额 1.概念及注意点 2.使用条件 3.相关命令 一.逻辑卷概述 1.普通分区的优缺点 普通分区优点:…...
Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现
此次官方发布的 Spring AI Alibaba OpenManus 实现,包含完整的多智能体任务规划、思考与执行流程,可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析,操作浏览器,执行代码等来完成复杂任务等。 项目源码及…...
关于IP免实名的那些事
IP技术已成为个人与企业保护隐私、提升网络效率的重要工具。其核心原理是通过中介服务器转发用户请求,隐藏真实IP地址,从而实现匿名访问、突破地域限制等目标。而“免实名”代理IP的出现,进一步简化了使用流程,用户无需提交身份信…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…...
Labview信号分析系统(含报告)
1.摘要 本文详细介绍了基于LabVIEW的轴承故障信号分析系统的设计与实现。该系统以凯斯西储大学轴承驱动端的振动信号为研究对象,涵盖了正常信号以及内圈、滚珠、外圈三种故障信号的分析。系统可以对信号进行滤波、时域分析、频域分析和时频域分析等。系统的功能如下…...
基于FastAPI与Kimi AI的智能聊天应用开发实践
一、项目概述 本文介绍一个基于现代Web技术栈的智能对话系统,前端采用响应式设计实现聊天界面,后端通过FastAPI框架构建高性能API服务,集成Moonshot AI大语言模型实现智能对话功能。系统具备完整的消息交互流程,支持参数定制化配…...
Android 蓝牙/Wi-Fi通信协议之:经典蓝牙(BT 2.1/3.0+)介绍
在 Android 开发中,经典蓝牙(BT 2.1/3.0)支持多种协议,其中 RFCOMM/SPP(串口通信)、A2DP(音频流传输)和 HFP(免提通话)是最常用的。以下是它们在 Android 中的…...
介绍FRAMES:一个统一的检索增强生成评估框架
引言 大型语言模型(LLMs)在认知任务上取得了显著进步,检索增强生成(RAG)技术成为提升模型性能的重要方法。然而,现有的评估方法往往孤立地测试模型的检索能力、事实性和推理能力,无法全面反映模…...
云钥科技多通道工业相机解决方案设计
项目应用场景分析与需求挑战 1. 应用场景 目标领域:工业自动化检测(如精密零件尺寸测量、表面缺陷检测)、3D立体视觉(如物体建模、位姿识别)、动态运动追踪(如高速生产线监控)等。 核心…...
微信小程序逆向开发
一.wxapkg文件 如何查看微信小程序包文件: 回退一级 点击进入这个目录 这个就是我们小程序对应的文件 .wxapkg概述 .wxapkg是微信小程序的包文件格式,且其具有独特的结构和加密方式。它不仅包含了小程序的源代码,还包括了图像和其他资源文…...
Debian ubuntu源
配置文件路径 /etc/apt/sources.list 阿里 deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse deb http://mirrors.aliyun.…...
几个工作中常用的网站
1.思维导图流程图 在线版 ProcessOn思维导图流程图-在线画思维导图流程图_在线作图实时协作 2.编码转换及报文格式化 ESJSON在线工具首页(ES JSON在线工具) JSON在线解析格式化验证 - JSON.cn 3.AI助手 通义 - 你的个人AI助手 文心一言 谷灵AI,你的工作好帮手…...
《Apipost如何超越Postman与Apifox?SocketIO调试工具横评》
实时通信调试工具可能已「过时」!许多主流工具如Apifox不支持SocketIO协议,导致调试效率低下。而Apipost作为国产工具,原生支持SocketIO,提供自定义事件管理、连接状态可视化等功能,极大提升了实时通信开发的效率和准确…...
为什么要将项目部署到外部tomcat
一、是什么 指将你的Java Web应用程序(如WAR包)安装并运行在一个独立安装的、位于项目外部的Tomcat服务器上,而不是使用内嵌的或开发环境自带的服务器。 外部Tomcat 指独立安装的Tomcat服务器(如从Apache官网下载的Tomcat&#…...
小迪安全109-php模型动态调试,反序列化,变量覆盖,tp框架,原生pop链
案例一 原生代码变量覆盖,duomicms 变量覆盖是什么 这个时候为什么会输出xiaodi呢 就是因为$ab所以$$a$b 所以就让$bxiaodi 搞不到源码,看老师的学吧 这一般在web端页面是看不到,也不好发现,代码可以看关键字和函数 例如$$这…...
Python 练习项目:MBTI 命令行测试工具
在当今数字化的时代,心理测试工具越来越受到欢迎,它们帮助人们更好地了解自己,做出更明智的职业选择,甚至改善人际关系。MBTI(迈尔斯-布里格斯性格分类法)是其中一种广为人知的人格测试,通过评估个人在四个维度上的偏好(外向-内向、实感-直觉、理智-情感、判断-理解),…...
zynq7000 + ucos3 + lwip202_v1_2调试过程
1 现在裸机应用上验证lwip 跑起来可能会报错,看下面的链接解决 zynq 网卡Phy setup error问题 zynq 网卡Phy setup error问题-CSDN博客 2 ping同以后,在zynq上添加ucos系统 链接如下: ZYNQ移植uCOSIII_zynq ucos-CSDN博客 3 移植lwip协议…...
Oracle数据库数据编程SQL<2.2 DDL 视图、序列>
目录 一、Oracle 视图(Views) (一) Oracle 视图特点 (二)Oracle 视图创建语法 关键参数: (三)Oracle 视图类型 1、普通视图 2、连接视图(可更新) 3、对象视图 4…...
关于bug总结记录
1、vs中出现bug error C1083:无法打开文件 链接:vs中出现bug error C1083:无法打开文件_vs20151083错误解决方法-CSDN博客 2、 VS小技巧:系统却提示:示msvcp120.dll丢失 链接:VS小技巧:系统却提示:示msvc…...
ClickHouse与TiDB实操对比:从入门到实战的深度剖析
ClickHouse与TiDB实操对比:从入门到实战的深度剖析 宝子们,在当今数据驱动的时代,选择合适的数据库对于处理海量数据和支撑业务发展至关重要。ClickHouse和TiDB作为两款备受关注的数据库,各自有着独特的优势和适用场景。今天&…...
【测试开发】OKR 小程序端黑盒测试报告
【测试报告】OKR 小程序端 项目名称版本号测试负责人测试完成日期联系方式OKR 小程序端4.0马铭胜2025-03-2515362558972 1、项目背景 1.1 OKR 用户端 在如今这个快节奏的时代中,个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而,如何设定…...
LibVLC —— 《基于Qt的LibVLC专业开发技术》视频教程
🔔 LibVLC/VLC 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 《基于Qt的LibVLC专业开发技术》课程视频,(CSDN课程主页、51CTO课程主页) 适合具有一些C++/Qt编程基础,想要进一步提高或涉足音视频行业的。本课程分7章节,共计35小节。…...
故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码
基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别 一、引言 1.1 机械故障诊断的背景和意义 在工业生产的宏大画卷中,机械设备的稳定运行…...
2025年最新自动化/控制保研夏令营预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)
笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题 东南大学苏州校区蒙纳士大学联培 东南大学苏州校区的项目算是一个比较小众的项目,是第一年在苏州校区,二三年到南京校区找导师(不提供住宿自…...
深度学习笔记19-YOLOv5-C3模块实现(Pytorch)
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、前期工作 1.导入数据并读取 import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvisio…...
SpringCloud-环境和工程搭建
前言 JDK用17,MySQL用8.0 微服务就是微小的服务 一个微服务只做一个事情 基本概念 打开官网 spring springcloud就是给我们提供工具,方便我们来弄微服务 springcloud是分布式微服务架构的一站式解决方案 Distributed/versioned configuration 分布…...
React 中shouldComponentUpdate生命周期方法的作用,如何利用它优化组件性能?
大白话React 中shouldComponentUpdate生命周期方法的作用,如何利用它优化组件性能? 在 React 里,shouldComponentUpdate 这个生命周期方法就像是一个“关卡守卫”,它能决定组件是否需要重新渲染。组件重新渲染是个挺费性能的事儿…...
AI写一个视频转图片帧工具(python)
现在的AI写python太方便了 说的话 我想用python实现一个能够将视频的所有帧数转化为图片的软件,可以自由配置转换的帧率或者全部,需要有界面,我需要增加一点功能,就是我需要读取出视频的分辨率,然后设置输出帧的分辨…...
React第三十一章(组件实战)
组件实战 这一章建议大家看完hooks css 原理 组件 这些章节之后再来看,这样会更好理解。 本章是额外新增的,因为之前的知识大家都掌握的差不多了,所以这一章节主要是让大家动手实践,巩固一下前面的知识。 那么你会学到什么&#…...
详细介绍WideCharToMultiByte()
书籍:《Visual C 2017从入门到精通》的2.7 字符串 环境:visual studio 2022 内容:几个字符串类型->(将单字节char*转换为宽字节wchar_t *)(将宽字节wchar_t* 转换为单字节char *) WideChar…...
Qt开发:QFileDialog的使用
文章目录 一、QFileDialog的介绍二、QFileDialog的常用静态方法三、完整示例 一、QFileDialog的介绍 QFileDialog 是 Qt 框架中提供的一个用于文件选择的标准对话框类,它允许用户在应用程序中选择文件或目录。它是跨平台的,在不同操作系统上会自动适配本…...
深度学习篇---回归分类任务的损失函数
文章目录 前言一、分类任务常用损失函数1. 交叉熵损失(Cross-Entropy Loss)数学形式使用场景特点训练状态分析损失下降损失震荡训练损失低但是验证损失高 2. Hinge Loss(合页损失)数学形式适用场景特点训练状态分析损失趋近于0损失…...
【MLP-BEV(10)】BEVPooling V1和BEVPooling V2的view_transformer,进行鱼眼图片实践
文章目录 先说说 BEVPoolv1步骤1:3D点生成步骤2 2D特征采样和BEV特征生成特点再谈谈BEVPoolv2步骤1:3D点生成步骤2: 计算索引关系步骤3: `voxel_pooling`计算鱼眼图片进行实践步骤1、3D点生成(基于Kannala-Brandt 进行调整)步骤2、2D特征采样和BEV特征生成(1) 体素化 (Voxe…...
上海SMT贴片技术解析与行业趋势
内容概要 随着长三角地区电子制造产业集群的快速发展,上海作为核心城市正引领着SMT贴片技术的革新浪潮。本文聚焦表面组装技术在高密度互连、微间距贴装等领域的突破性进展,通过解析焊膏印刷精度控制、元件定位算法优化等核心工艺,展现上海企…...
RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback
本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…...
Ubuntu 防火墙配置
Ubuntu 防火墙配置 一、UFW 基础操作二、核心规则配置三、高级功能四、特殊场景配置五、规则管理六、默认策略与安全建议七、故障排除 一、UFW 基础操作 检查 UFW 状态 sudo ufw status # 查看防火墙状态 sudo ufw status verbose # 显示详细规则 sudo ufw status numbered #…...
网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算
文章目录 OSPF域内路由计算:单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…...
【实战ES】实战 Elasticsearch:快速上手与深度实践-2.2.1 Bulk API的正确使用与错误处理
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 Elasticsearch Bulk API 深度实践:性能调优与容错设计1. Bulk API 核心机制解析1.1 批量写入原理剖析1.1.1 各阶段性能瓶颈 2. 高性能批量写入实践2.1 客户端最佳…...
Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)
文章目录 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)ONNX基本概念ONNX(Open Neural Network Exchange)ONNX Runtime ONNX Runtime 在Oracle数据库中的集成参考 Windows 环境图形化安装 Oracle 23ai Oracle 23ai Vector Search 系列之1 架构基础 Or…...
前端 - ts - - declare声明类型
在使用typeScript的项目中 需要声明属性类型 单独的局部属性 可以直接在当前文件中声明 全局属性需要在项目根目录下新建.d.ts文件 vite会自动识别.d.ts类型文件 在该文件中使用declare声明类型有三种写法 1、在某种类型的文件中声明 2、声明window上的属性类型 3、全局声明…...
Processor System Reset IP 核 v5.0(vivado)
这个IP的作用,我的理解是,比普通按键复位更加高效灵活,可以配置多个复位输出,可以配置复位周期。 1、输入信号: 重要的信号有时钟clk信号,一般连接到系统时钟;输入复位信号,一般是外…...
基于dify平台批量分析excel格式信息
如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析? 这里提供一个分步解决方案,结合 Dify平台功能 和 API调用优化 的思路,既保证效率又降低复杂度: 1. 优先检查 Dify 的「数据集」功能 Di…...
GMII 接口
文章目录 概述硬件拓扑GMII 接口站管理接口发送数据时序接收数据时序参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。 概述 GMII 是千兆网的MII接口,这个也有相应的 RGMII 接口&…...
学习不同电脑cpu分类及选购指南
关于电脑cpu 一、CPU型号的核心组成与命名规则Intel命名规则:AMD命名规则:5. 后缀:Intel常见后缀及其含义:AMD后缀一些常见的后缀及其含义:二、主流品牌CPU的分类与性能差异三、区分CPU型号的实用方法四、主流品牌CPU对比与选择建议五、选购CPU的注意事项关于不同主流CPU的…...