资讯动态

自然语言处理与大模型期末复习指南:从NLP基础到RAG实战

发布时间:2026/10/20 7:18:29 来源:尧图企业网站定制
每到期末季某高校2025秋的《自然语言处理基础与大模型》这门课讨论热度总是居高不下。这门课严格来说分两大块前半段是经典NLP基础后半段是大模型相关技术。期末考核既有卷面理论题也有动手实操项目很多同学到了最后两周才开始着急。这篇文章我按课程的实际情况把复习思路、核心考点、项目实操和踩坑经验都整理出来希望能帮还在硬啃资料的同学少走点弯路。先说明一下背景这门课的考核一般由笔试和课程项目构成笔试占比约40%-60%项目占比约40%-60%不同学期会有浮动。笔试以简答和计算推导为主项目则要求完成一个可运行的大模型应用系统。也就是说光会背概念不行必须真的训练或调用过模型得对数据、参数、评测都有体感。下面我按复习阶段、考点拆解、项目流程和常见坑四个部分展开内容都是基于我们这学期上课和期末实战总结的工程细节比较多。1. 课程全景从NLP基础到大模型的复习地图1.1 这门课到底考什么很多同学第一反应是“背背Transformer结构记一下attention公式再了解下ChatGPT的发展就完了”但实际期末并没有这么简单。从往届题目和本学期平时的练习来看笔试内容包括三个层次第一层是基础理论。比如n-gram语言模型、词向量Word2Vec、GloVe、RNN与LSTM的公式推导、注意力机制与Transformer的Encoder-Decoder结构。这些内容是必考的占了大概四成分数。尤其是手动计算attention score、推导LSTM的梯度传播这类题如果平时只看PPT不做推导考试时基本会卡住。第二层是预训练模型与大模型机制。重点包括BERT的预训练任务MLM、NSP、GPT的生成式预训练、指令微调Instruction Tuning、RLHF流程、LoRA与PEFT参数高效微调、RAG检索增强生成、上下文窗口与幻觉问题。这部分以概念解释、流程分析和对比题为主。第三层是应用与设计题。会让你设计一个解决真实场景任务的系统比如“给非技术用户做一个文档问答机器人”“给法律文书做摘要与关键词抽取”要求说明模型选型、数据集来源、评测方法、部署方案。这种题考的不是背功而是对整个pipeline有没有通盘理解也是期末项目答辩时老师最喜欢追问的方向。1.2 复习资源怎么排优先级如果你的时间是两周我强烈建议按“PPT 作业 实验代码 代表性论文”来分配。第一优先级是课程PPT和平时作业。老师PPT里反复强调的公式、经典图、对比表格大概率会原模原样出现在考试中。平时作业的计算题比如sigmoid梯度、softmax求导、cross-entropy loss的反向传播务必自己完整推一遍。第二优先级是实验代码。该课程一般会有两到三次实验比如用HuggingFace训练一个文本分类模型用transformers加载大模型做生成式问答。这些代码里的参数、数据预处理方式、训练循环、评测指标都是期末项目的基础模板不要只跑通就删掉要能讲清每一处关键代码的作用。第三优先级是经典论文和综述。不建议从原文逐字啃重点看Transformer的QKV计算、BERT的预训练任务、GPT的decoder-only结构、LoRA的原理、RAG的三段式流程、RLHF的奖励模型与PPO。论文里的图比文字更重要读完要能自己画出来。另外有一个很多人忽略的点工具链的熟悉程度。考试前我会建议把所有实验代码在本地跑一遍确认环境没坏、能稳定复现结果。因为期末项目答辩时老师如果让你现场运行一个demo或改个参数你连环境都起不来印象分就会很糟糕。2. 核心考点拆解从词向量到大模型的安全得分点2.1 NLP基础部分必须拿分的五个概念词向量与分布式表示。考点集中在Word2Vec的两种训练方式CBOW和Skip-gram。考试常问“为什么用负采样”“高频词为什么要降采样”“词向量做加法为什么能近似类比语义关系”。复习时把Word2Vec的损失函数写一遍特别是logistic回归形式的负采样目标函数就不慌了。n-gram语言模型与困惑度。要会计算给定语料的bigram概率也要求写出困惑度Perplexity公式。注意一个细节PPL是对句子概率取几何平均后的倒数所以PPL越低越好。考试可能给一个小语料让你算一个简单句子的PPL这种题就是送分题千万不要因为公式记混丢分。RNN与LSTM。常考LSTM的三个门输入门、遗忘门、输出门公式以及如何缓解梯度消失。面试和考试都喜欢问“为什么LSTM能解决长依赖”答案是细胞状态cell state上的加性更新让梯度可以跨时间步传递。如果题目给了一个带数值的单元状态让你手算一次更新只要照着公式带数字就能算出来。Attention与Transformer。这是重中之重。不仅要把scale dot-product attention公式写出来还要能解释为什么除以根号d_k。考试常考两种题一是计算题给定Q、K、V矩阵手动算attention输出二是简答题解释Transformer相比RNN的优势比如并行计算、长距离依赖捕捉更好。序列标注任务。包括分词、词性标注、命名实体识别NER。考点是CRF的条件概率公式、维特比算法的思想、BIO标注方案。现在很多任务已经不需要手写CRF但原理题仍可能出现比如“为什么在序列标注中softmax独立分类效果不如CRF”答案是标签之间的转移依赖。2.2 大模型部分的高频考点BERT与GPT的本质区别。一句话概括BERT是encoder-only用双向上下文做理解任务GPT是decoder-only用单向上下文做生成任务。考试可能会扩展到“为什么GPT可以统一多种任务”。复习时建议画一张图把预训练目标和下游任务适配方式对比。指令微调与上下文学习。需要理解Instruction Tuning本质上是把各个任务的输入输出格式统一成自然语言指令让模型学会“听指令”。上下文学习In-Context Learning则是不改参数通过给few-shot例子让模型完成新任务。笔试简答题里很容易混淆“微调”和“提示工程”的区别记住一个关键点微调会更新模型权重提示工程不会。RLHF的三阶段流程。阶段一是监督微调SFT阶段二是用人类偏好数据训练奖励模型Reward Model阶段三是用强化学习PPO优化策略模型。考试喜欢让你画出流程图并说明每一阶段的数据格式和损失函数。复习时把三阶段的名字和核心损失函数比如奖励模型的ranking loss、PPO的ratio与clip操作梳理清楚。LoRA与参数高效微调。LoRA核心思想是冻结预训练权重在矩阵乘法路径旁插入低秩矩阵。需要掌握低秩矩阵维度r的设定、最终权重更新公式 (W W BA)以及为什么LoRA能降低显存消耗。今年期末项目里很多同学选择用LoRA微调答辩时老师基本都会追问这几个细节。RAG检索增强生成。包括索引构建文档切分、embedding、向量库、检索相似度计算、生成把检索结果拼进Prompt。高频考点是“RAG能解决幻觉问题的哪些方面”以及如何设计一个RAG系统。别忘了提到chunk size对检索质量的影响这属于踩过坑才有体感的细节。2.3 相似概念的易混点对比对比项核心区别期末答题要点Word2Vec vs GloVeWord2Vec用局部上下文窗口GloVe利用全局共现统计提到全局统计信息即可BERT vs GPTencoder双向 vs decoder单向影响预训练任务和下游适应方式SFT vs RLHFSFT模仿人类回答RLHF通过奖励优化偏好RLHF包含奖励模型与PPO全量微调 vs LoRA是否更新全部参数、显存成本LoRA用低秩矩阵减少可训练参数RAG vs 微调RAG改输入上下文微调改模型权重解决知识更新的角度不同传统CRF vs 深度学习序列标注显式建模标签转移 vs 基于上下文特征CRF可以约束标签合法性这张表建议考前自己默写一遍考试时遇到“比较题”直接按照“定义、结构、训练方式、适用场景”四要素展开分数不会低。3. 期末实操项目从零完成一个基于大模型的问答系统3.1 选题与数据准备期末项目要求一般很开放往届常见选题包括文本分类助手、FAQ问答机器人、文档摘要工具、情感分析、命名实体识别demo。但今年明显偏向大模型应用即要求调用或微调一个大模型完成任务。我的建议是选一个“数据容易获取且评测相对客观”的题目不要一上来就做多轮开放对话因为主观性太强答辩容易翻车。我当时选的题目是“某知识库问答系统”给一堆课程讲义txt让模型回答“哪些概念在文档里被提及”并要求给出依据。这样既用到了RAG流程又能通过检索命中率客观打分。前期数据准备做了一个小工具把PDF、docx统一转成txt再按段落切分。切分时一开始没经验直接按字符长度切结果把表格和标题切成两半检索效果很差。后来改用结构感知切分PDF解析后用“章节标题 段落”为单位每个chunk控制在300~500字前后重叠50~100字。这样检索到的片段语义完整生成的引用也能对得上原文。数据清洗时要注意编码问题很多导出的txt是GBK编码代码里统一用utf-8读取并忽略无效字符。3.2 模型选型与显存估算大模型选择上有两条路线本地微调路线和API调用路线。本地微调适合学校提供的计算资源充足的情况四条A卡能跑起来API调用则适合快速做demo但答辩证时如果老师问“数据去哪里了”“隐私怎么保障”你得有预案。选型时可以按参数量划分7B量级模型是单卡可微调的甜点13B量级需要多卡或量化70B及以上一般只能做推理。我用的某个7B模型在单张消费级卡上做LoRA微调显存占用大约12-15GB左右勉强能跑。如果只用推理不微调7B模型在8GB显存下也可以通过4-bit量化运行速度会慢一些。显存估算公式我直接给你模型显存约为参数量 × 每个参数的字节数。比如7B参数全精度FP16为7e9×2字节14GB再加上优化器状态、梯度、激活值全量微调至少需要40GB以上所以一般选LoRA。LoRA的显存需求大约是加载基础模型14GB 可训练低秩矩阵和优化器状态1~2GB 激活值若干所以16GB单卡基本可行。3.3 微调与推理的关键代码这里给一个基于HuggingFace的LoRA微调代码框架是我改完能直接跑的版本。from datasets import load_dataset from transformers import ( AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForLanguageModeling ) from peft import LoraConfig, get_peft_model, TaskType model_path your-base-model tokenizer AutoTokenizer.from_pretrained(model_path) tokenizer.pad_token tokenizer.eos_token model AutoModelForCausalLM.from_pretrained( model_path, torch_dtypeauto, device_mapauto ) lora_config LoraConfig( task_typeTaskType.CAUSAL_LM, r8, lora_alpha32, lora_dropout0.05, target_modules[q_proj, v_proj, k_proj, o_proj], ) peft_model get_peft_model(model, lora_config) peft_model.print_trainable_parameters() def tokenize_function(examples): outputs tokenizer( examples[text], truncationTrue, max_length1024 ) outputs[labels] outputs[input_ids] return outputs dataset load_dataset(json, data_filestrain.jsonl)[train] tokenized_dataset dataset.map(tokenize_function, batchedTrue) training_args TrainingArguments( output_dir./lora-qa, per_device_train_batch_size2, gradient_accumulation_steps4, learning_rate2e-4, num_train_epochs3, fp16True, logging_steps10, save_steps500, ) trainer Trainer( modelpeft_model, argstraining_args, train_datasettokenized_dataset, data_collatorDataCollatorForLanguageModeling(tokenizertokenizer, mlmFalse), ) trainer.train()几个容易出错的地方一是数据集格式最好每行是一个JSON对象包含一个text字段内容用“指令回答”拼好二是labels一定要设置否则因果语言模型损失算不了三是如果显存紧张把per_device_train_batch_size降到1然后调大gradient_accumulation_steps效果等同于扩大batch size。推理阶段可以用现成的AutoModelForCausalLM加载微调后的checkpoint再写一个generate函数。注意max_new_tokens别设太小否则生成到一半就截断temperature在问答场景建议设为0.1~0.3太高模型容易自由发挥。3.4 评测指标怎么设计才有说服力期末项目答辩最怕的就是老师说“你的系统到底好不好”。如果你只说“看起来还不错”基本等于送命。建议按任务类型准备两个维度的指标。对于检索部分用命中率Recallk和MRR。我当时的做法是构造50对“问题-正确文档片段”然后检索排名前50的结果里能出现正确片段的比例。RAG系统里召回率比精确率更重要因为生成模型可以容忍一些噪声但不能漏掉关键信息。对于生成回答用ROUGE和BERTScore对比标准答案。因为问答是抽取式的ROUGE-L会比较合适。注意指标只能说明相关性还要人工抽查10-20个回答检查是否包含幻觉内容比如“回答里提到文档不存在的日期或结论”。在答辩PPT里我放了一个表格横向对比三种方法纯模型生成、RAG检索模型生成、微调RAG结合结果很明显最后一种在ROUGE-L和人工打分上高出一截。这种对比数据能让答辩更有底气。4. 常见问题与避坑实录4.1 训练Loss不下降怎么办这是期末项目问得最多的问题。我遇到过的原因有三个数据格式错误。模型输入全是同一个模板模型学会输出模板但学不到内容loss虽然降了生成结果却全是模板。解决方法是检查数据里的输入输出是否真的一致尤其是标点符号和换行符。学习率太大或太小。LoRA常用的学习率在1e-4到3e-4之间。如果loss一上来就是nan多半是学习率太大或fp16精度溢出把learning_rate下调到1e-5再试。tokenizer特殊符号处理错误。比如忘了设置pad_token或者数据的填入方式不一致导致模型在padding位上也计算loss。我后面把非input_ids的位置在labels中设为-100loss才正常。4.2 模型输出了正确的事实但引用位置错误RAG系统有个经典问题检索回来的chunk是对的但生成的回答里标了错误的来源编号。这是因为模型在生成时自己编了引用格式并没有真正“对齐”到检索片段。打通方案是限制prompt让模型只能输出“根据片段1xxx”这样的格式如果片段里没有答案就直接说“文档未提及”。再不行就做一个后处理规则回答中提到片段编号时检查对应片段是否真的包含该内容不包含就把引用替换成“未知来源”。另外注意chunk切分会直接影响引用正确性。如果切分太碎一个完整的定义被切成两半模型引用了后半段但前半段的内容没出现老师一翻原文就觉得你的系统不严谨。解决办法是保留段落边界并对重复内容做去重。4.3 计算资源不够时的替代方案很多组到最后才说“我们只有一张卡微调跑不动”。如果你也遇到这个情况优先做三件事第一量化加载。用load_in_4bitTrue配合bitsandbytes把基础模型压到4-bit再在上面做LoRA。这样7B模型加载占4GB左右单卡16GB仍可训练。第二缩小训练数据规模。不需要整个数据集都进训练可以把精选后的500~1000条高质量数据拿来微调效果未必比几千条差。数据质量比数量重要这是大模型可塑性强的特点。第三放弃微调改为纯RAG Prompt优化。大部分期末任务是知识问答、摘要、分类只要检索够好一个7B模型的zero-shot能力就已经能拿到不错的分数。微调属于锦上添花别本末倒置。4.4 期末答辩容易被追问的三个问题答辩老师很喜欢围绕“泛化性”和“工程细节”提问比如“你的方法换一批数据还能用吗” 回答思路说明数据预处理模块和模型训练模块是解耦的新增数据只需走到同一个pipeline不需要改代码。“为什么选择这个模型而不是更大的模型” 回答思路结合显存、推理速度、任务需求说。不要只说资源不够最好说“经过对比该7B模型在任务准确率上已达到13B模型的95%以上但推理速度提高2倍”。“你的系统有没有失败案例” 这里千万别答“没有”。老师会认为你根本没做测试。老实说“在对多文档片段进行聚合回答时存在信息冲突我们的策略是优先采用时间更新或用户指定权重”反而能展示你考虑得全面。5. 考前速记与个人体会到了考前最后一天不要再去啃LoRA的论文或RLHF的数学细节了。把以下几项过一遍Transformer架构图画一遍每个子层和维度标清楚BERT和GPT的预训练目标用一句话说出区别RAG的三段式流程能默写LoRA的更新公式能写出来。这些都是高频考点也是期末项目里实际操作的内容趁临考前做到“指哪打哪”。我个人这一学期下来最深的感触是这门课如果说有秘诀那就是尽早把实验环境搭好并让代码模板跑通。哪怕你后面换任务、换模型只要有一个可靠的工程基座剩下的都是改数据和改参数而已。很多同学期末熬夜并不是因为复习任务重而是前期实验环境没搞定最后才发现连模型都加载不了。最后再分享一个小技巧答辩前把项目的README写好里面包含环境版本、运行命令、数据格式、评测脚本。老师如果觉得你的项目不错会想自己跑一跑一个清晰的README往往让印象分直接拉满。期末成绩不是靠突击背出来的而是靠平时把每一步做扎实考试和答辩自然水到渠成。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