GPT和Bert的区别?
BERT:双向预训练语言模型+fine-tuning(微调)
GPT:自回归预训练语言模型+prompting(指示/提示)
BERT和GPT是近年来自然语言处理领域中非常重要的模型,它们代表表了现代NLP技术的发展。
应用上的差别:
- BERT主要用于自然语言理解,具体应用如下:
- 问答系统:BERT可以在问答系统中用来理解问题并生成答案。
- 句子相似度比较:BERT可以用来比较两个句子之间的相似程度。
- 文本分类:BERT可以用来对文本进行分类。
- 情感分析:BERT可以用来对文本进行情感分析。
- 命名实体识别:BERT可以用来识别文本中的命名实体。
- GPT在文本生成方面表现尤为优秀,其主要具体应用如下:
- 文本生成:GPT可以用来生成文本。
- 语言翻译:GPT可以用来生成翻译后的文本。
- 对话生成:GPT可以用来生成对话摘要生成:GPT可以用来生成文章摘要
预训练上的差别:
- 在Bert的预训练任务中,Bert主要使用"填空题"的方式来完成预训练。随机盖住一些输入的文字,被mask的部分是随机决定的,当我们输入一个句子时,其中的一些词会被随机mask。例如,如下的"科学","第一",就被mask掉了,然后预训练过程就是让模型来预测被mask掉的词(非自回归)
- GPT要做的任务是预测接下来会出现的token是什么。举例来说,假设训练数据里面,有一个句子是台湾大学,那GPT拿到这一笔训练数据的时候,选取BOS这个Token所对应的输出,作为Embedding的结果,用这个embedding去预测下一个应该出现的token是什么。(自回归)


-
为什么现在的大模型大多是decoder-only的架构?
当前主流大模型多采用decoder-only架构,是其在技术性能、训练推理效率、工程落地以及应用适配等多方面优势共同作用的结果,同时OpenAI等机构的成功也形成了技术路径的示范效应,具体原因如下:
- 预训练与应用目标高度对齐:decoder-only模型的预训练目标是预测下一个Token,这与文本生成、对话交互等主流应用场景的核心需求天然契合。海量非结构化文本数据都能直接用于模型预训练,无需复杂的数据格式转换,可高效利用数据价值。例如新闻创作、代码生成等场景,本质都是基于前文生成连贯后续内容,与模型训练目标完美匹配。
- 避免低秩问题,表征能力更强:该架构采用单向的因果注意力机制,其注意力矩阵呈下三角形式且含单位对角线,理论上能保持满秩状态。而encoder-only等架构的双向注意力机制容易出现低秩问题,会削弱模型对复杂语义的表征能力。这种特性让decoder-only模型在学习语言规律和知识模式时,能更全面地覆盖表征空间,精准捕捉文本间的深层依赖关系。
- 涌现能力突出,泛化性更强:decoder-only的预训练任务是预测下一个Token,仅能依据前文信息进行推断,任务难度高于其他架构。当模型参数达到数十亿甚至万亿级规模,且搭配海量训练数据时,这种高难度任务会“倒逼”模型学习到更通用的知识表征。并且该架构在大参数量下会展现出显著的涌现能力,像推理、规划等复杂能力会自动显现,能适配文本创作、逻辑问答等多种复杂任务,泛化性能远超其他架构。
- 上下文学习效果更优:在上下文学习中,decoder-only架构可让提示词信息直接作用于每一层参数,微调信号更强。相比之下,encoder-decoder架构是两段式结构,提示词的作用传递更间接。这使得decoder-only模型在零样本、少样本任务中表现亮眼,无需大量标注数据微调,仅通过少量示例提示就能完成任务。
- 架构精简降低计算成本:decoder-only架构省去了encoder模块和交叉注意力模块,结构比encoder-decoder更为简洁。在训练时只需针对单一解码器模块进行训练,前向传播仅需一次计算,大幅减少了计算资源消耗和训练时间。而encoder-decoder要同时训练编码器和解码器两个模块,参数冗余度更高,相同数据量下的训练成本显著增加。
- 缓存复用提升推理速度:该架构支持KV - Cache的持续复用,在多轮对话等场景中,可缓存前文的键值对信息,后续生成时无需重复计算,极大提升了推理效率。像PagedAttention等显存优化技术也优先适配该架构的因果路径,进一步降低了推理时的显存占用。而encoder - decoder架构因需处理编码器和解码器两套系统,难以实现高效的缓存复用。
- 多模态与多任务适配性强:对于多模态任务,decoder-only架构可将图像、音频等信息编码为特殊Token,与文本Token拼接后由同一解码器统一处理,实现“早融合”的高效方案。如GPT - 4o、Gemini等多模态模型,核心均采用decoder-only架构。同时它能将翻译、摘要等各类任务都转化为“预测下一个Token”的统一范式,无需针对不同任务重构模型结构。
-
ChatGPT的训练步骤有哪些?
ChatGPT的训练过程分为以下三个阶段:
第一阶段:无监督预训练模型
这一阶段的核心目标是让模型学习海量通用知识和语言规律,为后续训练打基础。随后模型以 “预测下一个 Token” 为目标展开无监督训练,形成具备基础语言能力和知识储备的基础模型。
训练一个文字接龙的模型是不需要人工标注成本的,只需要通过采集互联网上的大规模文本,可以构造一个超大规模的数据集用于无监督预训练。
第二阶段:训练监督策略模型
ChatGPT本身很难理解人类不同类型指令中蕴含的不同意图,也很难判断生成内容是否是否是高质量的结果。
为了让ChatGPT初步具备理解指令的意图,首先会在数据集中随机抽取问题,由人类标注人员,给出高质量答案,然后用这些人工标注好的数据来微调ChatGPT模型(获得SFT模型,Supervised Fine-
Tuning)。此时的SFT模型在遵循指令/对话方面已经优于GPT-3,但不一定符合人类偏好。
第三阶段:训练奖励模型(Reward Mode,RM)
这个阶段的主要是通过人工标注训练数据(约33K个数据),来训练回报模型。在数据集中随机抽取问题,使用第一阶段生成的模型,对于每个问题,生成多个不同的回答。人类标注者对这些结果综合考虑给出排名顺序。这一过程类似于教练或老师辅导。接下来,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。
第四阶段:采用PPO(Proximal Policy Optimization,近端策略优化)强化学习来优化策略。
PPO的核心思路在于将Policy Gradient中On-policy的训练过程转化为Off-policy,即将在线学习转化为离线学习,这个转化过程被称之为Importance Sampling。这一阶段利用第二阶段训练好的奖励模型,靠奖励打分来更新预训练模型参数。在数据集中随机抽取问题,使用PPO模型生成回答,并用上一阶段训练好的RM模型给出质量分数。把回报分数依次传递,由此产生策略格梯度,通过强化学习的方式以更新PPO模型参数。

