大厂面试题备份20250130
20250130
RAG怎么做的,召回效果
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种将信息检索与生成式模型(如 GPT)相结合的技术,旨在提升生成模型的答案质量,特别是在需要特定知识或信息的场景中。
RAG的工作原理
- 检索阶段(Retrieval):
- 通过查询引擎(通常是基于向量的检索,如使用BM25或基于BERT的嵌入)从知识库、文档或数据库中检索相关的信息。
- 检索出的信息通常是文档片段、段落或其他形式的文本内容。
- 生成阶段(Generation):
- 将检索到的相关信息与用户输入的查询或问题一起提供给生成模型(如GPT)。
- 生成模型会基于提供的知识和上下文来生成更加详细、准确的回答。
RAG的优点
- 提高答案的准确性:通过将生成模型与外部知识结合,可以有效减少生成模型的错误信息,避免“凭空生成”不准确的答案。
- 增强长尾知识的处理能力:RAG可以将外部知识库的内容作为补充,避免生成模型只依赖其预训练知识,能处理一些罕见的、特定的查询。
- 灵活性:可以轻松更新和扩展外部知识库,随着时间变化,系统能够及时吸收新信息。
召回效果
RAG模型的召回效果通常依赖于以下几个因素:
-
检索引擎的效果:
- 检索部分的效果对于RAG非常关键,检索引擎能否准确找到相关文档或片段直接影响生成结果的质量。
- 使用基于嵌入(如FAISS、ElasticSearch)或更复杂的模型(如Dense Retriever)能够提高检索效果。
-
知识库的质量和覆盖范围:
- 如果知识库的信息非常丰富、全面且高质量,召回的效果通常会更好。
- 知识库更新频繁、准确性高,能确保生成模型得到足够的支持。
-
生成模型的上下文理解:
- RAG系统不仅仅是简单的“拼接”检索结果与查询,生成模型需要理解如何有效地将检索到的信息融入回答中。
- 良好的上下文理解可以避免生成无关或不完整的回答。
-
检索和生成的融合方式:
- 在某些实现中,检索的文档会在生成阶段作为上下文直接输入,模型通过这种方式生成基于外部知识的回答。
- 一些RAG变体会对多个检索结果进行加权或排序,进一步优化召回效果。
实际应用
RAG已经被广泛应用于各种场景,如:
- 搜索引擎:通过结合检索与生成,给出更加丰富和个性化的搜索结果。
- 问答系统:例如,基于维基百科的问答系统,可以利用RAG从大量文档中快速找到相关信息并生成答案。
- 对话系统:RAG增强的对话系统能在用户提问时调取实时的知识库,给出更加准确的回答。
Lora原理,微调哪些层、怎么矩阵初始化的,不能都初始化为0吗?
LoRA(Low-Rank Adaptation)的原理
LoRA 是一种高效的 参数高效微调(PEFT, Parameter-Efficient Fine-Tuning) 方法,主要用于大规模预训练语言模型(如 GPT、BERT 等)的微调,旨在减少参数更新量,提高微调效率,同时保持模型性能。
1. LoRA 的核心思想
在传统的 全参数微调 中,需要更新整个预训练模型的参数,导致计算成本和存储开销过大。而 LoRA 通过在 特定层 (通常是 Transformer 的 W_q
, W_v
层)添加一个 低秩适配(Low-Rank Adaptation) 模块,以 低秩矩阵分解 的方式学习任务特定的调整,使得:
- 预训练的原始参数 保持冻结,不会被修改。
- 额外引入的参数 具有低秩结构,只需少量参数就能有效适配任务。
这样,在微调过程中,只训练 AAA 和 BBB,而 W0W_0W0 依然保持冻结。
2. LoRA 微调哪些层?
LoRA 主要微调 Transformer 结构中的部分权重矩阵,尤其是 注意力机制中的投影层(即 Query, Value 层):
4. LoRA 的优势
- 节省参数:只需训练 AAA 和 BBB 两个小矩阵,而不是整个 WWW。
- 减少计算开销:相比全参数微调,LoRA 的训练和存储需求更低。
- 适用于大模型:如 GPT-4、LLaMA、BERT 等大规模 Transformer,能够高效适配任务,而无需更新全部权重。
5. 结论
- LoRA 利用低秩矩阵近似调整权重,提高微调效率。
- 主要优化 Transformer 的注意力层(Wq,WvW_q, W_vWq,Wv)。
- 初始化策略:
- AAA 随机初始化(确保梯度传播)
- BBB 初始化为零(防止初始扰动)
- 通过 LoRA,可以在 大模型上高效微调,无需存储多个完整的模型权重,非常适用于 低资源环境 和 大模型适配任务。
bert了解吗?bert的改进了解吗?bert和gpt有什么区别?
1. BERT(Bidirectional Encoder Representations from Transformers)
BERT 是 Google 在 2018 年发布的一种 基于 Transformer 的预训练语言模型,专门用于 NLP 任务。其核心特点是:
- 双向(Bidirectional)建模:BERT 在训练过程中同时考虑了 左侧和右侧的上下文信息,不同于单向语言模型(如 GPT)。
- 使用 Masked Language Model(MLM):BERT 采用 掩码语言模型(Masked LM),随机屏蔽(Mask)输入文本中的某些词,并让模型预测被屏蔽的词。
- 下一句预测任务(NSP, Next Sentence Prediction):BERT 通过预测两句话是否是连续的来学习句子级别的关系。
- 深度 Transformer Encoder 结构:BERT 仅使用 Transformer 的 Encoder 部分进行文本理解。
BERT 的关键应用
BERT 是 一个通用的语言理解模型,可以用于:
- 文本分类(情感分析、垃圾邮件检测)
- 问答系统(SQuAD 数据集)
- 命名实体识别(NER)
- 语义匹配(文本相似度计算)
2. BERT 的改进版本
BERT 之后,出现了很多改进模型,主要针对 效率、任务适应性 和 训练方法 进行优化:
(1) RoBERTa(Robustly Optimized BERT Pretraining)
- 去掉 NSP(下一句预测)任务,改进了预训练方式,使得效果更好。
- 使用更大的数据集和更长的训练时间。
- 动态 Masking:在不同时期动态屏蔽不同的单词,而不是固定的屏蔽。
(2) ALBERT(A Lite BERT)
- 参数共享:减少 Transformer 层之间的参数冗余,提升训练和推理效率。
- 因子分解嵌入:减少词嵌入参数量,使得大规模训练更加轻量化。
- 替换 NSP 为 SOP(Sentence Order Prediction):改为预测两个句子的顺序,提高语义建模能力。
(3) DistilBERT
- 模型蒸馏(Knowledge Distillation):用小模型学习大 BERT 的知识,减少 40% 参数量,但仍能保留 97% 的性能。
-
适用于 移动端、嵌入式设备 等需要轻量化推理的场景。
(4) ELECTRA
- 使用替换词检测(Replaced Token Detection, RTD)代替 Masked LM:
- 训练时,不是屏蔽单词,而是用一个小型生成模型 替换 句子中的某些单词。
- 让 BERT 学习区分哪个单词是 原始的,哪个是 被替换的,从而提高效率。
- 相比 BERT,ELECTRA 训练更高效,效果更好,但计算成本低。
3. BERT vs. GPT:核心区别
虽然 BERT 和 GPT 都是基于 Transformer 的模型,但它们有几个关键的不同点:
(1) 预训练方式不同
- BERT:基于 MLM(Masked LM),在预训练阶段随机屏蔽词汇,让模型预测被屏蔽的词,这样它可以学到 双向语境信息。
- GPT:基于 自回归(Auto-Regressive) 方式,每次从 左到右 逐步生成下一个词,因此无法同时看到前后文。
(2) 适用任务不同
- BERT 更适合 NLP 理解任务(如文本分类、问答、NER),因为它能同时看到上下文信息,语义建模更强。
- GPT 更适合生成任务(如文本创作、对话、代码生成),因为它是 自回归 方式,能够依次预测下一个单词。
(3) 结构不同
- BERT 只用 Transformer Encoder,擅长文本理解。
- GPT 只用 Transformer Decoder,擅长文本生成。
4. 什么时候用 BERT,什么时候用 GPT?
5. 总结
- BERT = 用于理解任务,采用双向 Encoder,Masked LM 训练方式。
- GPT = 用于生成任务,采用单向 Decoder,自回归训练方式。
- BERT 适合分类、问答、NER,GPT 适合对话、文本创作。
- BERT 的改进版本(RoBERTa、ALBERT、DistilBERT、ELECTRA)针对效率、效果和训练方式做了优化。
transformer自注意力,计算过程,softmax为什么要进行缩放,不缩放会导致什么?
1. Transformer 自注意力(Self-Attention)计算过程
在 Transformer 中,自注意力(Self-Attention)用于计算序列中各个单词对其他单词的影响力,核心计算步骤如下:
(1) 输入嵌入
2. 为什么 softmax 需要进行缩放?
llm的解码参数(top-k,top-p,Temperature,Beam Search)
在大语言模型(LLM)生成文本时,解码策略和参数对输出质量、连贯性和多样性有重要影响。主要的解码参数包括 Top-K、Top-P(Nucleus Sampling)、Temperature、Beam Search,下面详细介绍它们的原理和作用。
1. Temperature(温度参数)
作用:控制生成文本的 随机性 和 确定性。
公式:
影响:
- 高温度(T > 1):
- 平滑概率分布,使得低概率词的选择可能性提高
- 生成结果更加随机、多样
- 适用于 创意写作、诗歌、开放对话
- 低温度(T < 1):
- 使得高概率词更加突出,降低随机性
- 生成结果更确定、更符合训练数据
- 适用于 代码生成、严谨回答
- T → 0:会变成贪心搜索(总是选择概率最高的词)
应用建议:
- 聊天机器人(自由对话):T=0.7−1.0T = 0.7 - 1.0T=0.7−1.0
- 创意写作(诗歌、小说):T=1.2−1.5T = 1.2 - 1.5T=1.2−1.5
- 代码生成、数学推理:T=0.2−0.5T = 0.2 - 0.5T=0.2−0.5
2. Top-K 采样(截断采样)
作用:限制每次采样时只考虑前 K 个最高概率的词,减少低概率词的影响,提高连贯性。
步骤:
- 计算所有词的概率 P(w)P(w)P(w)
- 选出前 K 个概率最高的词
- 在这 K 个词 里按概率重新归一化并进行采样
✅ 影响:
- K 较大(如 K=100):多样性增加,但可能生成低质量内容
- K 较小(如 K=5):文本更加确定,但可能变得机械重复
- 极端情况:
- K=1K=1K=1 变成贪心搜索(每次都选概率最高的词)
- K=VK=VK=V(所有词都参与)相当于普通 softmax 采样
✅ 应用建议:
- 开放式对话:K=40−100K = 40-100K=40−100
- 代码生成:K=10−20K = 10-20K=10−20
- 事实性问答:K=5−20K = 5-20K=5−20
3. Top-P(Nucleus Sampling,核采样)
作用:不像 Top-K 直接截断,而是选择累计概率超过 P 的最小词集合,保证采样的动态性。
步骤:
Top-P vs. Top-K
- Top-K 适用于固定词集,不管概率分布是否陡峭
- Top-P 适用于动态调整,可以更灵活应对不同概率分布情况
- 通常两者结合使用(Top-K + Top-P),以兼顾稳定性和多样性
4. Beam Search(束搜索)
作用:通过保留多个候选路径来提高文本的连贯性和质量。
步骤:
- 在每一步选择 前 B(Beam Size)个最优的词 进行扩展
- 继续对每个候选扩展路径选择 前 B 个最优 直到生成结束
- 最终选择整体得分最高的路径
✅ 影响:
- B 较大(如 10-20):生成结果更精确,但计算量大
- B 较小(如 2-5):减少计算量,但可能错失更优解
- 适用于 翻译、摘要 等对可读性、精确性要求高的任务
✅ 应用建议:
- 机器翻译(避免丢失关键信息):B=5−10B = 5 - 10B=5−10
- 摘要生成(更连贯):B=3−5B = 3 - 5B=3−5
- 对话模型一般不用,因为会导致生成文本单一、重复
💡 Beam Search vs. 采样(Top-K/Top-P)
- Beam Search 适用于有明确目标的任务(翻译、摘要)
- Top-K / Top-P 适用于需要多样性的任务(对话、创意写作)
7. 总结
- 控制随机性:
- 低 Temperature、Top-K 小、Top-P 小 → 更确定性
- 高 Temperature、Top-K 大、Top-P 大 → 更自由
- 选择解码方式:
- Top-K + Top-P:适用于大部分任务(对话、文本生成)
- Beam Search:适用于需要高精度的任务(翻译、摘要)
- Temperature 控制整体自由度,常与 Top-K / Top-P 结合使用
clip的对比学习,对比学习中的Temperature和llm解码器的Temperature是一个东西吗?
CLIP 的对比学习中的 Temperature(温度超参数) 和 LLM 解码器中的 Temperature(温度采样),虽然都叫 Temperature,但在原理和作用上是不同的。
1. CLIP 对比学习中的 Temperature
CLIP(Contrastive Language-Image Pretraining)使用 对比学习(Contrastive Learning) 来学习文本和图像的匹配关系。在对比损失(Contrastive Loss)中,Temperature 控制 logits 的缩放,影响正负样本的区分程度。
- 影响训练稳定性:
- T 太低:梯度消失,学习困难
- T 太高:模型难以学习有区分度的特征
✅ 总结: 在 CLIP 的对比学习中,Temperature 主要用于 控制相似度 logits 的缩放,影响模型对正负样本的区分能力。
2. LLM 解码器中的 Temperature
在 LLM(大语言模型)生成文本时,Temperature 影响 Softmax 采样分布的随机性。
(1) 解码过程
-
假设 LLM 预测下一个单词的概率分布:
✅ 总结: LLM 的 Temperature 控制 Softmax 采样的随机性,影响生成文本的多样性。
3. CLIP vs. LLM 的 Temperature 对比
✅ 核心区别:
- CLIP 的 Temperature 用于训练,影响对比学习的相似度分布
- LLM 的 Temperature 用于推理,影响生成的确定性和多样性
- CLIP 的 Temperature 影响 logits 缩放,而 LLM 的 Temperature 影响 Softmax 采样
所以,它们原理不同,但数学形式相似。
4. 直观理解
- CLIP 的 Temperature 类似于调整 "眼睛的敏锐度":
- 低 T:对比度高,模型更容易区分正负样本
- 高 T:对比度低,样本相似度分布更均匀
- LLM 的 Temperature 类似于调整 "大脑的随机性":
- 低 T:保守、逻辑性强
- 高 T:更有创造力、更随机
5. 结论
CLIP 和 LLM 的 Temperature 数学上都是用来缩放 logits,但作用完全不同:
- CLIP:用于训练,调整正负样本区分程度
- LLM:用于推理,调整文本生成的随机性
如果你想更深入了解,可以讨论:
- CLIP 训练中的对比学习损失
- LLM 采样策略(Top-K, Top-P)如何和 Temperature 结合使用
强化学习,ppo,dpo
强化学习(Reinforcement Learning, RL)在大语言模型(LLM)训练中的应用主要体现在 PPO(Proximal Policy Optimization,近端策略优化) 和 DPO(Direct Preference Optimization,直接偏好优化)。这两种方法都用于对齐(alignment) 模型,使其生成更符合人类偏好的文本。
1. 强化学习基础
强化学习涉及智能体(Agent) 在 环境(Environment) 中通过 动作(Action) 与 奖励(Reward) 进行交互,以学习最优策略 π(a∣s)。
对于大语言模型,强化学习的目标是优化文本生成,使其更符合人类偏好。
- 状态(State, sss):当前输入的上下文
- 动作(Action, aaa):模型生成的下一个 token 或句子
- 奖励(Reward, rrr):文本的质量或对齐程度(通常由人类或奖励模型提供)
- 策略(Policy, π(a∣s)):模型生成文本的概率分布
- 目标:最大化期望奖励 E[R]
强化学习的方法有很多,如 策略梯度(Policy Gradient)、Actor-Critic、PPO、DPO,其中 PPO 和 DPO 是 LLM 训练中最常用的优化方法。
2. PPO(Proximal Policy Optimization,近端策略优化)
PPO 是 OpenAI 提出的强化学习算法,用于优化策略,使得更新时避免过大的梯度变化,保持策略稳定性。它在 ChatGPT 和 InstructGPT 的 RLHF(人类反馈强化学习)中起到了核心作用。
(1) PPO 在 LLM 训练中的应用
在 LLM 训练中,PPO 主要用于 RLHF(Reinforcement Learning with Human Feedback) 阶段:
-
训练监督微调(SFT)模型:
- 让模型学习基础任务,如对话、代码生成等。
-
训练奖励模型(Reward Model, RM):
- 让人类对多个模型生成的答案进行排序,训练一个奖励模型来预测文本质量。
-
使用 PPO 进行强化学习(RLHF):
- 让 LLM 生成多个候选文本,并用奖励模型打分。
- 使用 PPO 让模型朝着高奖励的方向调整,避免过大的策略变化。
(2) PPO 公式
PPO 通过 截断策略比率(Clipped Policy Ratio) 让策略更新更加稳定:
(3) PPO 的作用
✅ 稳定训练:防止策略变化过大,保持模型稳定性
✅ 高效优化:比传统策略梯度方法(如 REINFORCE)收敛更快
✅ 适用于 LLM:PPO 适用于大规模模型训练,如 ChatGPT、Bard
(4) PPO 存在的问题
❌ 训练复杂:PPO 需要额外训练奖励模型,训练流程较长
❌ 奖励模型可能有偏差:如果奖励模型偏好某种风格,PPO 可能会过拟合这种风格
❌ 优化不直接:PPO 通过间接优化奖励函数,可能会导致一些不稳定行为(如模式塌陷)
3. DPO(Direct Preference Optimization,直接偏好优化)
DPO 是一种不依赖奖励模型的优化方法,可以视为 PPO 的改进版。它通过直接优化人类偏好数据,提高模型的生成质量。
(1) DPO 的核心思想
✅ DPO 的优点:
- 不需要额外的奖励模型
- 训练更加稳定
- 直接优化人类偏好
✅ DPO 的缺点:
- 对训练数据质量要求更高
- 不适用于奖励无法用偏好数据表达的情况
reward模型的损失函数(rank loss)?
Reward 模型的损失函数:Rank Loss(排序损失)
在 RLHF(Reinforcement Learning with Human Feedback) 训练过程中,Reward Model(奖励模型)用于给 LLM 生成的文本评分,以指导强化学习优化(如 PPO)。为了训练 Reward Model,通常使用 Rank Loss(排序损失) 来优化模型,使其学会人类偏好的排序关系。
1. Rank Loss(排序损失)原理
(1) Reward Model 目标
(2) 采用 Pairwise Ranking Loss(对比损失)
Reward Model 使用 对比损失(Pairwise Rank Loss) 来优化模型,使其预测的奖励分数符合人类偏好:
2. Rank Loss 在 RLHF 训练中的作用
Reward Model 的 Rank Loss 训练完成后,分数 R(x)R(x) 可用于强化学习:
- RLHF(如 PPO) 会用 Reward Model 评分 LLM 生成的文本,并优化策略
- Reward Model 分数越高的文本会被 PPO 强化,低分文本会被抑制
Rank Loss 只优化 Reward Model 本身,不直接影响 LLM 生成,但它决定了强化学习训练的方向。
5. 结论
✅ Rank Loss 是训练 Reward Model 的核心目标,确保它学会人类偏好排序
✅ PPO 依赖 Reward Model 进行强化学习,影响 LLM 生成的文本质量
✅ Rank Loss 只优化 Reward Model 本身,不直接影响 LLM 生成