目录

大模型基本原理

如何得到 ChatGPT 模型?

首先通过预训练(也称为自督导式学习),通过大量的资料进行模型训练,这个时候产生的模型也称为基石模型。这个时候是无监督学习。

随后经过督导式学习,让人类去标注输入、输出对,通过有标签的输入与答案的数据,对这个模型进行微调(finetune),这里人类对模型的答案做出引导和调整,是监督学习。

再经历增强化学习(Reinforcement Learning,RLHF),此时人类只需要对模型的答案进行评价,或使用一个老师模型对他进行评价

上面提到了大模型GPT的诞生过程,下面结合大模型的常用架构,来加深理解:

架构图 Transformer

  1. 文字转换为 Token

    常见有 BPE 算法,将句子进行分词,词表中有对应单次的 Token ID,随后将这些词 Embedding,得到词向量,这些词意思相近则向量维度上也更相似。

  2. 理解上下文 Attention

    注意力机制:通过计算一句话中,分割出来的每个 token 之间的相关性,来理解每个 token 的语义。

    多头注意力机制(Multi-head Attention):计算不同这个 token 从不同角度的上下文理解,如"狗"可以从忠诚、宠物、形容词等角度去理解。

    Multi-head Attention,这一层在生成句子时,由于当前位置的后一个字是未知的,因此避免计算后一个字的相似度

  3. 整合思考 Feed Forward

    它和 Attention 结合在一起,可以称做 Transformer Block 模块,模型中可以有多个 Block 叠加,反复思考。(Add & Nor 可以避免梯度消失、梯度爆炸)

  4. 输出层 Output Layer

    线性变化(Liner) + Softmax,通过得到的向量,与一系列相近的 Token 比较,通过特定的挑选规则,推测概率最大的字,即是最后的输出。

上述是比较通用的 Encoder-Decoder 架构,代表模型为 ChatGLM、T5,能够理解输入并生成相应输出,擅长复杂任务,机器翻译等;

存在一些变体架构,如 Encoder-Only 架构,专注于理解和编码信息,擅长语义理解类任务并将文本转语义向量,代表模型有:BERT;

还有 Decoder-Only 架构,专注从已有的信息扩展出新内容,擅长生成类任务,如GPT系列

GPT (Generative Pre-trained Transformer),这类模型简单来说可以认为他在做文字接龙

InstructGPT,于 2022 年提出的概念,即会训练出一个老师模型/奖励模型,他能根据GPT模型的输出结果的好坏,来进行打分,从而协助人类对GPT模型做微调。实际上也是强化学习的一种,非常花费资源。

在 2025年,大模型在企业中问答中面临了不少挑战:

  • 幻觉:大模型生成的内容看似合理但不符合事实或现实的现象,可以将该现象分为两类,事实性幻觉忠实性幻觉
  • 安全合规问题:容易泄露机密信息。
  • 领域建模成本高:高质量数据需要专业人才。
  • 知识更新节奏慢:模型的训练时间过长,然而知识的更新诉求非常快,因此模型的消息有滞后性。
  • 私域知识不足:大模型通常使用公开领域的知识训练,而企业内部知识是闭合私域的知识,因此难以满足企业垂域的专业性需求。

提示工程(Prompt Engineering):

检索增强生成(RAG)

模型微调

重新训练

RAG(Retrieval-Augmented Generation)在不更改模型参数的基础上通过“知识外挂”的手段来提升大模型应用的准确性,以此来弥补大模型自身存在幻觉、时差性差、缺乏专业领域知识等的缺陷。

我们可以将RAG理解为开卷考试,如通过检索网页知识库,去获取这些“外挂”的参考内容,随后模型利用这些获取的片段信息生成答案。本质上,RAG帮助模型查找外部信息来改进生成结果

RAG 在进行检索时,会**采用混合检索:**结合关键词检索和向量检索。

在基础模型上,使用新的、规模较小的数据集对模型进行进一步训练的过程,以提高模型在特定任务或数据集上的性能表现。

上述两种方式的应该如何选择呢?我们可以通过以下 4 种关键特性的应用上做出选择:

特性 微调 RAG
动态/静态数据 模型存储静态信息,适合知识更新周期长的场景 实时更新检索,适合动态数据,业务知识更新周期短的场景
模型定制化 能定制行为,风格以及领域知识 专注于信息检索和整合,定制化程度低
可解释性 解释性差,无法溯源 答案可追溯,解释性高
幻觉 幻觉减少,但效果有限 基于事实数据,幻觉减少

可以将这上述两种方式组合起来使用,例如应用于公司内部,个性化代码规范的代码生成;客户支持机器人等

提示词(Prompt),是与自然语言模型交互时,提供给模型输入时,组织的语言。

Prompt 工程通过设计提示词,以确保 LLM 最佳输出的过程称为“提示工程”。同一个模型下对于同一个场景,使用不同的prompt也会获得不同的结果;它能在不更新模型参数的前提下,通过设计和优化prompt的方式,引导大模型生成我们目标结果的方法。

有效设计Prompt,包括选择正确的单词、短语、符号和格式

好的提示词,可以从下面 4 个方面提高它的饱满度,即:立角色述问题定目标补要求。如:

你现在是专业的软件需求分析师与应用架构师,后面的问题,请你以专业人士的视角回答,我要做【员工打卡的考勤应用】请帮忙生成一份需求文档,与样例代码,做个Demo,代码用Python输出

而如:“我想实现一个员工打卡的考勤系统,帮我做一个”的提示词,效果会差许多。

  1. 立角色:通过扮演不同的角色,让模型以角色去理解上下文信息和意图,能帮助模型通过该角色的角度去思考问题给出答案
  2. 述问题:提出要解决的具体问题、要完成的任务或背景信息,让模型更好的了解用户所处的上下文环境。
  3. 定目标:明确达到的目标与预期效果,让大模型理解意图和目标,让模型知道它能为你做什么。
  4. 补要求:对需求做补充说明,如,语言需求、字数、样式需求等。

其中,补要求也有不少技巧,例如,使用成对的分隔符将重要内容包裹起来,帮助模型做语义分割;或提供模型少量的,相似的示例给它作为参考;指定预设条件,要求模型检查条件,不满足就停止执行后续的完整流程等。

通常一次的 Prompt 难以得到最佳效果,需要迭代与优化,可以按照三个步骤迭代:给出具体、明确的提示词 —— 分析提示词不符合预期的原因 —— 完善想法并优化提示词

① 先检查:检查Prompt中是否满足四要素:立角色述问题定目标补要求

② 打基础:指定能**明确表达主题(前三要素)**的提示词,再由简至繁,逐步增加细节和说明

③ 搭结构:适当换行,将内容直观、有结构的呈现

④ 加说明:对提示词细节补充说明,将想要的逻辑梳理表达出来,如,输出XX格式等

⑤ 给提示:给予模型少量的示例,模型能从示例中学习到提示词的意图

⑥ 做预设:做好各种场景的预设,能有效防止模型说胡话

OpenAI