-
说一下生成式语言模型的工作机理
生成式语言模型将N个token作为输入,并一次生成一个token作为输出。然后它将该输出token合并为下一次迭代的输入的一部分,产生一个新的token输出,依此类推。此模式不断重复,直到达到停止条件,表明它已完成生成您需要的所有文本。
生成式语言模型的输出是所有可能标记的概率分布。概率分布布向量中,每个值表示选择特定标记的概率。这个概率分布来自训练阶段。在训练期间,模型会接触大量文本,并且且在给定输入标记序列的情况下,调整其权重以预测良好的概率分布。
GPT生成模型是通过大部分互联网进行训练的,因此它们的预测反映了它们所看到的信息的混合。

解释LLM中token的概念
大模型中的"token"是指文本的最小处理单位。在大模型处理中,将文本划分为token是对文本进行分析和处理的基本步骤之一。通常情况下,一个token可以是一个单词、一个标点符号、一个数字,或者是其他更小的文本单元,如子词或字符。
以下是不同token切分类型的介绍:
- 单词级token:即token是按照单词进行划分的。一个句子中的每每个单词通常都会成为一个独立的token。例如,在句子"我是Sherlock"中,"我"是"、"Sherlock"分别是三个单词级token
- 标点符号级token:除了单词,标点符号通常也作为独立的token存在。这是因为标点符号在语义和语法上都具有重要的作用。例如,在句子"token好理解吗?"中,除了"token子理解吗"作为一个整体的token外,"?"也是一个独立的token。
- 子词级token:为了更好地处理复杂的语言情况,有时候将单词进一步划分为子词级的token。例如,单词"unhappiness"可以被划分为子词级token"un-"、"happiness"。更复杂一点的,现在大模型比较流行的子词级token还有字节对编码(BPE),这也是ChatGPT官方采用的token编码方法,它是通过合并出现频繁的子词对来实现的。
- 字符级token:在某些情况下,特别是在字符级别的处理任务中,文本会被划分为字符级token。这样做可以处理字符级别的特征和模式。例如,在句子"Hello!"中,"H"、"e"、"I"、"I"、"o"和"!"分别是六个字符级token.通过对文本做成一个一个的token,LLM模型能够更好地理解和处理语言,从而实现任务如文本生成、机器翻译、文本分类等。
现在主流的大模型都会自带一个tokenizer,也就是自动将输入文本解析成一个一个的token,然后做编码(就是查字典,转换成数字),作为大模型真正的"输入"。
那么在ChatGPT中,一个token到底是多长?下面是一些有用的经验法则,可以帮助理解token的实际长度:
- 对于英文文本,1个token大约是4个字符或0.75个单词。
- 通常来说,也就是1000个Token约等于750个英文单词。
- 对于中文,1000个Token通常等于400~500个汉字。
Token最大长度:LLM的记忆能力是指在进行文本处理和模型训练时,限制每个输入序列中token的最大数量。这个限制是为了控制模型的输入尺寸和计算资源的使用。由于计算资源和内存的限制,模型的输入序列长度通常需要进行限制。这就是"token最大长度"的概念,它规定了输入序列可以包含的最多token数量。超过这个限制的的部分可能需要被截断或丢弃,以适应模型的要求。token限制意味着输入的限制,以及上下文的限制。当上下文接近并超过token限制时,生成内容的质量就会下降。
-
LLM中的因果语言建模CLM与屏蔽语言建模MLM有什么区别?
CLM是一种自回归方法,其中模型经过训练以在给定先前标记的为情况下预测序列中的下一个标记。CLM用于GPT-2和GPT-3等模型,非常适合文本生成和摘要等等任务。然而,CLM模型具有单向上下文,这意味着它们在生成预测时仅考虑过去而不考虑未来上下文。
MLM是一种用于BERT等模型的训练方法,其中输入序列中的一些标记被屏蔽,模型学习根据周围的上下文来预测被屏蔽的标记。MLM具有双向上下文的优势,允许模型在进行预测时考虑过去和和未来的token。这种方法对于文本分类、情感分析和命名实体识别等任务特别有用。
-
如何减轻LLM中的"幻觉"现象
LLM幻觉是指LLM生成的内容与给定的输入或源内容不一致,或者完全没有意义;LLM的幻觉现象是由于训练数据集有限、过时或矛盾,导致LLM在理解和回答用户问题时,往往依赖于自己学习到的统计规律或模式,而不是基于事实或逻辑;
减轻LLM幻觉的方法主要有以下几种:
- 人工审核:这种方法是在LLM生成内容后,由人工进行审核和修改,以确保内容的正确性和合理性。这种方法的优点是可以有效地避免或纠正幻觉,提高内容质量;缺点是需要耗费大量的人力和时间成本,而且可能存在人为的错误或偏见。
- 数据过滤:这种方法是在LLM生成内容前,对输入或源内容进行过滤和清洗,以去除不相关、不准确或不一致的信息。这种方法的优点是可以减少幻觉的可能性,提高内容的相关性和一致性;缺点是需要耗费大量的计算资源和算法技巧,而且可能存在数据丢失或过度简化的风险。
- 知识图谱或RAG:这种方法是在LLM生成内容时,利用一个结构化的知识库(知识图谱)来提供事实信息和逻辑推理,以增强LLM的理解和回答能力。这种方法的优点是可以提高内容的有意义性和忠实性,提供更丰富和更深入的信息;缺点是需要构建和维护一个大规模且高质量的知识图谱,而且可能存在知识图谱不完备或不更新的问题。
-
什么是ChatGPT的"Prompt"?
Prompt可以被理解为一种启动机器学习模型的方式,它是一段文本或语句,用于指导机器学习模型生成特定类型、主题或格式的输出。
在自然语言处理领域中,Prompt通常由一个问题或任务描述组成,例如"给我写一篇有关人工智能的文章"、"翻译这个英文句子到法语"等等。在图像识别领域中,Prompt则可以是一个图片描述、标签或分类信息。
与传统的监督式训练不同,在使用Prompt进行训练时,并不需要对每个样本都进行标注,而是通过给定
的Prompt来引导模型生成相应的输出。这种方式可以大大减少数据标注的工作量,并且能够更好地控制模型生成结果的质量和多样性。
-
能否概述一下用于预训练ChatGPT的训练数据?
根据OpenAl披露的ChatGPT技术报告,可以对训练数据类型的总体本进行概述,训练数据包括:
- 书籍:涵盖各种主题和流派的大量书籍。书籍提供了结构化且且编写良好的内容,这使得它们对于语言建模很有价值。
- 网站:从网页、论坛、博客、新闻文章和其他在线资源中提取的文本。这些数据有助于模型理解非正式语言、时事和广泛的主题。
- 维基百科:维基百科文章是结构化和事实信息的宝贵来源,有助于模型获取常识。
- 新闻来源:来自新闻网站和文章的数据,使模型根据时事和新闻相关语言进行更新。
- Common Crawl:这是来自互联网的网页存储库,提供多种文本数据。
- 聊天日志:来自各种来源的聊天日志可用于将模型暴露给会话语言和对话模式。
- 科学论文:从科学期刊和出版物中提取的文本,帮助模型理解技术和科学语言。
- 百科全书:与维基百科类似,百科全书提供有关广泛主题的结构化信息。
- 用户生成的内容:来自社交媒体平台的文本、用户评论和其他形式的用户生成内容,使模型能够使用非正式和口语语言。
- 多语言数据:多种语言的文本,使模型能够理解和生成不同语言的文本。
-
ChatGPT如何处理多语言和多语言对话?
ChatGPT可以通过多种方式处理多种语言和多语言对话。
- 首先,该模型在多种语言的大量文本和代码数据集上进行训练。这使使得模型能够学习不同语言的模式和结构。
- 其次,ChatGPT有一个内置的语言检测工具,可以识别用户输入的语言。这使得模型能够以正确的语言生成响应。
- 第三,ChatGPT可以进行微调以适用于特定语言或方言。这是通过调整模型的参数以使其适应语言或方言的特定特征来完成的。
-
解释ChatGPT的"零样本"和"少样本"学习的概念
ChatGPT的“零样本”(Zero-Shot)和“少样本”(Few-Shot)学习是其上下文学习(In-Context Learning)能力的核心体现,本质是模型无需对特定任务进行参数微调,仅通过自然语言提示(Prompt)中的任务描述或少量示例,就能直接完成从未专门训练过的任务,核心区别在于是否提供任务相关示例及示例数量
零样本学习(Zero-Shot Learning):零样本学习指不提供任何任务相关示例,仅通过自然语言描述任务要求,模型就能理解并完成目标任务的能力。例如,向ChatGPT发送指令“将以下英文句子翻译成法语:‘I love artificial intelligence’”,无需给出英法互译的示例,模型就能直接输出正确译文;再如要求“总结这段文字的核心观点”“判断这句话的情感是积极还是消极”,仅通过文字指令,模型即可完成任务。其核心逻辑是,ChatGPT在预训练阶段通过海量文本学习到了语言规律、任务模式(如翻译、总结、分类的内在逻辑)和跨领域知识,当遇到新任务时,能通过理解自然语言指令中的关键信息(如“翻译”“总结”“情感判断”等任务关键词),调用预训练阶段习得的通用能力,直接映射到具体任务的输出,无需额外的示例引导。这种能力让模型具备极强的任务泛化性,能够快速适配各类未见过的场景,无需为每个任务单独准备标注数据进行微调。
少样本学习(Few-Shot Learning):少样本学习指提供少量任务相关示例(通常为1-5个,称为“演示样本”),模型通过学习示例中的任务逻辑(如输入输出映射关系、格式要求、判断标准等),进而完成同类任务的能力。例如,要让模型学会识别“是否为科技类新闻标题”,可先给出示例:“1. 示例输入:‘新型AI模型突破图像识别瓶颈’,输出:是;2. 示例输入:‘某地迎来2024年首场降雪’,输出:否”,之后输入新标题“量子计算技术实现里程碑式进展”,模型就能模仿示例逻辑输出“是”;再如代码生成任务中,给出1-2个“自然语言需求→代码”的示例,模型就能按相同风格生成对应代码。其底层逻辑是,少样本学习利用了模型的“上下文示范跟随能力”——预训练阶段形成的通用表征让模型能快速捕捉示例中的任务模式(如输入输出的对应关系、格式规范、语义判断标准),并将这种模式迁移到新的输入中,无需调整模型参数,仅通过上下文信息即可完成任务适配。相比零样本,少样本通过示例降低了任务描述的模糊性,尤其适用于逻辑复杂、格式特定或领域性较强的任务(如专业术语分类、特定格式的数据分析),能进一步提升输出的准确性。
-
在自然语言处理中,使用基于Transformer和基于RNN,LSTM的架构有什么优势?
Transformer是一种基于自注意力机制的深度学习模型,相较于RRNN和LSTM,它具有以下优势:
- 并行计算:RNN和LSTM需要顺序处理序列数据,因此很难进行并行计算。而Transformer的自注意力机制允许同时处理整个序列,从而可以充分利用GPU的并行计算能力,大大提高模型训练和推理的速度。
- 长距离依赖:在长序列中,RNN和LSTM容易遇到梯度消失或梯度爆炸的问题,从而难以捕捉长距离依赖。而Transformer的自注意力机制在计算序列中任意两个位置之间的关联时,无需考虑它们在序列中的距离,因此可以更好地捕捉长距离依赖。
- 可解释性:Transformer中的自注意力机制为每个位置的输出都分配了一个权重,这些权重表明了输入序列中不同位置对于输出的贡献。这使得Transformer更具可解释性,可以直观现地观察模型在处理序列数据时关注的区域。
- 模型容量:Transformer可以很容易地堆叠多层,从而增加模型容量。多层1ransformer结构可以让模型学习更复杂和抽象的表示,在许多自然语言处理、计算机视觉和强化学习任务中取得了显著的成功。
- 灵活性:Transformer架构具有很高的灵活性,可以很容易地进行修改和扩展。例如,BERT、GPT等知名模型都是基于Transformer架构的,它们在各种自然语言处理任务中取得了了前所未有的成绩。
尽管Transformer在许多方面具有优势,但它也有一些局限,如需要大量的计算资源和内存,以及可能产生较高的计算复杂度。在某些特定任务和资源受限的场景下,RINN和LSTM可能更适合。然而,总体而言,Transformer已经成为处理序列数据的主流模型。
-
为什么Transformer的自注意力机制在计算序列中任意两个位置之间的关联时,无需考虑它们在序列中的距离?
自注意力机制的核心设计:直接建模全局关联。序列中每个位置的表征(如 Token 的嵌入向量)都能作为 “查询(Q)”,与序列中所有位置的 “键(K)” 进行相似度计算,进而通过加权求和所有位置的 “值(V)” 得到该位置的最终表征。这个过程中,“任意两个位置” 的关联是直接建立的,而非通过中间位置传递,自注意力机制的本质是 “全局信息聚合”:每个位置的表征都融合了序列中所有位置的信息,且这种融合是通过直接的向量交互实现的,不存在 “必须经过中间位置传递” 的约束。
传统序列模型之所以受限于位置距离,本质是其计算范式依赖 “局部传递” 或 “局部感受野”,而自注意力的 “全局并行” 范式从根本上解决了这一问题:
- RNN 类模型(如 LSTM、GRU):采用 “串行递推” 机制,每个位置的表征仅依赖于前一个位置的输出(或前向 + 后向的局部信息)。要建模第
i个位置与第j个位置(j >> i)的依赖,信息必须从j逐步传递到j-1、j-2、…、i,过程中会出现信息衰减(如梯度消失),且距离越远,传递成本越高、信息损失越严重。例如,LSTM 通过门控机制缓解了梯度消失,但仍无法避免 “长距离信息传递效率低” 的问题 —— 距离超过 100 的位置依赖仍难以有效捕捉。 - CNN 类模型(如 TextCNN):采用 “局部感受野” 机制,通过卷积核滑动提取局部特征,要覆盖长距离依赖需堆叠多层卷积(每一层卷积的感受野仅扩大有限范围)。例如,1 层 3×3 卷积的感受野是 3 个连续位置,要覆盖长度为 100 的序列,需要堆叠数十层卷积,不仅计算复杂度激增,还会导致长距离关联的间接性(需通过多层卷积的特征传递),且关联强度会随层数增加而衰减。
需要注意的是,自注意力机制本身不自带位置信息(仅关注内容相似度),若仅依赖 QKV 交互,会忽略序列的顺序特征(如 “我吃苹果” 和 “苹果吃我” 的语义差异)。因此,Transformer 通过添加位置编码(Positional Encoding) 来补充位置信息 —— 将位置编码向量与输入嵌入向量相加,使 Q、K、V 中包含位置特征,确保模型在计算关联时,既考虑内容相似度,也兼顾位置顺序。但位置编码的作用是 “标记位置”,而非 “限制距离”—— 它不会削弱长距离位置的关联强度,只是让模型在全局关联中区分 “位置差异”,进一步提升长距离依赖的准确性(如区分 “第 1 个位置与第 100 个位置” 和 “第 2 个位置与第 100 个位置” 的不同关联场景)。
-
如何评估语言模型的性能?
在自然语言处理中,有两种评估语言模型性能的方式:内在评估和外在评估。
- 内在评估 捕捉模型在捕捉其应该捕捉的内容(如概率)方面的表美视。
- 外在评估(或任务导向评估)捕捉模型在特定任务中的实用性。
评估语言模型的性能通常涉及多个指标,以衡量其在不同任务上的表现。以下是一些常见的评估方法和指标:
- 困惑度(Perplexity):困惑度是语言模型性能的一个常用指标,它衡量模型预测给定序列的概率。困惑度越低,表示模型对数据的预测越好。困惑度计算公式是所有有单词概率的负对数的指数平均值的倒数。
- 准确率(Accuracy):对于分类任务,准确率是最直观的评估指标,即模型正确预测的样本数占总样本数的比例。
- BLEU分数:用于机器翻译和文本生成任务,BLEU (BilingualEvaluation Understudy)通过比较模型生成的序列与人工翻译的参考序列的n-gram重叠度来评估性能。
- ROUGE分数:主要用于评估文本摘要,它计算模型生成的摘要要与参考摘要的重叠度,提供了一种召回率(Recall)度量。
- METEOR:另一个用于机器翻译和文本生成的指标,METEOR结合了精确度、召回率、词干匹配和同义词匹配,以更全面地评估生成文本的质量。
- F1分数:对于二分类或多分类任务,F1分数结合了精确率和召回率,是它们的调和平均值,适用于不平衡数据集。
- 人类评估:有时候,机器评估的指标可能无法完全反映人类的判断,因此人工评估也是必要的。例如,人类评审员可以评估模型生成文本的连贯性、逻辑性和自然度。
- AUC-ROC曲线:对于分类任务,计算ROC曲线下的面积(AUIC),可以度量模型区分正负样本的能力。
- PPLM (Prompt Predictive Log Likelihood):用于评估模型型在特定提示下的预测性能。
- Zero-/Few-/Semi-Shot Learning:评估模型在没有或只有有少量示例数据的情况下进行新任务学习的能力
-
在ChatGPTAPI中,User、Asistant和System的角色有什么含义?
"system"角色有助于通过分配特定行为给聊天助手来创建对话的上下文或范围。例如,如果您希望与ChatGPT在与体育相关的话题范围内进行对话,可以将"system"角色分配给聊天助手,并设置内容为"体育专家"。然后ChatGPT会表现得像体育专家一样回答您的问题。"system"角色指示了ChatGPT在对话消息中应该具有哪种个性。
"user"角色代表实际的最终用户,他正在向ChatGPT发送提示。在以下示例中,第一个消息对象
和"system"角色并不是必需的。我们使用它来为对话分配上下文。"user"角色指示消息/提示来自最终用户或人类。
"assistant"角色代表响应最终用户提示的实体。这个角色表示消息是助手(聊天模型)的响
应。"assistant"角色用于在当前请求中设置模型的先前响应,以保持对话的连贯性。
-
解释为什么要微调(finetune)GPT模型?
微调是将预训练的GPT模型应用于特定下游任务的过程。以下是为为什么要对GPT模型进行微调的几个原因:
- 预训练与特定任务的泛化能力:GPT模型(以及其他预训练语言模型)在大规模无标注数据上进行训练,学习了语言的通用模式和结构。这提供了很好的语言理解基础,但模型通常在预训练任务(如语言建模)上过拟合,对于特定任务的细节可能不够精确。
- 适应特定领域:预训练模型可能没有针对特定领域的知识或语言习惯。通过微调,模型可以学习特定领域的语言风格、术语和模式,从而提高在该领域任务上的表现。
- 下游任务的多样性:NLP任务多种多样,包括问答、文本分类、情感分析、机器翻译等。预训练模型通常不够精确来处理这些任务的细节。微调允许模型针对每个任务进行优化化,以提高其在特定任务上的性能。
- 资源效率:尽管预训练模型庞大,微调通常只需要相对较小的额外数据和计算资源,即可实现显著的性能提升。这使得微调成为对大型预训练模型进行有效利用的经济方法。
- 知识更新:预训练模型基于的训练数据可能较旧,微调可以利用最新数据,使模型掌握更实时的信息,尤其是在需要处理新出现的概念或事件的任务中。
微调GPT模型时,通常会保留预训练模型的大部分权重,只只对特定的输出层(例如,分类层)进行更新,以适应新任务的损失函数和目标。这样,模型可以利用预训练时获得的广泛泛语言知识,同时对特定任务进行优化。
-
什么是对齐
在机器学习(尤其大模型领域)中,“对齐”(Alignment)是指让模型的行为、目标或输出与人类的意图、价值观、需求保持一致的过程——核心解决“模型能力强大但可能偏离人类预期”的问题,确保模型在发挥性能的同时,生成安全、有用、符合人类偏好的结果。未对齐的大模型可能存在严重风险。例如:一个未对齐的大语言模型可能被用于生成虚假新闻、网络诈骗话术、恶意代码;一个未对齐的机器人模型可能因误解指令而做出危险动作(如工业机器人误操作伤害人类)。
大模型的预训练阶段本质是“学习规律”——通过海量数据掌握语言逻辑、知识关联和任务模式(如“如何生成连贯文本”“如何解答问题”),但这仅解决了“模型能做什么”的问题;而对齐阶段则是“校准方向”——明确“模型应该做什么”“不该做什么”,避免模型因学习到数据中的噪音、偏见或恶意信息,生成有害、无用或不符合人类期待的内容。 例如:预训练后的模型可能“能生成暴力相关文本”(因数据中存在此类信息),但对齐后会“拒绝生成暴力内容”(符合人类安全需求);预训练模型可能“能解答问题但语气生硬、逻辑跳跃”,对齐后会“用流畅、有条理的方式回应”(符合人类对高质量回答的偏好)。简言之,对齐的本质是“能力与意图的匹配”,是大模型从“技术工具”走向“实用产品”的关键步骤。
对齐的主要分类:按目标场景划分 根据对齐的目标和应用场景,可分为三大核心类型,覆盖从“安全”到“体验”的全维度需求:
- 价值对齐(Value Alignment):最基础的对齐目标,确保模型遵循人类的核心价值观和伦理准则,避免产生有害、偏见或违背公序良俗的输出。例如:拒绝生成仇恨言论、暴力指导、歧视性内容;尊重隐私,不泄露敏感信息;遵循法律规范,不提供违法建议(如制毒、黑客教程)。这是对齐的“底线要求”,核心是“不伤害人类”。
- 意图对齐(Intent Alignment):让模型精准理解并执行人类的指令意图,避免“答非所问”或“过度解读”。例如:用户要求“总结这段文字的核心观点”,模型应聚焦“总结”任务而非扩展内容;用户问“如何提升睡眠质量”,模型应提供科学建议而非无关话题(如旅游攻略)。意图对齐的核心是“听懂并做好”,解决“模型能力用错地方”的问题。
- 偏好对齐(Preference Alignment):更高阶的对齐目标,让模型的输出符合人类对“高质量”的主观偏好,提升使用体验。人类对回答的偏好通常包括:准确性(信息无误)、逻辑性(条理清晰)、简洁性(不冗余)、语气友好(符合场景氛围,如学术咨询严谨、日常对话亲切)。例如:同样解答数学题,人类更偏好“步骤清晰、公式明确”的回答,而非模糊的结论;同样生成文案,人类更偏好“流畅、有感染力”的表达。偏好对齐的核心是“做得更好”,让模型输出“更合心意”。
对齐的实现方法:
- 基础数据对齐:从源头筛选训练数据,剔除低质、有害、偏见性内容,注入符合人类价值观的高质量数据(如权威百科、正规文档、人工标注的正向示例)。例如:预训练阶段过滤仇恨言论、虚假信息;监督微调(SFT)阶段使用人工撰写的“指令-优质回答”数据,让模型学习“正确的响应方式”。这是对齐的“数据基础”,避免模型从源头学习到错误的模式。
- 算法对齐(核心:RLHF):通过“人类反馈→模型优化”的闭环,让模型逐步逼近人类偏好。具体流程为:① 用监督微调模型生成多个回答,由人类标注员对回答按偏好排序(如A优于B,B优于C);② 用排序数据训练“奖励模型(RM)”,让模型学会自动为回答打分(模拟人类偏好);③ 用强化学习(如PPO算法)优化模型,以奖励模型的打分为反馈信号,调整参数使模型生成更高分的回答。RLHF的核心是“用人类反馈引导模型迭代”,是当前偏好对齐的最有效方法。
- 辅助技术对齐:通过规则约束、提示工程、模型微调等补充手段,强化对齐效果。例如:① 加入“安全护栏”(Safety Guardrails),用关键词过滤、敏感话题识别等规则,直接拦截有害输出;② 指令微调(Instruction Tuning),用海量“指令-响应”数据微调模型,提升意图理解能力;③ 多轮对齐迭代,通过用户反馈持续优化奖励模型和策略模型,让对齐效果随使用场景动态调整。
-
在ChatGPT模型中,嵌入(embeddings)是如何使用的?
ChatGPT是一种自然语言处理模型,可以将文本数据转换为嵌入向量,从而实现对文本数据的分类、聚类、搜索和推荐等功能。嵌入向量是一种连续的向量表示方式,可以捕捉到输入数据的潜在特征和相关性。ChatGPT的嵌入技术在训练过程和API应用中发挥着重要的作用。
- 在分类任务中,使用嵌入将输入文本转换为向量表示,并通过与预定义类别的嵌入向量对比,实现对文本的分类。
- 在聚类任务中,使用嵌入将输入文本转换为向量表示,并通过计算向量之间的相似度,实现对文本的聚类。
- 在搜索任务中,使用嵌入将查询文本转换为向量表示,并与嵌入的文本进行匹配,实现准确的搜索结果。
- 在推荐任务中,使用嵌入将用户的历史行为转换为向量表示,并通过计算向量之间的相似度,推荐相关的文本。
-
如何缓解 LLM 复读机问题
LLM中的复读机问题,指的是大型语言模型在生成文本时,出现重复、冗长或循环的内容。缓解复读机问题有以下方法:
- 多样性训练数据:在训练阶段,尽量使用多样性的语料库来训练模型型,避免数据偏差和重复文本的问题。
- 引入噪声:在生成文本时,可以引入一些随机性或噪声,例如通过采样不同的词或短语,或者引入随机的变换操作,以增加生成文本的多样性。
- 温度参数调整:温度参数是用来控制生成文本的多样性的一个参数。通过调整温度参数的值,可以控制生成文本的独创性和多样性,从而减少复读机问题的出现。
- 后处理和过滤:对生成的文本进行后处理和过滤,去除重复的句子或短语,以提高生成文本的质量和多样性。
- Beam搜索调整:在生成文本时,可以调整Beam搜索算法的参数。Beam搜索是一种常用的生成策略,它在生成过程中维护了一个候选序列的集合。通过调整Beam大小和搜索宽度,可以控制生成文本的多样性和创造性。
- 人工干预和控制:对于关键任务或敏感场景,可以引入人工预和控制机制,对生成的文本进行审查和筛选,确保生成结果的准确性和多样性。
-
prefixLM和causal LM的区别是什么?
Prefix LM (Prefix Language Model) 和Causal LM (Causal LanguageModel)是两种不同类型的预训练语言模型。虽然它们都属于自回归模型,但有关键的区别:
训练目标:
- Prefix LM:这类模型是基于前缀的自回归模型,其训练时会看到完整的输入序列,但其目标是预测序列的后缀部分。这意味着模型可以同时使用输入序列的全部上下下文信息来进行预测。例如,在训练时,模型可能会被训练来预测输入序列中从中间位置到序列末尾的部分
- Causal LM (也称为Autoregressive LM):这类模型只考虑序列的过去信息来预测未来,即它只能看到输入序列的前缀部分。在训练时,模型被遮蔽了当前词之后的的序列,例如,使用掩码语言模型任务,模型需要预测序列中被遮蔽的部分。
应用:
- Prefix LM:由于其可以利用完整的输入上下文,PrefixLM在某些任务中可能具有优势,例如文本生成和文本摘要,因为它可以更好地理解整个文本的语义和结构。
- Causal LM:Causal LM主要用于文本生成,因为它能够生成连贯的文本,而且由于其不可见未来的特性,生成的文本更少地受到模型自身预测的影响,降低了重复的风险。
使用方式:
- Prefix LM:在推理时,Prefix LM通常需要整个输入序列来生成输出,这在某些资源有限的环境(如实时对话系统)中可能不切实际。
- Causal LM:Causal LM在推理时,只需按顺序逐词生成,适合需要实时生成输出的场景。
数据效率:
- Prefix LM:由于使用了完整的输入,训练PrefixLM可能需要更大的计算资源和更多的数据。
- Causal LM:Causal LM通常需要较少的计算资源,因为它仅处理输入序列的前缀部分。
PrefixLM和Causal LM在设计和应用上有其独特性,适用于不司的场景和任务。Causal LM更常用于文本生成任务,而Prefix LM可能在需要全局上下文的场景中]更具优势。
-
什么是大模型的灾难性遗忘?
大模型的"灾难性遗忘"是指当模型在新任务或数据集上进行训练时,可能会"忘记"或显著降低其在之前学习任务上的性能。这是一个关键问题,特别是在连续学习或增量学习中,即模型需要不断学习新的任务,同时保持对旧任务的性能。
在大型语言模型(如GPT或T5)中,灾难性遗忘表现为模型在微调以适应新任务时,可能失去对之前学习到的任务的掌握。例如,如果一个模型最初在任务A上进行了训练,然后微调以执行任务B,它可能会"忘记"如何执行任务A。这可能是由于模型的权重调整过度集中在E新任务上,导致旧任务的特征表示被削弱.
为了解决这个问题,研究人员提出了一些策略,如:
- 经验回放缓冲区:保留一些旧任务的样本,在训练新任务时消混合使用,以防止模型遗忘旧知识。
- 动态权重分配:为每个任务分配一组特定的权重,避免在不同任务间共享权重导致遗忘。
- 权重正则化:如Elastic Weight Consolidation (EWC)和Synaptic Intelligence,通过正则化项来保护对旧任务重要的权重。
- 多任务学习:同时处理多个任务,使得模型在学习新任务时保持对旧任务的性能。
- 在线学习:不断更新模型以适应新的数据流,同时保持对旧数据的泛化能力
通过这些方法,可以减轻大模型在学习新任务时的灾难性遗忘现象,实现更有效和稳健的持续学习。
-
大模型常用的激活函数有哪些
大模型,特别是最近的大型语言模型(LLMs),常用的激活函数之一是SwiGLU。SWIGLU是一种结合了Swish激活函数和Gated Linear Units (GLU)特性的激活函数。它在已诸如Google的PaLM、Meta的LLaMA等模型中得到了广泛应用,并且在许多评测中显示出了相比传统Transformer模型中常用的ReLU函数更好的性能。
除了SwiGLU之外,还有一些其他常见的激活函数,虽然在最新或最最大的模型中可能不如SwiGLU那样突出,但它们在深度学习和自然语言处理领域仍然非常重要,包括:
- ReLU:这是历史上最常用的激活函数之一,它将所有负值设为0,保持正值不变,引入了非线性并加速了神经网络的训练。
- Swish:由Google提出,是SwiGLU的一部分,形式为f(x)=x-siigmoid(x),目的是改善ReLU的一些局限性,比如"死亡ReLU"问题,并提供平滑的非线性变换。
- GELU:类似于Swish,GELU也使用了一个平滑的曲线来非线性地转换输入,它基于高斯分布的累积分布函数,常用于Transformer模型中。
- Sigmoid:这两个是较早使用的激活函数,尽管由于其梯度消失问题在深层网络中较少作为隐藏层的激活函数,但在某些特定情境下仍会被使用,如Sigmoid常用于二分分类问题的输出层
- Softmax:虽然严格意义上不是一个隐藏层的激活函数,它在多分类问题的输出层被广泛应用,将模型的输出转化为概率分布。
-
LLaMA的tokenizer sentence-piece是怎么处理数字的?
LLaMA的tokenizer采用了SentencePiece算法来进行文本的分词处理。SentencePiece是一种无语言依赖的分词工具,它将文本视为一个无空格的字符串,通过学习子词单元买来实现高效的分词。
在处理数字时,SentencePiece会将数字视为一般的字符序列来进行处理。这样数字不会被特别对待,而是和其他字符一样,被拆分成更小的子词或字符单元。例如,长数字串可能会被拆分成多个较小的片段或单个数字字符,这样可以确保数字在模型输入中得到有效表示。
SentencePiece在预处理阶段,会基于大量的文本数据学习一个词汇表,这个词汇表包含了最常见的子词单元,包括字母、数字和标点符号等。然后,在实际使用时,输入文本会根据这个词汇表进行分割,生成相应的子词序列。对于数字,这意味着它们会被拆分成可以在词洞汇表中找到的最小单元,这样可以确保模型能够识别和处理任何形式的数字输入。
总结一下,LLaMA的tokenizer利用SentencePiece算法,通过将数字作为普通字符处理,确保模型能够有效地处理和理解数字输入。这个方法简单有效,而且在处理多利中语言和字符集时具有很强的通用性和适应性。
-
llm和传统的nlp模型的区别在哪?
LLM(大语言模型)和传统的NLP模型之间有几个显著的区别,主要体现在模型规模、训练方法、任务处理能力和应用场景等方面。
- 首先,LLM的规模远远超过传统的NLP模型。LLM通常包含数十亿到数千亿个参数,这使得它们能够捕捉更复杂的语言模式和知识。相比之下,传统的NLP模型参数量相对较少,因此在处理复杂任务时可能会受到限制。
- 其次,在训练方法上,LLM通常采用自监督学习,利用大量未标注的文本数据进行预训练。这种方式允许模型从海量数据中学习语言结构和知识,然后通过微调来适应特定任务。传统的NLP模型则通常依赖于有监督学习,需要大量标注数据进行训练,这在许多应用场景中并不容!易获得。
- 在任务处理能力方面,LLM具有更强的通用性和适应性。由于预训练过程涉及广泛的语言知识,LLM能够在少量或没有特定任务数据的情况下表现出色。而传统的NLP模型通常需要为每个特定任务单独训练,缺乏通用性。
- 应用场景方面,LLM可以处理多种复杂任务,包括自然语言理解、生成、翻译、问答等,且能够在不同任务之间迁移学习。这使得LLM在实际应用中具有更广泛的适用性和灵活性。传统的NLP模型则通常针对特定任务进行优化,应用范围相对狭窄。
-
大模型训练的损失是什么?
大模型的训练过程中, 损失函数(Loss Function)是评估模型在特定任务上表现的一个关键指标。 损失函数的主要作用是衡量模型预测值与真实值之间的差距, 从而指导模型参数的更新。不同的任务使用不同的损失函数, 常见的有以下几种:
- 均方误差(MSE),主要用于回归问题,计算预测值与真实值之差的平方的平均值,如下:
- 交叉熵损失(Cross-Entropy Loss),主要用于分类问题,尤其多类别分类,使用真实类别的对数概率的负值的平均。
- 对于二分类问题:
- 对于多分类问题:
- 对于二分类问题:
- 平滑L1损失(Smooth L1 Loss),在一些回归任务中使用,比如目标检测。它结合了L1损失和L2损失的优点,对误差小的部分使用L2损失,对误差大的部分使用L1损失。
- KL散度(KL Divergence),衡量两个概率分布之间的差异,比如在生成模型中,通过计算一个概率分布相对于另一个概率分布的相对熵。
- 自定义损失函数,在一些特定任务中,标准的损失函数可能无法满足需求,因此需要根据实际情况设计自定义的损失函数。

2007

被折叠的 条评论
为什么被折叠?



