【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 Ⅱ、相对位置…...
在 Ubuntu 上安装 Docker 的完整指南
1. 卸载旧版本(如有) 在安装新版本前,建议先卸载旧版本: sudo apt remove docker docker-engine docker.io containerd runc 2. 安装依赖包 更新软件包索引并安装必要的依赖: sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release 3. 添加 Do…...
可以把后端的api理解为一个目录地址,但并不准确
将后端的 API 理解为一个“目录地址”是可以的,但并不完全准确。让我们更详细地解释一下。 目录 1、生动形象了解api 2、后端 API 的作用 3、可以将 API 理解为“目录地址”的原因 (1)URL 路径 (2)层次结构 4、…...
硬件基础--16_公式梳理
公式梳理 欧姆定律: IU/R 1.欧姆定律有局限性,仅适用于纯电阻电路(或者说纯电阻元器件,纯电阻设备) 2.纯电阻电路:消耗的电能仅转化为热能,没有其他形式的能量转换。 功率计算:PUI 1.导出公式:PU2 /R 2.导出公式:PI2 R 焦耳定律:QI2 Rt 1.导…...
《Python实战进阶》No34:卷积神经网络(CNN)图像分类实战
第34集:卷积神经网络(CNN)图像分类实战 2025年3月28日更新 增加了 CNN和AI大模型关系的说明。 2025年3月29日更新了代码,优化损失系数曲线可视化。 详细环境配置依赖和可一次性复制的完整代码见文末。 摘要 最近大模型推陈出新迭…...
嵌入式Linux网络编程:UNIX Domain Socket进程间通信(IPC)
嵌入式Linux网络编程:UNIX Domain Socket进程间通信(IPC) 【本文代码已在Linux平台验证通过】 一、UNIX Domain Socket核心优势 1.1 本地IPC方案对比 特性UNIX Domain Socket管道(Pipe)消息队列(Message Queue)共享内存(Shared Memory)跨进…...
【qt】 布局器
参考博客:https://blog.csdn.net/Fdog_/article/details/107522283 目录 布局管理器概念常见的布局管理器及特点🔵QHBoxLayout水平布局🔵QVBoxLayout垂直布局 🔵QGridLayout网格布局 🔵QFormLayout表单布局 QT 高级布…...
Hosts文件与DNS的关系:原理、应用场景与安全风险
目录 引言 Hosts文件与DNS的基本概念 2.1 什么是Hosts文件? 2.2 什么是DNS? Hosts文件与DNS的关系 Hosts文件的应用场景 4.1 本地开发与测试 4.2 屏蔽广告与恶意网站 4.3 绕过DNS污染或劫持 Hosts文件的优势 5.1 解析速度快 5.2 不受DNS缓存影…...
VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)
漏洞概述 博通公司(Broadcom)近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞,该漏洞编号为 CVE-2025-22230(CVSS 评分为 9.8)。VMware Windows Tools 是一套实用程序套件,可提升运行在 VM…...
pnpm 依赖升级终极指南:从语义化版本控制到 Monorepo 全局更新的企业级实践
要使用 pnpm 更新所有依赖包,可以通过以下命令实现: 1. 更新所有依赖到符合语义化版本的范围 pnpm update该命令会根据 package.json 中定义的版本范围(如 ^1.0.0 或 ~2.3.4)更新依赖包到最新兼容版本,但不会突破版本…...
Sentinel[超详细讲解]-2
异常处理 默认情况下,Sentinel 会抛出 BlockException 异常,如果希望自定义异常,则可以使用 SentinelResource 注解的 blockHandler 属性。 1、自定义异常处理 BlockExceptionHandler 自定义异常处理类实现 BlockExceptionHandler 接口&#…...
【问题解决】Linux安装conda修改~/.bashrc配置文件后,root 用户下显示 -bash-4.2#
问题描述 在Linux安装conda下的python环境时候,修改了~/.bashrc文件,修改完成后,再次进入服务器后,登录时候显示的不是正常的[rootlocalhost ~]#,而是-bash-4.2# 原因分析: 网上原因有:/root下…...
优化webpack打包体积思路
Webpack 打包过大的问题通常会导致页面加载变慢,影响用户体验。可以从代码优化、依赖优化、构建优化等多个角度入手来减少打包体积: 代码优化 (1)按需加载(代码拆分) ① 路由懒加载 如果你的项目使用 Vu…...
RabbitMQ 技术详解:异步消息通信的核心原理与实践
这里写目录标题 RabbitMQ 技术详解:异步消息通信的核心原理与实践一、RabbitMQ 本质剖析核心架构组件 二、核心功能与应用场景主要作用典型应用场景 三、工作流程深度解析消息传递流程关键协议机制 四、Java 实现示例1. 依赖配置(Maven)2. 消…...
CF每日5题Day4(1400)
好困,感觉很累,今天想赶紧写完题早睡。睡眠不足感觉做题都慢了。 1- 1761C 构造 void solve(){int n;cin>>n;vector<vector<int>>a(n1);forr(i,1,n){//保证每个集合不同a[i].push_back(i);}forr(i,1,n){string s;cin>>s;forr(…...
LLM架构解析:NLP基础(第一部分)—— 模型、核心技术与发展历程全解析
本专栏深入探究从循环神经网络(RNN)到Transformer等自然语言处理(NLP)模型的架构,以及基于这些模型构建的应用程序。 本系列文章内容: NLP自然语言处理基础(本文)词嵌入࿰…...
k近邻算法K-Nearest Neighbors(KNN)
算法核心 KNN算法的核心思想是“近朱者赤,近墨者黑”。对于一个待分类或预测的样本点,它会查找训练集中与其距离最近的K个样本点(即“最近邻”)。然后根据这K个最近邻的标签信息来对当前样本进行分类或回归。 在分类任务中&#…...
Dubbo(21)如何配置Dubbo的注册中心?
在分布式系统中,注册中心是一个关键组件,用于服务的注册和发现。Dubbo 支持多种注册中心,包括 ZooKeeper、Nacos、Consul、Etcd 等。下面详细介绍如何配置 Dubbo 的注册中心,以 ZooKeeper 为例。 配置步骤 引入依赖:…...
【Android15 ShellTransitions】(九)结束动画+Android原生ANR问题分析
finishTransition这部分的内容不多,并且我个人的实际工作中很少接触这块,因此我之前都觉得没有必要专门开一篇去分析最后留下的这一丁点儿的动画流程。但是最近碰到了一个google原生ANR问题,正好是和这块相关的,也让我意识到了fin…...
如何让DeepSeek-R1在内网稳定运行并实现随时随地远程在线调用
前言:最近,国产AI圈里的新星——Deepseek,简直是火到不行。但是,你是不是已经对那些千篇一律的手机APP和网页版体验感到腻味了?别急,今天就带你解锁一个超炫的操作:在你的Windows电脑上本地部署…...
STM32通用定时器结构框图
STM32单片机快速入门 通用定时器框图 TIM9和TIM12 通用定时器框图 TIM9和TIM12 (二) 通用定时器框图...
How to install vmware workstation pro on Linux mint 22
概述 VMware 是一家专注于虚拟化技术和云计算解决方案的全球领先软件公司,成立于1998年,总部位于美国加州。它的核心技术是通过“虚拟化”将一台物理计算机的硬件资源(如CPU、内存、存储等)分割成多个独立的虚拟环境(…...
深度学习 Deep Learning 第11章 实用方法论
深度学习 Deep Learning 第11章 实用方法论 章节概述 本章深入探讨了机器学习在实际应用中的方法论,强调了从确定目标到逐步优化的系统性过程。在机器学习项目中,明确的目标和性能指标是指导整个开发过程的关键。通过建立初始的端到端系统,…...
【常用的中间件】
中间件(Middleware)是位于客户端和服务器之间的软件层,用于处理客户端请求和服务器响应之间的各种任务。中间件可以提供多种功能,如负载均衡、消息队列、缓存、身份验证等。以下是常用的中间件及其作用: 1. 消息队列中…...
如何排查C++程序的CPU占用过高的问题
文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…...
个人学习编程(3-29) leetcode刷题
最后一个单词的长度: 思路:跳过末尾的空格,可以从后向前遍历 然后再利用 while(i>0 && s[i] ! ) 可以得到字符串的长度, int lengthOfLastWord(char* s) {int length 0;int i strlen(s) - 1; //从字符串末尾开始//…...
Linux云计算SRE-第二十一周
构建单节点prometheus,部署node exporter和mongo exporter。构建kibana大盘。包含主机PU使用率,主机MEM使用率,主机网络包速度。mongo db大盘,包含节点在线状态,读操作延迟等 一、实验环境准备 - 节点信息࿱…...
无人机,云台参数设置,PWM输出控制云台俯仰
目录 1、云台与飞控的连接 2、PX4飞控控制云台,QGC地面站的设置 3、遥控器映射通道设置 4、其他设置 4.1、COM_PREARM_MODE,预解锁模式 4.2、RC9_DZ ,遥控器通道死区设置 1、云台与飞控的连接 首先确定一下,设置飞控第几路…...
EtherCAT转ProfiNet协议转换网关构建西门子PLC与海克斯康机器人的冗余通信链路
一、案例背景 某电子制造企业的5G通信模块组装线,采用西门子S7-1200PLC(ProfiNet主站)进行产线调度,而精密组装工序由3台海克斯康工业机器人(EtherCAT从站)完成。由于协议差异,机器人动作与PLC…...
Android R adb remount 调用流程
目的:调查adb remount 与adb shell进去后执行remount的差异 调试方法:添加log编译adbd,替换system\apex\com.android.adbd\bin\adbd 一、调查adb remount实现 关键代码:system\core\adb\daemon\services.cpp unique_fd daemon_service_to…...
