百度 大模型开发 一面

1、自我介绍

2、项目介绍

3、介绍 NLP 中数据增强方式

NLP 中常见的数据增强方式主要有同义词替换、随机插入、随机删除、随机交换、回译、模板扩写、噪声注入、对抗样本增强和基于大模型的数据改写。同义词替换是把句子中的部分词替换成语义相近的词;随机插入和删除适合做轻量扰动;随机交换适合增强模型对局部顺序变化的鲁棒性;回译是把句子翻译成另一种语言再翻回来,能够保留大意但改变表述;模板扩写适合分类和信息抽取任务;噪声注入比如加入错别字、空格、标点变化,适合提升鲁棒性;对抗样本增强更偏训练阶段优化;现在更常见的是让大模型做改写、扩写、同义表达生成。

数据增强不能只追求数量,更重要的是标签一致性和语义不偏移。比如情感分类里,同义改写后情感标签不能变;命名实体识别里,增强不能破坏实体边界;问答任务里,问题改写后答案仍然要对应原文。

一个简单的同义词替换示例如下:

import random

def synonym_replace(text, synonym_dict, replace_prob=0.3):
    words = text.split()
    new_words = []
    for w in words:
        if w in synonym_dict and random.random() < replace_prob:
            new_words.append(random.choice(synonym_dict[w]))
        else:
            new_words.append(w)
    return "".join(new_words)

synonym_dict = {
    "喜欢": ["喜爱", "热爱"],
    "学习": ["研究", "钻研"]
}

text = "我喜欢学习大模型"
print(synonym_replace(text, synonym_dict))

4、大模型如何进行预训练,如何进行微调

大模型预训练本质上是在海量无监督文本上做自监督学习,让模型学到语言规律、知识表示和上下文建模能力。对于 decoder-only 架构,最常见的目标是 next token prediction,也就是给定前面的 token,预测下一个 token。训练时会把大规模语料分词后送入模型,通过自注意力机制建模上下文,再用交叉熵损失优化预测结果。

预训练阶段的数据规模通常非常大,可能是百亿、千亿甚至更高数量级 token。预训练完成后,模型具备通用语言能力,但不一定适合具体任务,所以需要微调。

微调一般分为监督微调和参数高效微调。监督微调就是用指令数据、问答数据、任务数据让模型学会按要求输出;参数高效微调典型方法是 LoRA、QLoRA,只更新少量参数,不更新全部模型权重,这样显存和训练成本更低。如果是业务场景,通常流程是先做 SFT,再结合具体需求做偏好对齐或者规则约束。

训练里常见参数包括 learning rate、batch size、epoch、warmup ratio、max length。学习率通常比预训练阶段低,SFT 常见在 (1e^{-5}) 到 (5e^{-5}) 之间;epoch 通常 2 到 5 轮;batch size 取决于显存;长文本任务还要注意 sequence length 和梯度累积。

5、什么是 RAG

RAG 是 Retrieval-Augmented Generation,也就是检索增强生成。它的核心思想是:先从外部知识库检索相关内容,再把检索结果和用户问题一起输入给大模型,让模型基于检索到的证据生成答案。

RAG 的主要优势有三个。第一,不需要频繁重新训练模型就能更新知识;第二,可以接入企业私有数据;第三,可以减少模型幻觉,提高答案可追溯性。一个完整的 RAG 流程通常包括文档解析、文本切分、向量化、索引构建、召回、重排、Prompt 组织和生成。

常见问题主要出现在三处。第一是 chunk 切分不合理,导致信息断裂或者召回噪声太大;第二是 embedding 模型不匹配,导致召回结果不准;第三是生成阶段约束不够,模型脱离检索内容自由发挥。

一个简化版 RAG 流程代码如下:

documents = [
    "机票报销需要行程单和发票",
    "酒店报销需要发票和入住明细",
    "火车票可以直接作为报销凭证"
]

def retrieve(query, docs):
    result = []
    for doc in docs:
        score = sum(1 for word in query if word in doc)
        result.append((score, doc))
    result.sort(reverse=True)
    return [x[1] for x in result[:2]]

query = "机票报销需要什么材料"
top_docs = retrieve(query, documents)
prompt = f"问题:{query}\n参考资料:{top_docs}\n请基于参考资料回答。"
print(prompt)

6、LoRA 和 QLoRA 是什么

LoRA 是一种参数高效微调方法。它的核心思想不是直接更新原始大模型的完整权重矩阵,而是在某些线性层旁边增加两个低秩矩阵 (A) 和 (B),把权重更新写成低秩分解形式:

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务